Home | Escopo | Processo | Design/Mockups | Configuração | Arquitetura | Gerência | BD | Qualidade | Frontend | Backend | Analytics |
---|
Arquitetura
Esta página centraliza informações sobre o arquitetura do projeto e a infraestrutura da AWS utilizada para execução do projeto.
Sumário
Diagrama de deploy
Abaixo, é possível visualizar o diagrama de deploy do projeto:
Como é possível ver, além das tecnologias de Frontend e Backend, utilizam-se os serviços da AWS abaixo para execução da aplicação:
- Bucket S3: para hospedar as imagens dos estabelecimentos cadastrados na aplicação.
- Repositório ECR: para hospedar as imagens dos containers (Backend, PostgreSQL, e GitLab Runner).
- SES: para permitir o envio de e-mail para os usuários, em caso de recuperação de conta ou notificação sobre atualizações dos estabelecimentos cadastrados.
- 1 Instância EC2 (t2.small): 1 instância para hospedar a API Backend, o banco de dados PostgreSQL e o Runner do Gitlab, e o servidor nginx, containerizados.
No dia 27/03/2024, foi realizada uma estimativa dos custos para manter a infraestrutura do projeto por 1 semestre na AWS utilizando a calculadora da AWS, considerando os quatro serviços citados acima. Neste dia, o custo financeiro estimado a cada mês e ao final do semestre foram:
- Custo Mensal: 12,99 USD
- Custo Semestral: (12,99 USD * 6) = 77,94 USD
- Custo Anual calculado pela AWS: 155,89 USD
Para este custo mensal, os detalhes de estimativa de cada serviço considerados foram:
-
Amazon EC2
- Região: US East (Ohio)
- Custo inicial: 0,00 USD
- Custo mensal: 12,05 USD
- Tipo de locação: Instâncias compartilhadas
- Sistema operacional: Linux
- Carga de trabalho: Uso constante
- Quantidade de instâncias: 1
- Tipo de instância: t2.small
-
Amazon Elastic Container Registry
- Região: US East (Ohio)
- Custo inicial: 0,00 USD
- Custo mensal: 0,50 USD
- Quantidade de dados armazenados: 5 GB por mês
-
Amazon Simple Email Service (SES)
- Região: US East (Ohio)
- Custo inicial: 0,00 USD
- Custo mensal: 0,20 USD
- Mensagens de e-mail enviadas do EC2: 1000 por mês
- Mensagens de e-mail enviadas do cliente de e-mail: 1000 por mês
-
Amazon Simple Storage Service (S3)
- Região: US East (Ohio)
- Custo inicial: 0,01 USD
- Custo mensal: 0,24 USD
- Armazenamento S3 Standard: 10 GB por mês
- Como os dados serão movidos para S3 Standard? Solicitações PUT, COPY, POST, LIST para S3 Standard
- Número mensal de solicitações PUT, COPY, POST, LIST para S3 Standard: 1000
- Número mensal de GET, SELECT e todas as outras solicitações do S3 Standard: 1000
- Dados retornados pelo S3 Select: 3 GB por mês
- Dados verificados pelo S3 Select: 3 GB por mês
- Tamanho médio de objetos do S3 Standard: 5
Ambientes utilizados
Durante a Sprint 2 (segunda Sprint de desenvolvimento de código no projeto) percebeu-se a necessidade de existir um ambiente de desenvolvimento para testar e validar as alterações sendo integradas no projeto, antes da entrega das mesmas no ambiente produtivo. Isso porque, durante esta Sprint, não era possível subir as alterações recém-feitas mas ainda não validadas no ambiente produtivo, pois este mesmo ambiente era utilizado pelos stakeholders ao acessar o aplicativo.
Assim, segmentou-se os containers executando na instância EC2 da AWS em dois ambientes distintos:
- Ambiente produtivo: onde é executado o código validado e entregue aos stakeholders ao final da última Sprint.
- Ambiente de staging: ambiente de desenvolvimento, o qual é atualizado a cada commit na branch develop durante um ciclo de desenvolvimento. É o ambiente a ser utilizado para testes anteriores ao code freeze durante a Sprint.
Para ersta segmentação, duplicou-se os containers do PostgreSQL e da API Backend do projeto e criou-se duas redes internas do Docker, como pode ser visto na imagem abaixo. As duas redes customizadas são compartilhadas com o container do nginx, enquanto o container do GitLab Runner fica em uma rede isolada.
Além disso, cada um dos ambientes poderia ser acessado a partir de URLs diferentes, configuradas por meio do Cloudflare:
- Ambiente produtivo: https://sembarreiras.me/
- Ambiente de staging: https://staging.sembarreiras.me/