Arquitetura de software · Escala e desempenho · 7 min de leitura
Containers e Kubernetes: o que são e quando valem a pena
Containers empacotam a aplicação com suas dependências; o Kubernetes decide onde rodá-los, reinicia o que cai e escala conforme a carga.
Arraste para o lado para ver o diagrama inteiro.
Containers
Um container é um processo isolado que carrega a aplicação e tudo de que ela precisa (bibliotecas, runtime) numa imagem imutável. Roda igual no notebook, no CI e em produção. É mais leve que uma máquina virtual porque compartilha o kernel do sistema.
Kubernetes em uma página
- Pod: a menor unidade — um ou mais containers juntos.
- Deployment: quantas réplicas e qual versão; faz atualizações graduais e rollback.
- Service / Ingress: um endereço estável que distribui o tráfego entre os pods.
- ConfigMap / Secret: configuração e segredos fora da imagem.
- Autoescala: mais pods com mais CPU ou fila; mais nós quando faltam recursos.
Tudo é declarativo: você descreve o estado desejado e os controladores corrigem as diferenças (reconciliação).
Quando não usar
Kubernetes tem custo de operação real: rede, armazenamento, segurança, atualizações do cluster. Para um app pequeno, um serviço gerenciado de containers (ou uma plataforma como serviço) entrega deploy, escala e HTTPS sem administrar o cluster. Ele brilha com muitos serviços, equipes e necessidade de portabilidade entre nuvens.
Em resumo
- Container = imagem imutável e portátil.
- Kubernetes reconcilia o estado desejado.
- Deployment, Service e autoescala são o núcleo.
- Para apps pequenos, plataformas gerenciadas bastam.
Vantagens e custos
- Auto-recuperação e escala
- Deploys graduais e rollback
- Portável entre nuvens
- Curva de aprendizado alta
- Custo operacional
- Exagero para poucos serviços