Home | Escopo | Processo | Design/Mockups | Configuração | Arquitetura | Gerência | Código | BD | Qualidade | Frontend | Backend | Analytics |
---|
Arquitetura
Descrição
Esta seção da documentação visa apresentar os padrões arquiteturais gerais do projeto, bem como a infraestrutura adotada.
Visando ao desenvolvimento de um aplicativo Mobile optamos por elegir o React Native como forma de criar um aplicativo para IOS e Android, consoante requisitado pelos stakeholders do projeto. A escolha baseou-se no fato de que não temos tempó suficiente para desenvolver dois aplicativos para as duas plataformas de maneira concomitante, tendo em vista que temos somente um semestre para o desenolvivmento e a curva de aprendizado para aprender tecnologias distintas para o front-end mobile é muito maior do que utilizar o React Native com Expo por exemplo.
Para o back-end optamos por NestJS e NodeJS e TypeScript como tecnologias de desenvolvimento de código, levando em consideração que o nosso front-end será também escrito em TypeScript e, logo, teremos mais facilidade no aprendizado de somente uma tecnologia para todo o desenvolvimento do projeto. Ademais, a curva de aprendizado e o custo de implementação de código têm a tendência de ser menor com a utilização destas tecnologias em relação à utilização de uma stack com Java e Spring Boot por exemplo.
Sumário
Arquitetura E2E
O projeto Pagges adota uma arquitetura baseada no padrão Model-View-Controller (MVC), promovendo a separação clara entre a camada de apresentação, lógica de negócio e persistência de dados.
🔧 Backend
A estrutura do backend foi construída utilizando o framework NestJS, com foco em modularidade e escalabilidade. A organização de pastas está dividida da seguinte forma:
Essa estrutura permite manter a responsabilidade de cada parte bem delimitada, com fácil manutenção e escalabilidade do sistema.
🧰 Tecnologias Utilizadas
📱 Frontend
O frontend foi desenvolvido utilizando Expo com React Native e segue uma organização baseada em responsabilidades, focada em componentes reutilizáveis, separação de lógica, interface e dados:
Essa estrutura favorece a manutenção e escalabilidade do projeto conforme novas funcionalidades são incorporadas.
🧰 Tecnologias Utilizadas
Arquitetura de Infraestrutura
Como podemos visualizar na figura supracitada iremos utilizar os serviços EC2 (t3.medium) e um repositório ECR para armazenar as imagens Docker do back-end.
Abaixo também podemos visualizar estimativa de custos criada na AWS Pricing Calculator
Pagges-Estimativa-Custo_AWS.pdf
A infraestrutura do projeto foi construída utilizando Docker para conteinerização dos serviços, AWS EC2 para hospedagem do backend e AWS ECR para versionamento e distribuição das imagens Docker.
🖥 ️ Serviços Utilizados
- AWS EC2: Instância configurada para rodar os containers Docker que executam o backend, banco de dados e testes automatizados.
- AWS ECR: Repositório de imagens Docker utilizado para armazenar e versionar builds da aplicação.
- Docker: Ferramenta de conteinerização utilizada para empacotar a aplicação backend e suas dependências.
🔁 Fluxo de Deploy
- Alterações na branch
main
disparam o pipeline do GitLab CI/CD. - O backend é empacotado em uma imagem Docker e enviado ao AWS ECR.
- A nova imagem é utilizada para atualizar o container rodando na instância AWS EC2.
📋 Boas práticas no desenvolvimento
O que são códigos de status HTTP?
Sempre que uma requisição é feita a um servidor web, ele retorna um cabeçalho HTTP com um código de status, que indica o resultado da operação. Esses códigos são agrupados em cinco classes:
- 1xx – Informativo
- 2xx – Sucesso
- 3xx – Redirecionamento
- 4xx – Erro do cliente
- 5xx – Erro do servidor
Códigos mais utilizados
Código | Significado | Descrição |
---|---|---|
200 | OK | A requisição foi bem-sucedida. |
201 | Created | Um novo recurso foi criado com sucesso. |
204 | No Content | Requisição bem-sucedida, mas sem conteúdo a retornar. |
400 | Bad Request | Requisição malformada pelo cliente. |
401 | Unauthorized | Autenticação necessária para acessar o recurso. |
403 | Forbidden | Acesso ao recurso negado, mesmo autenticado. |
404 | Not Found | O recurso requisitado não foi encontrado. |
405 | Method Not Allowed | Método HTTP não permitido para o recurso. |
500 | Internal Server Error | Erro genérico no servidor. |
502 | Bad Gateway | Gateway ou proxy recebeu resposta inválida do servidor de origem. |
Principais métodos HTTP usados no backend
- GET: Requisita dados do servidor (leitura).
- POST: Envia dados para criação de um novo recurso.
- PUT: Atualiza um recurso existente (ou cria, se não existir).
- PATCH: Atualiza parcialmente um recurso.
- DELETE: Remove um recurso do servidor.