Roteiro de deploy na nuvem
Kubernetes não é a resposta certa para todo time. Ele resolve problemas reais em escala — mas traz uma complexidade operacional e um custo significativos, capazes de afundar um time pequeno ou uma startup antes mesmo de ela lançar sua primeira funcionalidade. Esta aula mapeia o panorama de deploy e oferece um roteiro de decisão: dado o tamanho do seu time, a quantidade de serviços e a sua maturidade operacional, qual é a escolha de infraestrutura certa agora, e como você evolui para o próximo nível?
A aula anterior, Modelos de serviço, deu o vocabulário (IaaS, PaaS, CaaS, DBaaS). Esta aula o transforma em plataformas concretas, preços e um caminho de migração para a loja: gateway, account, order, Postgres.
Objetivos de aprendizagem
Ao final desta aula, você deve ser capaz de:
- Comparar as principais plataformas de deploy (Railway, Render, Fly.io, Lightsail, ECS Fargate / Express Mode, EKS, K3s) pelo que elas escondem e pelo que você ainda gerencia.
- Escolher uma plataforma para um dado tamanho de time, quantidade de serviços e maturidade operacional, e justificar por que o Kubernetes vale ou ainda não vale a pena.
- Estimar o custo mensal de um pequeno sistema de microsserviços a partir de preços unitários, e apontar os custos fixos (control plane, balanceador de carga, NAT gateway) que dominam em pequena escala.
- Planejar um caminho de migração guiado por problemas concretos, e não por especulação sobre a escala futura.
- Diagnosticar as armadilhas de rede comuns das plataformas simples (rede privada, acesso a um banco de dados gerenciado).
Slides
Clique nos slides e use ← → para navegar; F abre em tela cheia e P abre a visão do apresentador, com as notas. Abrir os slides em uma nova aba
1. O espectro da infraestrutura gerenciada
Os provedores de nuvem foram, aos poucos, abstraindo as preocupações de infraestrutura. O trade-off é sempre o mesmo: quanto mais a plataforma gerencia, menos controle você tem e menos carga operacional você carrega. O diagrama vai da opção mais gerenciada, à esquerda, até a de mais controle (e mais trabalho), à direita:
flowchart LR
subgraph dx ["Caminho da experiência do desenvolvedor"]
railway["Railway / Render<br/>(git push → URL)"] -->|"mais controle, mais ops"| fly["Fly.io<br/>(Dockerfile, regiões)"]
fly -->|"mais controle, mais ops"| lightsail["Lightsail<br/>(VM simples ou containers)"]
end
subgraph aws ["Caminho nativo da AWS"]
express["ECS Express Mode<br/>(imagem → URL HTTPS)"] -->|"mais controle, mais ops"| ecs["ECS Fargate<br/>(task definitions, sem nós)"]
ecs -->|"mais controle, mais ops"| eks["EKS<br/>(Kubernetes completo)"]
eks -->|"mais controle, mais ops"| vm["VMs EC2<br/>(você opera tudo)"]
end Dois caminhos, não um único eixo
Não existe um espectro único aqui. O ECS Express Mode não é "mais gerenciado" que o Railway em nenhum sentido mensurável — eles atendem a casos de uso diferentes. O diagrama mostra dois caminhos: o caminho da experiência do desenvolvedor (plataformas no estilo PaaS que escondem quase tudo) e o caminho nativo da AWS (serviços que vivem na sua conta AWS, ao lado de RDS, IAM e da sua VPC). O contexto do seu time determina qual caminho é relevante.
| Plataforma | Modelo | O que ela esconde | O que você gerencia | Ideal para |
|---|---|---|---|---|
| Railway / Render | PaaS | Tudo, exceto o código | Variáveis de ambiente, domínios | Startups, protótipos, projetos pessoais |
| Fly.io | PaaS / CaaS | Infraestrutura | Dockerfile, regiões, tamanhos de máquina | Apps globais de baixa latência, deploys na borda |
| AWS Lightsail | IaaS (VPS) ou CaaS simples | Hardware, rede | Instância: SO e runtime; containers: imagem e escala | Primeiro deploy na nuvem, projetos de alunos, orçamentos fixos |
| AWS ECS Express Mode | CaaS | Balanceador de carga, escalonamento, configuração de rede | Imagem do container, variáveis de ambiente, duas roles IAM | Serviços stateless na AWS, a porta de entrada simples para o ECS |
| AWS ECS Fargate | CaaS | Nós EC2 | Task definitions, escalonamento do serviço, ALB | Média escala, nativo da AWS, produção |
| AWS EKS | CaaS (Kubernetes gerenciado) | Control plane | Node groups, rede, add-ons | Times grandes, workloads complexos, multi-tenant |
| K3s auto-hospedado | IaaS + seu próprio Kubernetes | Nada além da VM | Todas as operações do K8s | On-premises, homelab, custo sensível |
A seção 5 estima o custo mensal de cada uma para o mesmo workload.
O AWS App Runner está fechado para novos clientes
Edições anteriores recomendavam o AWS App Runner (imagem de container ou repositório Git → URL HTTPS). Desde 30 de abril de 2026, o App Runner não aceita novos clientes; os clientes existentes continuam usando-o, mas não há novas funcionalidades previstas. A AWS recomenda o Amazon ECS Express Mode como substituto2. Plataformas gerenciadas têm um ciclo de vida — essa é mais uma face do vendor lock-in.
2. Roteiro de decisão por tamanho de time
Menos de 10 serviços? Comece aqui.
flowchart TD
A{"Precisa rodar na AWS?<br/>(créditos, compliance)"}
A -->|Não| B{"Usuários espalhados por<br/>vários continentes?"}
B -->|Não| C["Railway / Render<br/>(git push → URL)"]
B -->|Sim| D["Fly.io<br/>(máquinas multirregião)"]
A -->|Sim| E{"Uma VM ou poucos<br/>containers bastam?"}
E -->|Sim| F["Lightsail<br/>(preço mensal fixo)"]
E -->|Não| G["ECS Express Mode<br/>(Fargate + ALB)"] Recomendação principal: Railway ou Render para colocar no ar o mais rápido possível — conecte um repositório do GitHub e você tem uma URL no ar em minutos. Na AWS, Lightsail quando uma conta fixa e previsível é o que mais importa; ECS Express Mode quando você quer uma plataforma de containers gerenciada que possa crescer depois para o ECS completo sem migração.
EKS nesta escala
Só o control plane do EKS custa US$ 0,10/hora ≈ US$ 73/mês1. Some um node group mínimo (2 × t3.medium ≈ US$ 61/mês), um balanceador de carga e um banco de dados, e você está gastando cerca de US$ 180/mês antes de qualquer tráfego — várias vezes a conta inteira nas plataformas mais simples (veja a seção 5). Para um time de produto pequeno, o Kubernetes aqui não é uma opção — é um passivo.
10–50 serviços. Você precisa de infraestrutura de nível de produção, mas provavelmente não de um time completo de engenharia de plataforma.
flowchart TD
A{"Há um engenheiro de ops /<br/>plataforma dedicado?"}
B["ECS Fargate + ALB + RDS<br/>(containers serverless, sem nós)"]
C["EKS (managed node groups)<br/>ou ECS com mais controle"]
A -->|Não| B
A -->|Sim| C Por que ECS Fargate para times médios: não há nós EC2 para aplicar patches, e há integração nativa com AWS IAM, Secrets Manager, ECR e descoberta de serviços (Cloud Map / Service Connect). Você perde o ecossistema Kubernetes, mas evita a taxa fixa do control plane e a operação dos nós, o que torna o dia a dia muito mais simples.
O Fargate não escala para zero sozinho
Um serviço ECS mantém seu desiredCount de tasks rodando e sendo cobradas 24/7. O auto scaling ajusta essa contagem entre um mínimo e um máximo; chegar a zero exige que você mesmo defina o mínimo (ou um agendamento) como 0, e a próxima requisição fica então sem nenhuma task para atendê-la.
| ECS Fargate | EKS | |
|---|---|---|
| Gerenciamento de nós | Nenhum (serverless) | Você gerencia os node groups (ou paga pelo Auto Mode) |
| Curva de aprendizado | Baixa (task definitions) | Alta (API completa do K8s) |
| Ecossistema (Helm, CRDs) | Limitado | Completo |
| Custo fixo antes de qualquer workload | Nenhum — paga por task | ~US$ 73/mês de control plane por cluster |
| Portabilidade multicloud | Só AWS | Portável (API padrão do K8s) |
| GitOps (ArgoCD, Flux) | Limitado | De primeira classe |
50+ serviços. O EKS é a resposta certa — agora o custo operacional se justifica.
Nesta escala, você precisa de:
- Managed node groups (ou Karpenter para autoscaling com bin-packing)
- ArgoCD para GitOps — estado declarativo do cluster a partir do Git
- AWS Load Balancer Controller — provisiona ALB/NLB a partir de recursos Ingress do Kubernetes
- external-secrets-operator — sincroniza segredos do Vault ou do AWS Secrets Manager em Secrets do Kubernetes
- Clusters separados por ambiente — dev, staging e prod, cada um com seu próprio cluster EKS
| Add-on | Finalidade |
|---|---|
| Karpenter | Autoscaling de nós — provisiona exatamente os tipos de instância certos para os pods pendentes |
| ArgoCD | GitOps — estado declarativo do cluster reconciliado a partir do Git |
| AWS Load Balancer Controller | Provisiona ALB/NLB a partir de recursos Ingress do Kubernetes |
| External Secrets Operator | Sincroniza segredos do Vault/Secrets Manager em Secrets do Kubernetes |
| Metrics Server | Habilita o HPA (Horizontal Pod Autoscaler) |
| Cluster Autoscaler | Alternativa ao Karpenter para escalonar nós |
EKS Auto Mode
Desde dezembro de 2024, o EKS Auto Mode permite que a AWS gerencie também os worker nodes (provisionamento baseado no Karpenter, patches do SO), junto com add-ons essenciais como balanceamento de carga e armazenamento em bloco, por uma taxa de gerenciamento além do preço do EC219. Ele reduz o trabalho com nós desta lista, não a necessidade de entender Kubernetes.
Então por que o projeto da disciplina usa EKS?
O projeto faz o deploy da loja no EKS com um time de 2–3 pessoas — exatamente o que esta aula desaconselha a uma startup. O objetivo é outro: o projeto existe para aprender Kubernetes e AWS, não para minimizar custo ou time-to-market. Mantenha o cluster pequeno, apague-o quando não estiver usando e use a atividade de Custos para comparar a conta dele com as alternativas da seção 5.
3. As plataformas em detalhe
AWS Lightsail Containers
O Lightsail embrulha containers em uma abstração que lembra o Heroku: envie uma imagem, defina variáveis de ambiente, escolha um tamanho de nó (power) e uma quantidade de nós (scale) e receba um endpoint HTTPS público. Não há VPCs, security groups nem políticas IAM para configurar, e o preço mensal é fixo por nó4.
$ aws lightsail create-container-service --service-name my-api \
--power small --scale 1
$ aws lightsail create-container-service-deployment \
--service-name my-api \
--containers '{"my-api":{"image":"my-registry/my-api:latest","ports":{"8080":"HTTP"}}}' \
--public-endpoint '{"containerName":"my-api","containerPort":8080}'
A imagem precisa vir de um registry público (por exemplo, o Docker Hub) ou ser enviada ao registry do próprio serviço com aws lightsail push-container-image; o Lightsail passa então a se referir a ela como :my-api.<label>.<version>.
Limitações de rede do Lightsail
O Lightsail não usa a rede VPC padrão da AWS. Cada container service tem um endpoint público e um domínio privado, <service-name>.service.local, acessível apenas a partir de outros recursos do Lightsail na mesma Region — assim, o gateway da loja pode ser público enquanto account e order são acessados como account.service.local:8080. Alcançar uma instância RDS em uma VPC normal exige Lightsail VPC peering com a VPC padrão da conta — um passo extra de configuração que muitos tutoriais pulam. Não há security groups, service mesh nem políticas de rede granulares.
Amazon ECS Express Mode (sucessor do App Runner)
O ECS Express Mode (lançado em novembro de 20253) mantém a simplicidade do App Runner — "entra uma imagem, sai uma URL HTTPS" —, mas tudo o que ele cria é um recurso ECS comum na sua própria conta. Com uma única chamada, você fornece uma imagem de container e duas roles IAM; o ECS provisiona um serviço Fargate, um Application Load Balancer com HTTPS, auto scaling, security groups e uma URL padrão2. Não há cobrança extra pelo Express Mode — você paga pelas tasks Fargate, pelo balanceador de carga e pelos demais recursos subjacentes.
aws ecs create-express-gateway-service \
--service-name order-service \
--execution-role-arn arn:aws:iam::123456789012:role/ecsTaskExecutionRole \
--infrastructure-role-arn arn:aws:iam::123456789012:role/ecsInfrastructureRoleForExpressServices \
--primary-container '{
"image": "123456789012.dkr.ecr.us-east-1.amazonaws.com/order:1.0",
"containerPort": 8080,
"environment": [{"name": "SPRING_PROFILES_ACTIVE", "value": "prod"}]
}' \
--health-check-path "/actuator/health" \
--scaling-target '{"minTaskCount":1,"maxTaskCount":4}'
- Só imagem. Ao contrário do App Runner, o Express Mode não faz build a partir do código-fonte: seu CI precisa construir a imagem e enviá-la ao ECR — exatamente o que o pipeline Jenkins do Hands-on 4 faz.
- Balanceador de carga compartilhado. Vários serviços Express (até 25) podem compartilhar um ALB, com roteamento baseado em regras mantendo-os isolados3 — útil para a loja, que tem vários serviços pequenos.
- Sem beco sem saída. Como o ALB, os target groups e as task definitions ficam visíveis na sua conta, "se formar" para o ECS Fargate completo significa editar esses recursos, não migrar.
Acessando o RDS
As tasks rodam em subnets da sua VPC, então alcançar uma instância RDS é questão de regras de security group (liberar o security group da task na porta 5432) — sem conector especial. O App Runner, ao contrário, rodava em uma VPC gerenciada pela AWS e precisava de um VPC Connector para alcançar recursos privados.
Railway
O Railway oferece a experiência de desenvolvedor mais simples do ecossistema: conecte um repositório do GitHub, e o Railway detecta a linguagem e o framework, faz o build e o deploy automaticamente. A cobrança é por uso (por vCPU e GB de memória efetivamente usados, por segundo), além de uma pequena taxa mensal de plano que conta como crédito de uso6.
O que o Railway oferece de fábrica:
- HTTPS automático com domínios personalizados
- Postgres, Redis e MongoDB integrados como serviços add-on
- Deploy a cada push — sem precisar de pipeline de CI/CD no início
- Rede privada entre os serviços do mesmo projeto (
<service>.railway.internal), de modo que só o gateway precisa de um domínio público - Dashboard com logs, métricas e gerenciamento de variáveis de ambiente
Trade-offs do Railway em escala
O Railway dá muito pouco controle sobre a rede — você não pode projetar VPCs, subnets nem equivalentes a security groups, apenas escolher quais serviços recebem um domínio público. Também não há ecossistema Kubernetes (nada de Helm, CRDs ou ferramentas de GitOps). O vendor lock-in vira um risco real quando você passa de 10–15 serviços e tem requisitos complexos de rede entre serviços.
Fly.io
O Fly.io roda containers como VMs leves (Machines) em servidores em regiões ao redor do mundo, perto dos seus usuários. Um arquivo de configuração fly.toml define a aplicação; fly deploy faz o build e o deploy7.
app = "my-order-service"
primary_region = "gru" # São Paulo
[build]
dockerfile = "Dockerfile"
[http_service]
internal_port = 8080
force_https = true
[env]
SPRING_PROFILES_ACTIVE = "prod"
Ponto forte: o Fly.io coloca seus containers em regiões próximas dos seus usuários. Um usuário em São Paulo alcança gru em poucos milissegundos, contra mais de 100 ms de ida e volta até uma região US East. Adicionar regiões é um único comando — fly scale count 3 --region gru,iad,lhr — e o roteamento Anycast do Fly envia cada usuário para a Machine mais próxima. Apps da mesma organização conversam por uma rede privada (<app>.internal).
Ponto fraco: serviços com estado são mais complexos do que na AWS. O Fly Postgres clássico é uma app que você mesmo opera (backups, failover, upgrades); o mais recente Managed Postgres elimina esse trabalho, mas começa em um preço fixo maior que o processamento de uma app pequena7. Não há free tier para novas organizações, apenas um curto período de teste.
4. Alternativas de Kubernetes para orquestração
Se você quer os recursos do Kubernetes, mas não o custo nem a complexidade do EKS, vale conhecer estas distribuições. Todas expõem a mesma API do Kubernetes, então os manifestos do Hands-on 5 rodam sem alterações:
Minikube — Roda o Kubernetes upstream em uma VM ou container no seu laptop, com um único nó por padrão e add-ons (ingress, dashboard, metrics-server). É o ambiente do Hands-on 5 e do exercício de MiniKube — feito para aprendizado e desenvolvimento local, não para produção.
K3s — Kubernetes leve e certificado pela CNCF (um único binário com menos de 100 MB), criado originalmente pela Rancher, hoje SUSE8. Implementa a mesma API do Kubernetes upstream, usa SQLite em vez de etcd por padrão em um único servidor (etcd embutido para HA) e já vem com o Traefik como ingress. Ideal para deploys on-premises, dispositivos de borda e pequenos clusters de produção em uma ou poucas VMs.
K0s — Kubernetes "zero-friction" da Mirantis. Um único binário sem dependências no host além do kernel; ele empacota e gerencia seus próprios componentes de control plane (etcd, ou kine com SQLite/MySQL/Postgres). Escolha comum para produção on-premises quando se prefere uma distribuição mínima e sem customizações.
Kind (Kubernetes in Docker) — Roda cada nó do Kubernetes como um container Docker. Criado para testar o próprio Kubernetes, hoje é a escolha padrão para testes de integração em CI e para validar manifestos antes de enviá-los a um cluster real.
| Minikube | K3s | K0s | Kind | |
|---|---|---|---|---|
| Caso de uso | Dev local | Produção on-prem / borda | Produção on-prem | Testes de CI/CD |
| API completa do K8s | ✓ | ✓ | ✓ | ✓ |
| Nível de produção | ✗ | ✓ | ✓ | ✗ |
| Requisitos de recursos | Médios | Muito baixos | Muito baixos | Baixos |
Auto-hospedar transfere o trabalho, não só o custo
K3s em uma VM de US$ 24 dá a você a API do Kubernetes por uma fração do preço do EKS (seção 5), mas agora o control plane é seu: uma única VM é um ponto único de falha, e upgrades, backups do datastore e certificados passam a ser responsabilidade sua.
5. Comparação de custos
Quanto custa rodar os três microsserviços da loja (gateway, account, order) mais um pequeno banco Postgres em cada plataforma? A tabela e o gráfico abaixo são gerados a partir de um único modelo de custos: uma lista de preços unitários e, para cada plataforma, uma configuração low (baixa) e outra high (alta) montadas a partir desses preços. Mude um preço no código e os dois se atualizam juntos.
Premissas — leia antes de citar um número
- Preços de tabela on-demand aproximados em USD, na região americana mais barata (AWS
us-east-1N. Virginia, Fly.ioiad), conferidos em outubro de 202614567. Preços mudam; confirme na AWS Pricing Calculator e na página de cada provedor. - Tudo roda 24/7 (730 horas por mês) com tráfego moderado.
- Não incluídos: transferência de dados de saída, armazenamento de logs e métricas, nomes de domínio, impostos, free tiers e créditos.
- São Paulo é mais caro. Os preços de tabela de
sa-east-1são bem mais altos que os deus-east-1na maioria dos serviços, e o Fly.io também cobra mais emgru. Use a sua região real ao fazer a estimativa.
| Platform | Low | High | Low estimate assumes | High estimate assumes |
|---|---|---|---|---|
| Railway (Hobby) | $19 | $60 | 3 services + Postgres, ~0.2 vCPU / 1.5 GB used in total ($19) | 3 services + Postgres, ~1 vCPU / 4 GB used in total ($60) |
| Fly.io | $15 | $61 | 3 machines shared-1x 512 MB ($11) + self-run Postgres machine + 1 GB volume ($4) | 3 machines shared-1x 1 GB ($20) + Managed Postgres Basic + 10 GB ($41) |
| Lightsail | $24 | $60 | one 4 GB instance running Docker Compose (Postgres in a container) ($24) | 3 container services (Small) ($45) + managed database ($15) |
| K3s on one VM | $24 | $59 | Lightsail 4 GB instance, Postgres as a pod ($24) | Lightsail 8 GB instance ($44) + managed database ($15) |
| ECS Fargate (or Express Mode) | $71 | $196 | 3 tasks 0.25 vCPU / 0.5 GB ($27) + ALB ($30) + RDS db.t4g.micro ($14) | 3 tasks 1 vCPU / 2 GB ($108) + ALB ($30) + RDS db.t4g.small ($26) + NAT gateway ($33) |
| EKS | $180 | $350 | control plane ($73) + 2 × t3.medium nodes ($61) + EBS 2 × 20 GB ($3) + ALB ($30) + RDS db.t4g.micro ($14) | control plane ($73) + 3 × t3.large nodes ($182) + EBS 3 × 30 GB ($7) + ALB ($30) + RDS db.t4g.small ($26) + NAT gateway ($33) |
Lendo a estimativa: para onde vai o dinheiro
Olhe para as colunas de premissas (assumes) em vez dos totais. Nesta escala, a conta é dominada por custos fixos que existem mesmo com tráfego zero:
| Item | Aprox. por mês | Por que aparece |
|---|---|---|
| Control plane do EKS | US$ 73 por cluster | US$ 0,10/hora pelo API server, scheduler e etcd gerenciados1 |
| Application Load Balancer | ~US$ 30 | Taxa por hora + unidades de capacidade + seus endereços IPv4 públicos |
| NAT gateway | ~US$ 33 + dados | Permite que tasks ou nós em subnets privadas alcancem a internet (ECR, APIs externas) |
| Endereço IPv4 público | ~US$ 3,65 cada | A AWS cobra todo endereço IPv4 público desde fevereiro de 202410 |
| Menor instância RDS | ~US$ 14 | db.t4g.micro + 20 GB de armazenamento, single-AZ (Multi-AZ dobra o valor) |
O processamento de três pequenos serviços Spring Boot costuma ser a menor linha. É por isso que uma plataforma com taxa fixa de control plane perde com três serviços e ganha com cinquenta: o custo fixo é dividido entre mais workloads. É também por isso que "um cluster EKS por ambiente" (dev, staging, prod) triplica a parte fixa da conta.
Proteja sua conta AWS
Crie um AWS Budget com alerta por e-mail antes de criar um cluster, marque cada recurso com uma tag com o nome do projeto e apague NAT gateways, balanceadores de carga e clusters quando parar de trabalhar — eles são cobrados por hora, usados ou não. A atividade de Custos do projeto pede exatamente esta análise.
6. Exemplo: a loja em cada estágio
Os mesmos quatro componentes, implantados nas três plataformas do caminho de migração abaixo:
| Componente da loja | Dia 1 — Railway | Ano 1 — ECS Fargate | Ano 2+ — EKS |
|---|---|---|---|
| gateway | Serviço com domínio público | Serviço ECS atrás do ALB (o Express Mode o cria) | Deployment + Service, exposto por um Ingress (AWS Load Balancer Controller) |
| account, order | Serviços na rede privada (account.railway.internal) | Serviços ECS descobertos via Service Connect / Cloud Map | Deployments + Services ClusterIP (como no Hands-on 5) |
| Postgres | Add-on Postgres do Railway | RDS, acessado por regras de security group | RDS, credenciais sincronizadas pelo External Secrets |
| Deploy | git push para main | CI faz o build da imagem → ECR → nova task definition | CI faz o build da imagem → ECR → ArgoCD sincroniza os manifestos a partir do Git |
O código da aplicação não muda entre as três colunas: o estilo 12-factor (configuração em variáveis de ambiente, serviços stateless, estado no Postgres) é o que faz de cada migração um exercício de deploy, e não uma reescrita.
7. Caminho de migração
A resposta certa muda à medida que você cresce
Comece simples e migre de forma deliberada. Cada migração deve ser motivada por um problema concreto, não por especulação sobre a escala futura. Uma app funcionando no Railway vale mais do que um cluster EKS perfeitamente arquitetado e sem usuários.
flowchart TD
start(["Ideia / Protótipo"])
r["Railway / Fly.io<br/>(Dia 1 — lançar rápido)"]
ex["ECS Express Mode<br/>(Mês 3 — nativo da AWS, stateless)"]
ecs["ECS Fargate, controle total<br/>(Ano 1 — produção)"]
eks["AWS EKS<br/>(Ano 2+ — escala, time cresce)"]
start --> r
r -->|"Precisa de serviços AWS<br/>ou compliance"| ex
ex -->|"Precisa de sidecars, serviços<br/>privados, controle fino"| ecs
ecs -->|"Vários times, 50+ serviços,<br/>GitOps obrigatório"| eks
style r fill:#4CAF50,color:#fff
style ex fill:#FF9800,color:#fff
style ecs fill:#FF5722,color:#fff
style eks fill:#F44336,color:#fff Observe que o passo do Express Mode para o ECS Fargate "completo" nem é uma migração: o Express Mode é ECS, então você simplesmente passa a editar as task definitions, as regras do balanceador de carga e a rede que ele criou.
Evite a otimização prematura
O custo de migrar do Railway para o ECS com 20 serviços é de algumas semanas de trabalho de engenharia focado. O custo de operar EKS em uma startup de 3 pessoas por um ano é de 40+ horas de trabalho de operação de plataforma que não entregam nenhuma funcionalidade ao usuário. Comece simples. Migre quando o problema for real, mensurável e não houver solução mais barata.
Outras armadilhas comuns
- Recursos esquecidos. Um cluster EKS de teste, um NAT gateway ou um balanceador de carga ligado durante um feriado é a clássica conta-surpresa de aluno. Configure um alerta de orçamento primeiro.
- Passos de rede escondidos. O Lightsail precisa de VPC peering para alcançar o RDS; no ECS e no EKS, uma regra de security group faltando aparece como um "connection timed out" no serviço.
- Citar preços sem premissas. Um número de custo sem região, data, dimensionamento e horas por mês não pode ser comparado nem conferido.
- Apostar em um único produto gerenciado. O fechamento do App Runner para novos clientes mostra que as plataformas mais simples podem mudar debaixo de você; mantenha a aplicação portável (containers, variáveis de ambiente, Postgres).
Pontos-chave
- Kubernetes não é o padrão: escolha a plataforma por tamanho do time, quantidade de serviços e maturidade operacional.
- Há dois caminhos: experiência do desenvolvedor (Railway/Render → Fly.io → Lightsail) e nativo da AWS (ECS Express Mode → ECS Fargate → EKS → EC2 puro), cada um trocando simplicidade por controle.
- Em pequena escala, custos fixos (control plane do EKS ~US$ 73, ALB ~US$ 30, NAT ~US$ 33) dominam a conta; apresente toda estimativa com região, data e dimensionamento.
- Times pequenos: Railway, Render, Fly.io, Lightsail ou ECS Express Mode. Times médios: ECS Fargate. Times grandes: EKS com Karpenter/Auto Mode, ArgoCD, o Load Balancer Controller e o External Secrets.
- K3s, K0s, Kind e Minikube dão a API do Kubernetes sem o EKS — e entregam a você a operação do control plane.
- Migre por problema concreto, mantenha a aplicação portável e nunca suponha que um produto gerenciado vai existir para sempre (App Runner).
Conexões
- Modelos de serviço — o vocabulário IaaS / PaaS / CaaS usado aqui.
- Containerização — as imagens que todas as plataformas desta aula implantam.
- Hands-on 4 — DevOps — o pipeline que faz o build e envia as imagens.
- Hands-on 5 — Orquestração e o exercício de MiniKube — a API do Kubernetes que EKS, K3s e Kind expõem.
- Confiabilidade — o que você perde quando a loja inteira roda em uma única VM.
- Projeto: AWS, EKS e Custos e PaaS.
-
Amazon EKS pricing — US$ 0,10 por cluster por hora com suporte padrão de versão do Kubernetes (US$ 0,60 com suporte estendido); o Auto Mode acrescenta uma taxa de gerenciamento por instância. ↩↩↩↩
-
AWS App Runner availability change — fechamento para novos clientes e guia de migração para o ECS Express Mode. ↩↩
-
Announcing Amazon ECS Express Mode, AWS What's New, novembro de 2025. ↩↩
-
New — AWS Public IPv4 Address Charge, AWS News Blog, 2023. ↩