ANÚNCIO

~/questoes/devops

Qual é o principal motivo para migrar uma aplicação de Docker Compose para Kubernetes?

Responda, confira o feedback e use o resultado para orientar sua revisão.
Aula de referência Como Migrar do Docker Compose para Kubernetes
Para fixar

Por que migrar de Docker Compose para Kubernetes?

Conceito central

Docker Compose é ideal para desenvolvimento local com uma única máquina, mas Kubernetes foi projetado para ambientes de produção em escala empresarial. A migração se justifica quando sua aplicação precisa de alta disponibilidade, auto-scaling automático e gerenciamento distribuído em múltiplas máquinas.

Por que essa resposta faz sentido

Kubernetes oferece recursos avançados como alta disponibilidade (mantém a aplicação rodando mesmo com falhas), auto-scaling (aumenta ou diminui recursos automaticamente conforme a demanda) e gerenciamento de clusters distribuídos (coordena contêineres em várias máquinas). Docker Compose não oferece esses recursos em nível empresarial.

Armadilhas comuns

  • Confundir 'falta de funcionalidade' em Docker Compose com 'funcionalidade incorreta'. Docker Compose funciona bem para o que foi projetado (desenvolvimento local), mas não foi feito para auto-scaling e tolerância a falhas.
  • Acreditar que toda aplicação precisa de Kubernetes. Se sua aplicação é simples ou roda em uma única máquina, Docker Compose ou até Docker puro podem ser suficientes.
  • Pensar que Kubernetes é apenas uma versão melhorada do Docker Compose. Na verdade, são ferramentas completamente diferentes com propósitos diferentes - uma é para desenvolvimento, outra é um orquestrador empresarial completo.

Entenda as alternativas

A

Esta é a resposta correta. Kubernetes foi construído especificamente para resolver problemas de produção: mantém aplicações disponíveis mesmo durante falhas, escala automaticamente o número de réplicas conforme a carga de trabalho, e coordena tudo isso em um cluster de máquinas distribuídas. Docker Compose não possui esses recursos nativamente.

B

Isso é falso. Docker Compose suporta variáveis de ambiente normalmente através de arquivos .env e da chave environment nos serviços. A falta de suporte a variáveis não é um motivo válido para migração. O Kubernetes oferece mecanismos mais robustos (ConfigMaps e Secrets), mas não porque Docker Compose não suporte variáveis.

C

Isso é impreciso. Docker Compose não é mais caro que Kubernetes - ambos usam contêineres Docker. O custo sobe em Kubernetes porque você geralmente precisa de múltiplas máquinas (cluster) para aproveitar seus recursos. A razão real da migração é funcionalidade, não custo. Além disso, Docker Compose pode ser mantido em produção, embora não seja a melhor prática para aplicações críticas.

D

Essa afirmação é extremamente exagerada. Kubernetes não é a única forma de executar contêineres. Docker pode rodar contêineres sozinho, Docker Compose orquestra múltiplos contêineres, e existem outras plataformas como Docker Swarm, Nomad e OpenShift. Kubernetes é excelente para produção em escala, mas não é obrigatório.

Dica prática: Se você tem uma aplicação rodando em Docker Compose, pergunte-se: minha aplicação precisa rodar em múltiplas máquinas? Precisa auto-escalar conforme a demanda? Precisa se recuperar automaticamente de falhas? Se respondeu 'sim' a qualquer uma dessas perguntas, Kubernetes é o caminho. Se respondeu 'não', Docker Compose continua sendo uma excelente escolha.

Revise pensando: Quais são os três principais recursos que Kubernetes oferece e que Docker Compose não oferece nativamente para produção em escala?