... | @@ -18,6 +18,7 @@ Nesta seção, detalhamos a arquitetura da aplicação, abordando as tecnologias |
... | @@ -18,6 +18,7 @@ Nesta seção, detalhamos a arquitetura da aplicação, abordando as tecnologias |
|
- [Metodologias de Desenvolvimento](#metodologias-de-desenvolvimento)
|
|
- [Metodologias de Desenvolvimento](#metodologias-de-desenvolvimento)
|
|
- [Backend - BDD e DDD](#backend---bdd-e-ddd)
|
|
- [Backend - BDD e DDD](#backend---bdd-e-ddd)
|
|
- [Frontend - MVC](#frontend---mvc)
|
|
- [Frontend - MVC](#frontend---mvc)
|
|
|
|
- [Arquitetura & Deploy] (#arquitetura-e-deploy)
|
|
|
|
|
|
## Definição das Tecnologias
|
|
## Definição das Tecnologias
|
|
|
|
|
... | @@ -108,6 +109,42 @@ A arquitetura **MVC** separa a aplicação em três partes principais, facilitan |
... | @@ -108,6 +109,42 @@ A arquitetura **MVC** separa a aplicação em três partes principais, facilitan |
|
|
|
|
|
Essa abordagem garante uma clara separação de responsabilidades, tornando a aplicação mais modular e fácil de escalar.
|
|
Essa abordagem garante uma clara separação de responsabilidades, tornando a aplicação mais modular e fácil de escalar.
|
|
|
|
|
|
|
|
|
|
|
|
## Arquitetura & Deploy
|
|
|
|
|
|
|
|
**Resumo do Projeto**: A arquitetura de infraestrutura foi projetada para suportar de forma robusta o ciclo de vida de desenvolvimento e deploy contínuo das aplicações. A solução utiliza um conjunto de tecnologias e boas práticas que garantem escalabilidade, segurança e automação a fim de prover escalabilidade para a PoC desenvolvida.
|
|
|
|
|
|
|
|
### Componentes Principais da Infraestrutura:
|
|
|
|
|
|
|
|
#### Infraestrutura AWS EC2 (Região US East 2 - Ohio):
|
|
|
|
- Instâncias EC2 (CP-Planta1 e CP-Planta2): São instâncias de classe t2.medium que hospedam o ambiente de produção. Elas fazem parte de um grupo de segurança e de uma sub-rede gerenciada na região de Ohio.
|
|
|
|
- Grupo de Segurança e Sub-rede: Controlam o tráfego e garantem o isolamento e a segurança da infraestrutura.
|
|
|
|
|
|
|
|
#### Orquestração com Docker Swarm:
|
|
|
|
- Docker Swarm é utilizado para gerenciar e orquestrar os contêineres, oferecendo alta disponibilidade e escalabilidade automática.
|
|
|
|
- Os serviços principais incluem um backend desenvolvido com Nest.js, um frontend em Next.js, e um banco de dados PostgreSQL.
|
|
|
|
- Além disso, possuímos um banco de dados configurado com uma instância principal e uma réplica, proporcionando alta disponibilidade e resiliência. A réplica permite que o ambiente continue operando, mesmo em caso de falhas na instância principal, além de melhorar o desempenho distribuindo leituras entre as instâncias.
|
|
|
|
- O PgBouncer é utilizado como um serviço de pool de conexões, otimizando o uso dos recursos do banco de dados. Ele gerencia as conexões dos aplicativos ao serviço PostgreSQL primário, reduzindo a carga no banco e melhorando a eficiência das operações de leitura e escrita.
|
|
|
|
|
|
|
|
#### Automação e Gerenciamento com Ansible:
|
|
|
|
- Ansible é responsável pela configuração inicial das instâncias e pela orquestração do deploy. Ele automatiza a instalação de dependências, inicialização do cluster Swarm, e o deploy de novos serviços.
|
|
|
|
|
|
|
|
|
|
|
|
#### Pipeline de CI/CD:
|
|
|
|
|
|
|
|
O pipeline CI/CD é composto por dois conjuntos trabalhos principais:
|
|
|
|
|
|
|
|
- JOB 1: Testa padrões de commit, roda o processo de linting para averiguar formatação, roda os teste que forem definidos, atualiza as imagens Docker com novas alterações de código a partir do GitLab CI e por fim, aciona o trigger para o JOB 2.
|
|
|
|
- JOB 2: Aciona o deploy das novas imagens nas instâncias EC2 através do Ansible, garantindo que o ambiente esteja sempre atualizado com a última versão validada.
|
|
|
|
|
|
|
|
#### Destaques da Arquitetura:
|
|
|
|
|
|
|
|
- Automação de Ponta a Ponta: A integração entre Ansible, Docker Swarm e o pipeline de CI/CD elimina a necessidade de intervenções manuais, aumentando a eficiência do processo de deploy.
|
|
|
|
- Escalabilidade e Resiliência: A utilização de Docker Swarm permite escalonar automaticamente os serviços, enquanto a infraestrutura na AWS garante alta disponibilidade.
|
|
|
|
- Segurança e Controle de Acesso: A combinação de sub-redes e grupos de segurança assegura que o tráfego seja corretamente roteado e protegido.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
---
|
|
|
|
|
|
[**Topo**](#arquitetura-da-aplicação) |
|
[**Topo**](#arquitetura-da-aplicação) |
|
|
|
\ No newline at end of file |