ECS
Elastic Container Service — orquestração de containers
O Amazon ECS (Elastic Container Service) é o serviço que executa os containers Docker da API e de processos em background do CRM. Em vez de gerenciar servidores VM manualmente, você define o que rodar (imagem, CPU, memória) na Task Definition e o ECS cuida de onde e quantas cópias manter no ar.
Conceitos principais
| Conceito | O que é | Analogia |
|---|---|---|
| Cluster | Agrupamento lógico de capacidade (Fargate ou EC2) | “Datacenter” do ECS |
| Service | Mantém N tasks iguais rodando e faz deploy rolling | “Aplicação sempre ligada” |
| Task | Uma ou mais instâncias de containers definidos na TD | “Pod” em execução |
| Task Definition | Blueprint: imagem, portas, env, logs | “Receita” do container |
| Container | Processo isolado dentro da task (geralmente 1 por task na API) | O processo .NET/Node/etc. |
Fargate vs EC2
| Modo | Você gerencia | Custo / operação | Uso comum no CRM |
|---|---|---|---|
| Fargate | Só task size (CPU/RAM) | Paga por vCPU-hora e GB-hora; sem SSH em host | APIs stateless, deploy simples |
| EC2 | Instâncias do cluster | Mais controle; precisa patch de SO | Cargas muito customizadas ou legado |
Na prática, APIs do CRM costumam usar Fargate no cluster do ambiente (produção, homologação).
Fluxo de deploy
- Build gera imagem e envia ao ECR.
- Nova revisão da Task Definition referencia a tag da imagem.
- O ECS Service atualiza com estratégia de deploy (rolling, blue/green conforme configuração).
- Tasks novas entram no Target Group; o ALB só envia tráfego quando o health check passa.
- Tasks antigas são encerradas após o período de drenagem.
Configurações que importam no dia a dia
| Parâmetro | Efeito |
|---|---|
| Desired count | Quantas tasks o service tenta manter (ex.: 2 em produção para HA) |
| Minimum healthy percent | Quantas tasks podem ficar fora durante deploy (ex.: 50% com 2 tasks = 1 sempre up) |
| Maximum percent | Quantas tasks extras podem subir temporariamente no deploy |
| Placement | Em Fargate, AWS escolhe AZ; em EC2, constraints de host |
| Service Connect / Service Discovery | Comunicação entre microserviços no mesmo cluster (se usado) |
Logs e observabilidade
- awslogs: driver que envia stdout/stderr para CloudWatch Logs (grupo definido na task definition).
- Métricas no CloudWatch: CPU, memória, contagem de tasks, eventos de deploy.
- Alarmes podem disparar escala (Application Auto Scaling) ou notificação.
Rede e segurança
- Tasks rodam em subnets (públicas ou privadas) da VPC.
- O Security Group da task normalmente só aceita tráfego na porta da API vindos do security group do ALB.
- Saída para internet (ex.: APIs externas, S3) usa NAT Gateway ou endpoints VPC conforme arquitetura.
Se a API não responde após deploy, verifique nesta ordem: health check do Target Group → security group → variáveis de ambiente na Task Definition → logs no CloudWatch da task que falhou ao iniciar.