Este projeto foi desenvolvido como parte de um desafio em um processo seletivo e consiste na construção de uma pipeline do zero.
Certifique-se de ter as seguintes ferramentas configuradas em seu ambiente:
- AWS CLI.
- Terraform.
- Docker (para validação inicial).
- Projeto configurado no CircleCI associado ao repositório do GitHub.
Configure as seguintes variáveis de ambiente no CircleCI:
- AWS_ACCOUNT_ID = ID da conta.
- AWS_ECR_REGISTRY_ID = ID do registro ECR.
- AWS_REGION = Região padrão (use as mesmas definidas em terraform/variables.tf).
- AWS_ACCESS_KEY_ID = Chave de acesso para a AWS.
- AWS_SECRET_ACCESS_KEY = Chave secreta para a AWS.
- MY_APP_PREFIX = Prefixo a ser utilizado em seu projeto.
- Terraform para Infraestrutura como Código.
- CircleCI para Pipeline CI/CD.
- ECS/Fargate como gerenciador de containers.
- ECR como repositório de código.
- Cloudwatch para monitoramento (em andamento).
- AWS como provedor de nuvem.
- GitHub como repositório.
- Configure as variáveis de ambiente no CircleCI conforme mencionado anteriormente.
- Execute a estrutura em Terraform.
- O CircleCI automaticamente efetuará o deploy do código em ECS.
- Acesse a aplicação pelo DNS do LoadBalancer.
Toda alteração na aplicação será automaticamente refletida na estrutura AWS.
A estrutura Terraform consiste em uma VPC com 3 subnets em 3 AZs diferentes e Security Groups para o ALB (que esta em frente de toda a estrutura) e para o cluster ECS.
O ECS Cluster possui um serviço que efetua o deploy de 3 tasks, com rollout em caso de atualização. Uma task definition será utilizada para gerenciar o container e aplicara as revisões.
Utilizamos as métricas do cluster ECS para monitoramento.
Toda alteração do código da aplicação é identificada automaticamente e buildada, testada e feito o deploy pelo CircleCI.
É feito o checkout e executado o npm test.
A imagem é buildada e feito o deploy para o repositório no ECR.
É atualizado o serviço e cadastrada uma nova task definition.
A imagem é atualizada com a nova URI e associada ao container da task definition.
O dashboard irá monitorar o cluster ECS e seus componentes.
Utilize o DNS do load balancer, disponível no output do Terraform ou no console.




