Nuvem privada ou pública: quando cada uma faz sentido
Não existe resposta única. Um framework simples para decidir com base em custo, dados críticos e previsibilidade.
Novo: Eficify One em beta aberto. Crie seu primeiro ambiente sem cartão.Conhecer a plataforma →

A maioria dos times de engenharia toma a decisão errada sobre orquestração de containers no primeiro projeto. Não por falta de informação, mas por seguir o hype: "todo mundo está migrando para Kubernetes, então devemos fazer o mesmo". O resultado é uma infraestrutura sobrevendida que consome 3x mais tempo operacional do que a alternativa correta teria exigido. Vou mostrar exatamente quando usar cada ferramenta, com critérios objetivos e exemplos de configuração real.
O debate entre Docker Compose, Swarm e Kubernetes raramente começa com a pergunta certa. Times avançam para Kubernetes porque "é o padrão da indústria", sem avaliar se o problema deles realmente precisa dessa complexidade. Outros ficam presos no Compose achando que "já resolve" quando já estão em produção com 15 serviços e zero resiliência.
A decisão correta depende de três variáveis: escala de infraestrutura, complexidade operacional suportável e maturidade do time para manter o sistema.
flowchart TD
subgraph Estagio1
direction TB
I1["🔧 Desenvolvimento Local"]
DC["🐳 Docker Compose\nOrquestração Simples"]
I1 --> DC
end
subgraph Decisao1
D1{Escala\nNecessária?}
end
subgraph Estagio2
direction TB
I2["📦 Múltiplos Containers"]
SW["🐝 Docker Swarm\nOrquestração Média"]
LB["⚖️ Balanceador de Carga"]
RP["🔄 Réplicas Ativas"]
I2 --> SW
SW --> LB
SW --> RP
end
subgraph Decisao2
D2{Produção\nEnterprise?}
end
subgraph Estagio3
direction TB
I3["🌐 Alta Disponibilidade"]
K8s["☸️ Kubernetes\nOrquestração Avançada"]
ND["🖥️ Múltiplos Nós"]
CL["📂 Clusters"]
NS["📦 Namespaces"]
I3 --> K8s
K8s --> ND
K8s --> CL
K8s --> NS
end
DC --> D1
D1 -->|Sim| I2
D1 -->|Não| I1
RP --> D2
D2 -->|Sim| I3
D2 -->|Não| SW
style Estagio1 fill:#1a365d,stroke:#2b6cb0,stroke-width:2px,color:#fff
style Estagio2 fill:#1a365d,stroke:#2b6cb0,stroke-width:2px,color:#fff
style Estagio3 fill:#1a365d,stroke:#2b6cb0,stroke-width:2px,color:#fff
style Decisao1 fill:#2c5282,stroke:#4299e1,stroke-width:2px,color:#fff
style Decisao2 fill:#2c5282,stroke:#4299e1,stroke-width:2px,color:#fff
style DC fill:#2b6cb0,stroke:#63b3ed,stroke-width:2px,color:#fff
style SW fill:#2b6cb0,stroke:#63b3ed,stroke-width:2px,color:#fff
style K8s fill:#2b6cb0,stroke:#63b3ed,stroke-width:2px,color:#fff
style I1 fill:#3182ce,stroke:#90cdf4,stroke-width:1px,color:#fff
style I2 fill:#3182ce,stroke:#90cdf4,stroke-width:1px,color:#fff
style I3 fill:#3182ce,stroke:#90cdf4,stroke-width:1px,color:#fff
style LB fill:#3182ce,stroke:#90cdf4,stroke-width:1px,color:#fff
style RP fill:#3182ce,stroke:#90cdf4,stroke-width:1px,color:#fff
style ND fill:#3182ce,stroke:#90cdf4,stroke-width:1px,color:#fff
style CL fill:#3182ce,stroke:#90cdf4,stroke-width:1px,color:#fff
style NS fill:#3182ce,stroke:#90cdf4,stroke-width:1px,color:#fff
style D1 fill:#4a5568,stroke:#a0aec0,stroke-width:2px,color:#fff
style D2 fill:#4a5568,stroke:#a0aec0,stroke-width:2px,color:#fffDocker Compose brilha em desenvolvimento local e em produção de baixíssima complexidade. Um ou dois serviços, deploys manuais, sem necessidade de rollbacks automatizados, sem múltiplas regiões. Se isso descreve sua realidade atual, Compose com docker compose up -d resolve.
A armadilha: Compose não tem orquestração real. Não há load balancing interno, não há healing automático, não há gerenciamento de volumes compartilhados entre hosts. Quando seu serviço precisa escalar para duas instâncias e você sobe outro container manualmente, está no caminho para o caos.
version: '3.8'
services:
api:
image: minha-api:latest
ports:
- "3000:3000"
environment:
- NODE_ENV=production
restart: unless-stopped
# Sem replicas: um ponto único de falha em produção
Compose não tem replica count. Se o container morrer, nada sobe automaticamente. Para produção real, você precisa de pelo menos um supervisor que monitore e recicle. Compose não faz isso.
Docker Swarm é o primo ignorado do ecossistema Docker. Estável, simples de operar, integrado nativamente ao Docker e capaz de coisas que muitos times não sabem que precisam.
Swarm te dá de graça:
version: '3.8'
services:
api:
image: minha-api:latest
ports:
- "3000:3000"
environment:
- NODE_ENV=production
# Réplicas reais com healing automático
replicas: 3
update_config:
parallelism: 1
delay: 10s
failure_action: rollback
restart_policy:
condition: on-failure
max_attempts: 3
deploy:
resources:
limits:
cpus: '0.5'
memory: 512M
reservations:
cpus: '0.25'
memory: 256M
Com esse arquivo, docker stack deploy -c docker-compose.yml minha-app sobe 3 réplicas, distribui entre os nodes disponíveis, faz load balancing e permite updates graduais. Zero configuração externa.
Quando Swarm é suficiente: uma equipe de 1 a 5 engenheiros, menos de 50 serviços, uma ou duas regiões, sem necessidade de políticas complexas de rede ou storage customizado. Times que precisam de resultados rápidos sem operar um plano de controle sofisticado.
Kubernetes é extraordinário. Também é operacionalmente caro de um jeito que não aparece na conta do cloud provider.
Para um cluster Kubernetes funcional em produção, você precisa de:
Um time de 3 engenheiros que migra para Kubernetes vai perder entre 30% e 50% da capacidade de entrega de features durante os primeiros 6 meses. Isso é quantificável. Se sua empresa está em modo de crescimento acelerado, esse custo pode ser mais caro que o benefício.
Se você tem 8 serviços stateless, uma equipe de 3 pessoas e um budget apertado, Kubernetes é overengineering. EKS/GKE vão cobrar pelo cluster. Você vai pagar em tempo de engenharia para configurá-lo. E vai pagar novamente quando algo quebrar às 2h da manhã e ninguém souber debugar.
| Critério | Compose | Swarm | Kubernetes |
|---|---|---|---|
| Curva de aprendizado | Horas | Dias | Semanas a meses |
| Réplicas automáticas | Não | Sim | Sim |
| Load balancing | Manual (porta única) | Nativo | Nativo |
| Secret management | Variáveis de ambiente | Nativo (criptografado) | Nativo + vault |
| Atualização gradual | Manual | Nativa (rollback) | Nativa (estratégias) |
| Multi-node nativamente | Não | Sim | Sim |
| Service mesh integrado | Não | Não | Não (adiciona Istio/linkerd) |
| Complexidade operacional | Baixa | Média | Alta |
| Custo cloud adicional | Zero | Zero | $70-150+/mês cluster |
| Adequado para prod com 1-2 devs | Arriscado | Sim | Arriscado |
Antes de decidir, responda com honestidade:
O fluxo ideal para a maioria dos times:
Fase 1 (0 a 20 serviços): Compose para desenvolvimento, Swarm para produção simples. Simples, operável por qualquer engenheiro.
Fase 2 (20 a 50 serviços, 2+ engenheiros de plataforma): Swarm com compose files versionados, monitoring com Prometheus, logs centralizados. Avaliem Kubernetes como opção, mas não migrem só porque sim.
Fase 3 (50+ serviços, múltiplas equipes, requisitos de compliance): Kubernetes com GitOps (ArgoCD ou Flux), service mesh, políticas de rede rigorosas. Aqui ele paga o custo.
O erro mais caro que vejo é pular direto da Fase 1 para a Fase 3 porque o CTO leu um artigo sobre como empresas-grandes usam Kubernetes. A resposta correta para seu contexto provavelmente é simples. Swarm não é falta de sofisticação. É sofisticação apropriada.
Adote complexidade quando o custo de não ter essa complexidade superar o custo de operá-la. Na maioria dos casos, esse momento não chega tão cedo quanto você pensa.
Se sua equipe está avaliando migrar para Kubernetes ou já opera em escala e enfrenta complexidade desnecessária, podemos mapear em 30 minutos onde estão os custos escondidos e o que realmente compensa no seu caso.
CONTINUE LENDO
Não existe resposta única. Um framework simples para decidir com base em custo, dados críticos e previsibilidade.
Diagnóstico, arquitetura, dados, testes, rollback e transição gradual. O caminho para migrar um sistema crítico com a operação no ar e zero perda de dados.
Ter um especialista que resolve tudo parece uma vantagem. Quase sempre é um passivo escondido. Os custos que não aparecem no balanço quando a empresa depende de poucas pessoas-chave, e como reduzi-los sem perder talento.
VAMOS CONVERSAR
Conte seu cenário e receba um diagnóstico da sua infraestrutura na nuvem, sem compromisso.
Falar sobre minha cloud