Uma API em Node.js utilizando o Express Framework que realiza a conexão com um banco de dados PostgreSQL.
O comando para iniciar a API é npm run start
| Rota | Método | Descrição |
|---|---|---|
| / | GET | Retorna uma mensagem estática. |
| /connect | GET | Realiza a conexão com o banco e retorna a versão da engine. |
| Nome | Description | Padrão |
|---|---|---|
| API_PORT | Port da API Node | 3000 |
| DB_DATABASE | Database do banco de dados | |
| DB_HOST | Endereço do banco de dados | |
| DB_PORT | Port do banco de dados | 5432 |
| DB_USER | Usuário do banco de dados | |
| DB_PASSWORD | Senha do banco de dados |
A infraestrutura deste projeto foi concebida seguindo os pilares de Segurança, Eficiência de Custos e Confiabilidade do AWS Well-Architected Framework. Toda a provisão foi feita via Terraform (IaC).
Considerando restrições de quota para provisionamento de Load Balancers em contas novas da AWS, foi adotada uma estratégia de entrega que, mantém os princípios de automação, segurança e eficiência operacional.
-
Deploy via Event-Driven: Substituição do fluxo padrão do CodeDeploy por uma AWS Lambda, disparada por eventos do EventBridge, responsável por executar um Force New Deployment no ECS de forma assíncrona.
-
Exposição Controlada para Validação: Para viabilizar testes funcionais, foi criada uma exposição direta via serviço com IP público, mantendo a aplicação 100% Stateless.
-
Otimização de Custos (FinOps): Utilização de ECS Fargate Spot, reduzindo em até 70% o custo computacional.
Como a aplicação não demanda controle de sistema operacional ou customização de instância, a adoção de EC2 não se justifica neste cenário, reduzindo significativamente o overhead operacional (patching, hardening, gestão de SO e capacidade).
Arquitetura projetada para garantir alta disponibilidade, escalabilidade automática e segurança em camadas, seguindo boas práticas do AWS Well-Architected Framework.
-
Edge & Performance: Uso de Amazon CloudFront como camada de distribuição global, reduzindo latência e permitindo integração com WAF para proteção adicional.
-
Balanceamento e Alta Disponibilidade: Application Load Balancer em subnets públicas distribuindo tráfego entre múltiplas tasks em diferentes Availability Zones.
-
Escalabilidade Horizontal: Serviço no Amazon ECS (Fargate) com política de Auto Scaling baseada em métricas (CPU), ajustando automaticamente a quantidade de tasks conforme demanda.
-
Isolamento de Rede: Aplicação executando em subnets privadas, sem exposição direta à internet.
-
Segurança de Dados: Amazon RDS em subnet privada, acessível apenas via Security Group da aplicação.
O fluxo de entrega contínua foi desenhado para ser totalmente automatizado, seguro e desacoplado, separando claramente o ciclo de infraestrutura do ciclo de aplicação.
Disparado automaticamente a cada push na branch main com alterações no diretório application/.
Responsabilidades do workflow:
- Autenticação segura na AWS via OIDC (sem uso de credenciais estáticas)
- Build da imagem Docker
- Geração de tag baseada no commit (`GITHUB_SHA`)
- Push da imagem versionada para o **Amazon ECR**
Esse processo garante:
- Imagens imutáveis
- Rastreabilidade por commit
- Segurança na autenticação
- Separação clara entre código e infraestrutura
Executado manualmente via workflow_dispatch, permitindo controle por ambiente e módulo.
Características do pipeline:
- Autenticação via OIDC
- Execução modular (connectivity, security, databases, application)
- Backend remoto versionado por ambiente
- Uso de arquivos `.auto.tfvars` específicos por ambiente
A estrutura modular permite:
- Isolamento de responsabilidades
- Deploy incremental por camada
- Reutilização para múltiplos ambientes e contas
Após o push de uma nova imagem no ECR:
- O evento é capturado pelo Amazon EventBridge
- Uma AWS Lambda é acionada
- A Lambda executa um
Force New Deploymentno ECS Service - O ECS:
- Cria novas tasks com a imagem atualizada
- Realiza health checks
- Finaliza gradualmente as tasks antigas
Esse modelo garante:
- Deploy assíncrono e resiliente
- Zero intervenção manual
- Rolling update controlado
- Alta disponibilidade durante a atualização
-
- Zero credenciais estáticas (OIDC)
- Imagens imutáveis
- Deploy desacoplado via eventos
- Infraestrutura modular
- Separação entre ciclo de app e ciclo de infra
Essa abordagem mantém o ambiente:
- Reprodutível
- Auditável
- Escalável
- Seguro
- Alinhado a boas práticas de DevSecOps
- Aplicação: Node.js (Express)
- Banco de Dados: PostgreSQL (Amazon RDS)
- Deploy via Event-Driven : EventBridge + AWS Lambda
- IaC: Terraform
- Container: Docker (Amazon ECR + ECS Fargate)
- CI/CD: GitHub Actions

