Orquestração de containers é o processo automatizado de gerenciar o deploy, scaling, networking e disponibilidade de aplicações containerizadas. Na AWS, as duas principais opções são o Amazon ECS (Elastic Container Service), serviço nativo e simples, e o Amazon EKS (Elastic Kubernetes Service), a versão gerenciada do Kubernetes com portabilidade multi-cloud.
A orquestração de containers é um dos pilares da infraestrutura moderna. Na AWS, duas opções dominam o cenário: o Amazon ECS (Elastic Container Service), serviço nativo da AWS, e o Amazon EKS (Elastic Kubernetes Service), a versão gerenciada do Kubernetes. Escolher entre os dois pode impactar significativamente a produtividade do time, os custos operacionais e a portabilidade da sua stack.
Neste comparativo atualizado para 2026, vamos analisar critérios técnicos, operacionais e financeiros para ajudá-lo a tomar a decisão certa para o seu cenário.
Entendendo as diferenças fundamentais
O Amazon ECS é um serviço proprietário da AWS projetado para ser simples e fortemente integrado ao ecossistema AWS. Ele utiliza conceitos próprios como Tasks, Services e Task Definitions para gerenciar containers. Sua principal vantagem é a simplicidade operacional: não há control plane para gerenciar, e a integração com IAM, CloudWatch, ALB e outros serviços AWS é nativa e transparente.
O Amazon EKS, por outro lado, é o Kubernetes gerenciado pela AWS. Ele segue o padrão open-source do Kubernetes, com todos os seus conceitos (Pods, Deployments, Services, Ingress, etc.) e o vasto ecossistema de ferramentas da comunidade. O control plane é gerenciado pela AWS, mas a complexidade operacional é inerentemente maior.
Comparativo técnico detalhado
| Critério | Amazon ECS | Amazon EKS |
|---|---|---|
| Modelo | Serviço proprietário da AWS, com conceitos próprios (Tasks, Services e Task Definitions) | Kubernetes gerenciado pela AWS, no padrão open-source (Pods, Deployments, Services e Ingress) |
| Control plane | Não há control plane para gerenciar | Gerenciado pela AWS, com complexidade operacional maior |
| Curva de aprendizado | Menor: quem conhece Docker chega à produção mais rápido | Maior: API extensa, namespaces, RBAC, CRDs, operators e ferramentas como Helm, Kustomize e ArgoCD |
| Custo do control plane | Sem cobrança; você paga o compute (EC2 ou Fargate) | USD 0,10 por hora por cluster (cerca de USD 73/mês), além do compute |
| Portabilidade | Dependência do ecossistema AWS | Manifests rodam em outros provedores ou on-premises com alterações mínimas |
| Ecossistema | Integração nativa com a AWS: Amazon ECS Service Connect, CloudWatch Container Insights e Amazon ECS Express Mode | Service meshes, GitOps, observabilidade, políticas e operators da comunidade Kubernetes |
| Perfil de time | Times pequenos ou que estão começando com containers | Times maiores, com engenheiros experientes em Kubernetes |
Curva de aprendizado
O ECS possui uma curva de aprendizado significativamente menor. Um engenheiro familiarizado com Docker pode ter serviços rodando em produção em questão de horas. Já o Kubernetes exige conhecimento de uma API extensa, conceitos como namespaces, RBAC, Custom Resource Definitions (CRDs), operators e um ecossistema complexo de ferramentas complementares como Helm, Kustomize e ArgoCD.
Para times pequenos ou empresas que estão iniciando com containers, o ECS geralmente é a escolha mais pragmática. Times maiores com engenheiros experientes em Kubernetes podem se beneficiar da flexibilidade e do ecossistema do EKS.
Exemplo: Task Definition (ECS) vs Deployment (Kubernetes)
Veja como definir um serviço web simples em cada plataforma:
{
"family": "web-app",
"networkMode": "awsvpc",
"requiresCompatibilities": ["FARGATE"],
"cpu": "512",
"memory": "1024",
"executionRoleArn": "arn:aws:iam::role/ecsTaskExecutionRole",
"containerDefinitions": [
{
"name": "web",
"image": "123456789.dkr.ecr.us-east-1.amazonaws.com/web-app:latest",
"portMappings": [
{
"containerPort": 3000,
"protocol": "tcp"
}
],
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-group": "/ecs/web-app",
"awslogs-region": "us-east-1",
"awslogs-stream-prefix": "ecs"
}
}
}
]
}
# Deployment + Service + Ingress para o mesmo app
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-app
namespace: production
spec:
réplicas: 3
selector:
matchLabels:
app: web-app
template:
metadata:
labels:
app: web-app
spec:
containers:
- name: web
image: 123456789.dkr.ecr.us-east-1.amazonaws.com/web-app:latest
ports:
- containerPort: 3000
resources:
requests:
cpu: "250m"
memory: "512Mi"
limits:
cpu: "500m"
memory: "1Gi"
livenessProbe:
httpGet:
path: /health
port: 3000
initialDelaySeconds: 15
periodSeconds: 10
readinessProbe:
httpGet:
path: /ready
port: 3000
initialDelaySeconds: 5
periodSeconds: 5
---
apiVersion: v1
kind: Service
metadata:
name: web-app-svc
namespace: production
spec:
selector:
app: web-app
ports:
- port: 80
targetPort: 3000
type: ClusterIP
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: web-app-ingress
namespace: production
annotations:
kubernetes.io/ingress.class: alb
alb.ingress.kubernetes.io/scheme: internet-facing
spec:
rules:
- host: app.exemplo.com.br
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: web-app-svc
port:
number: 80
Note como o Kubernetes exige significativamente mais configuração para o mesmo resultado. Entretanto, essa verbosidade traz granularidade: health checks nativos, resource limits, namespaces e Ingress são parte do ecossistema padrão.
Custos
O ECS não cobra pelo control plane: você paga apenas pelos recursos computacionais (EC2 ou Fargate). Já o EKS cobra USD 0,10 por hora pelo cluster (abre em nova aba) (aproximadamente USD 73/mês), além dos custos de compute. Para empresas com múltiplos clusters ou ambientes (dev, staging, prod), esse custo pode ser significativo.
Em contrapartida, o EKS permite otimizações avançadas como Karpenter para auto-scaling de nodes, que provisiona nodes no tamanho certo para os pods pendentes e remove os que deixam de ser necessários (abre em nova aba), escolhendo o tipo de instância a partir dos requisitos de cada workload (atualização de 22/10/2026).
Portabilidade e vendor lock-in
Este é talvez o argumento mais forte a favor do Kubernetes: portabilidade. Workloads definidos com manifests Kubernetes podem rodar em qualquer provedor (AWS, Azure, GCP) ou on-premises com alterações mínimas. Se a sua estratégia inclui multi-cloud ou hybrid-cloud, o Kubernetes é a escolha natural.
O ECS, por ser proprietário, cria dependência total do ecossistema AWS. Se a empresa não tem planos de migrar para outro provedor, isso pode não ser um problema, mas é importante considerar no planejamento estratégico.
Ecossistema e extensibilidade
O ecossistema Kubernetes é incomparável. Service meshes (Istio, Linkerd), GitOps (ArgoCD, Flux), observabilidade (Prometheus, Grafana), políticas (OPA/Gatekeeper, Kyverno) e centenas de operators para bancos de dados, filas e outros componentes. Essa riqueza permite construir plataformas internas sofisticadas.
O ECS, embora mais limitado, integra-se nativamente com o ecossistema AWS: Amazon ECS Service Connect para comunicação entre serviços (o AWS App Mesh teve fim de suporte em 30/09/2026 (abre em nova aba)), CloudWatch Container Insights para observabilidade e Amazon ECS Express Mode para subir um serviço web a partir de uma imagem.
Quando escolher ECS
- Time pequeno ou médio sem experiência prévia em Kubernetes
- Infraestrutura 100% na AWS sem planos de multi-cloud
- Prioridade para simplicidade operacional e time-to-market
- Workloads com poucos serviços (até ~30 microsserviços)
- Desejo de minimizar overhead de gestão de infraestrutura
- Orçamento limitado para plataformas de orquestração
Quando escolher EKS (Kubernetes)
- Time com experiência sólida em Kubernetes
- Estratégia multi-cloud ou hybrid-cloud
- Arquiteturas complexas com dezenas ou centenas de microsserviços
- Necessidade de extensibilidade avançada (operators, CRDs, service mesh)
- Plataforma interna de desenvolvimento (Internal Developer Platform)
- Workloads que exigem configuração granular de rede e segurança
"A escolha certa depende do contexto do negócio. Em alguns ambientes a complexidade justifica sair do ECS para o EKS; em outros, o Kubernetes vira overhead e o caminho inverso faz mais sentido."
E o Fargate? Onde entra nessa história?
O AWS Fargate é um motor de computação serverless que funciona tanto com ECS quanto com EKS. Com Fargate, você não precisa gerenciar instâncias EC2. A AWS cuida da infraestrutura subjacente. É ideal para workloads que não exigem acesso ao sistema operacional do host e priorizam simplicidade.
A combinação ECS + Fargate é provavelmente a forma mais simples de rodar containers em produção na AWS. Para quem busca serverless puro sem containers, veja nosso guia sobre AWS Lambda. Já EKS + Fargate oferece a portabilidade do Kubernetes com a simplicidade do serverless, embora com algumas limitações (sem DaemonSets, por exemplo (abre em nova aba)).
Configurações avançadas e gotchas
Detalhes técnicos que fazem diferença na produção:
# ECS: Criar cluster com Container Insights habilitado
aws ecs create-cluster \
--cluster-name producao \
--settings name=containerInsights,value=enabled \
--configuration executeCommandConfiguration='{
"logging": "OVERRIDE",
"logConfiguration": {
"cloudWatchLogGroupName": "/ecs/exec-logs"
}
}' \
--region sa-east-1
# ECS: Habilitar ECS Exec para debug (equivalente ao kubectl exec)
aws ecs update-service \
--cluster producao \
--service web-app \
--enable-execute-command \
--region sa-east-1
# Depois, acessar o container:
aws ecs execute-command --cluster producao \
--task arn:aws:ecs:sa-east-1:123456789:task/producao/abc123 \
--container web --interactive \
--command "/bin/sh"
# EKS: Criar cluster com Kubernetes 1.29+ e add-ons gerenciados
eksctl create cluster \
--name producao \
--region sa-east-1 \
--version 1.29 \
--nodegroup-name workers \
--node-type m6i.large \
--nodes-min 2 --nodes-max 10 \
--managed \
--with-oidc \
--alb-ingress-access
# EKS: Instalar Karpenter para auto-scaling inteligente
helm install karpenter oci://public.ecr.aws/karpenter/karpenter \
--version 0.35.0 \
--namespace karpenter --create-namespace \
--set "settings.clusterName=producao" \
--set "settings.interruptionQueue=producao"
Gotchas importantes:
- ECS Fargate e limites de ephemeral storage: por padrão, cada task Fargate tem apenas 20 GB de armazenamento efêmero (abre em nova aba) (configurável até 200 GB, com custo adicional). Se sua aplicação gera arquivos temporários grandes, dimensione isso na Task Definition.
- EKS e custos ocultos: além do USD 0,10/h do control plane, o Fargate soma 256 MB à reserva de memória de cada Pod para os componentes do Kubernetes (kubelet, kube-proxy e containerd) e arredonda para a configuração de vCPU e memória mais próxima, o que pode provisionar mais vCPU do que o pedido (documentação oficial do EKS). Com EC2 managed nodes, você paga pelas instâncias mesmo que os Pods não ocupem 100% da capacidade.
- Service discovery: no ECS use o Cloud Map (AWS Service Discovery) nativo. No EKS, o CoreDNS já resolve services por nome automaticamente, mas precisa de atenção ao configurar external-dns para registros Route 53.
- Versão do Kubernetes: o EKS dá suporte a cada minor version por aproximadamente 14 meses (abre em nova aba). Planeje upgrades a cada 3-4 meses para não ficar em versões sem suporte (o upgrade forçado pela AWS pode causar downtime se não estiver preparado).
Na prática: cenário ilustrativo de migração de ECS para EKS
Cenário ilustrativo: uma healthtech com 42 microsserviços em ECS com EC2 precisa de service mesh para observar o tráfego entre serviços, tem um time de 25 engenheiros e planeja operar também no Google Cloud para atender clientes internacionais. O desenho para esse cenário segue três fases:
- Fase 1: cluster EKS com Terraform, Karpenter para o auto-scaling de nós, Istio como service mesh e Argo CD para GitOps.
- Fase 2: migração serviço a serviço com weighted target groups no ALB, em canary: 90% do tráfego no ECS e 10% no EKS, aumentando o peso a cada validação.
- Fase 3: desligamento dos serviços no ECS e ajuste fino de requests e limits com base nas métricas reais do Prometheus.
O que esperar nesse cenário: o custo de infraestrutura costuma subir enquanto o cluster EKS roda junto com o ECS e pode cair depois que o Karpenter passa a escolher instâncias Spot e o ECS é desligado. O tamanho dessa variação depende de cada ambiente, por isso o custo por container entra nos KPIs abaixo desde o primeiro dia. Com o time de platform engineering publicando templates padronizados, o deploy passa a ser self-service para os desenvolvedores.
KPIs para o decisor
- Custo por container por mês: custo total de compute dividido pelo número de containers. Target: monitorar tendência mensal e comparar entre ECS e EKS.
- Deployment frequency: número de deploys por semana por serviço. Target: deploys diários com containers, sem janelas de manutenção.
- Pod/Task startup time: tempo do scheduling até container healthy. Target: menos de 30s com Fargate, menos de 60s com EC2/managed nodes (inclui node scale-up).
- Cluster utilization (%): CPU/memória reservada vs. capacidade total dos nodes. Target: 65-80% com Karpenter ou ECS Capacity Providers.
- MTTR de incidentes: tempo para rollback ou fix. Target: menos de 5 minutos com rollback automático via health checks.
O catálogo de projetos traz um exemplo de escopo de aplicação em contêineres no Amazon ECS (ou Amazon EKS), com atualizações frequentes.
Perguntas frequentes
Qual a diferença entre ECS e EKS?
O Amazon ECS é um serviço proprietário da AWS, com conceitos próprios e sem control plane para gerenciar. O Amazon EKS é o Kubernetes gerenciado pela AWS, que segue o padrão open-source e traz o ecossistema da comunidade, com complexidade operacional maior.
O EKS cobra pelo control plane?
Sim. O EKS cobra USD 0,10 por hora por cluster (cerca de USD 73 por mês), além do compute; o ECS não cobra pelo control plane. Com vários clusters ou ambientes, como dev, staging e produção, esse custo pesa.
Quando escolher ECS?
Quando o time é pequeno ou médio e não tem experiência prévia em Kubernetes, a infraestrutura é toda na AWS, sem planos de multi-cloud, e a prioridade é simplicidade operacional. Para quem está começando com containers, a recomendação da RFX é ECS com Fargate.
Quando o EKS faz mais sentido?
Quando o time tem experiência sólida em Kubernetes, a estratégia é multi-cloud ou hybrid-cloud, a arquitetura tem dezenas ou centenas de microsserviços ou há necessidade de extensibilidade avançada, como operators, CRDs e service mesh.
O Fargate funciona com ECS e com EKS?
Sim. O AWS Fargate é um motor de computação serverless que funciona com os dois e dispensa a gestão de instâncias EC2. No EKS ele tem algumas limitações, como não rodar DaemonSets.
Recomendação da RFX Tecnologia
Para a maioria das empresas brasileiras de médio porte que estão iniciando sua jornada de containerização, recomendamos começar com ECS + Fargate. A simplicidade permite focar no que realmente importa: a aplicação. À medida que a complexidade cresce e o time amadurece, a migração para EKS pode ser avaliada.
Se a sua empresa já utiliza Kubernetes on-premises ou tem uma estratégia multi-cloud definida, o EKS é a escolha natural para manter consistência e aproveitar o conhecimento existente.
Precisa definir a arquitetura de containers do seu cenário? Conheça o serviço de DevOps e Automação ou marque 30 minutos com um arquiteto AWS e converse sobre a escolha entre EKS e ECS para o seu time.
Documentação oficial consultada em 12/10/2026: guia do Amazon ECS (AWS).