Arquitetura do app
A arquitetura do app irá evoluir com o tempo, atualmente estamos na arquitetura alpha. A arquitetura alpha é a primeira versão da arquitetura do app, que é composta por um microserviço chamado core-api e um frontend feito em flutter.
Segue abaixo um desenho da arquitetura do app:
Atualizado em 25/07/2024.
Para editar, acesse: https://drive.google.com/file/d/1ieX0B1S36bMpQ11rbw0mG5qU8U4evbT7/view?usp=sharing
Conforme pode-se observar no diagrama, o app é composto pelas seguintes partes:
Usuários
Nosso app é utilizado por um unico perfil de usuário: usuário padrão. Esse usuário, pode utilizar o app como uma página web (recursos hospedados no firebase hosting), ou como um app mobile (android ou ios).
Frontend
O código frontend do app é executado no navegador do usuário ou como um app flutter nativo (android ou ios). Para trazer os dados dinâmicos para o frontend, o app faz chamadas para o microserviço core-api.
Backend
O backend atualmente é composto por um unico microserviço chamado core-api. O core-api é responsável por prover os dados para o frontend. O código do core-api está hospedado no google cloud run, sendo utilizado três tipos de configurações
core-api (pure-io)
Env NODE_TYPE=pure-io. Nessa configuração, o core-api deve responder as solicitações do app (frontend) de forma rápida, geralmente usando chamadas intencivas em termos de IO.
Nessa configuração, cada instância do google cloud run geralmente lida com 40 solicitações em paralelo.
core-api (worker-io)
Env NODE_TYPE=worker-io. Nessa configuração, o core-api geralmente lida com chamadas inciadas pelo google cloud tasks com objectivo de executar tarefas em background. Essas tarefas devem ser necessáriamente intensivas em IO, para tarefas que demandam muita cpu, deve-se utilizar a configuração core-api (worker-cpu).
Nessa configuração, cada instância do google cloud run geralmente lida com 40 solicitações em paralelo.
core-api (worker-cpu)
Env NODE_TYPE=worker-cpu. Nessa configuração, o core-api geralmente lida com chamadas inciadas pelo google cloud tasks com objectivo de executar tarefas em background. Essas tarefas devem ser necessáriamente intensivas em CPU.
Nessa configuração, por ser intenciva em termos de CPI, cada instância do google cloud run geralmente lida com 1 solicitação por vez.
Filas do google cloud tasks
O core-api utiliza filas do google cloud tasks (chamadas http) para executar tarefas em background. para saber mais sobre as filas, acesse a documentação do core-api.
Serviços de terceiros
- Sentry: serviço de monitoramento de erros;
- Better Stack: serviço de log;
- Twillio: Envio de SMS;
- Sendgrid: Envio de emails;
- Pluggy: Integração com bancos.