O caso
A Black Friday chegou antes da hora. E cada servidor precisava de um sistema inteiro.
Na véspera da Black Friday, o Isaac precisava de mais instâncias do sistema de pedidos. Ele subiu VMs novas, instalou o sistema em cada uma e configurou o balanceador à mão. Quando o pico passou, ainda havia máquinas ligadas sem nenhum uso.
Os containers da loja já estavam prontos. Faltava uma forma de rodá-los sem cuidar de cada servidor.
Este post parte de Fundamentos da Nuvem, de Modelos de Serviço na Nuvem e de Containers: isolamento sem máquina virtual.
O problema
Escalar container com VM é trabalho manual
Um container resolve o empacotamento, mas não diz onde rodar, quantas cópias manter nem o que fazer quando uma cópia cai. Se a loja roda numa VM por instância, cada escala é um pedido novo, uma instalação e uma configuração.
Sem uma camada para isso, o time passa mais tempo administrando servidores do que melhorando a loja.
A solução
Serviços de containers
Um serviço de containers (Containers as a Service, ou CaaS) fica entre a VM e a plataforma: você entrega a imagem e a configuração, e o provedor cuida do servidor. Há duas formas principais.
- Containers sem servidor (serverless containers): você não escolhe nem vê o servidor. O provedor cria o ambiente para cada container e cobra pelo tempo de CPU e de memória usado. Alguns escalam até zero quando não há tráfego.
- Orquestração gerenciada: você define quantas cópias quer, e um plano de controle (o Kubernetes) distribui, reinicia e escala os containers sobre um conjunto de nós.
Cada provedor tem os seus nomes: Cloud Run no Google Cloud, AWS Fargate na AWS, Azure Container Apps no Azure e OCI Container Instances na Oracle Cloud.
Sem servidor
Você entrega a imagem e recebe uma URL. Sem escolher máquina e sem atualizar sistema operacional.
Na loja: a API de pedidos sobe em segundos quando chegam clientes, e some quando eles saem.
Orquestração
O Kubernetes mantém o número de cópias que você definiu e substitui as que falham.
Na loja: se uma cópia do sistema de pedidos cai, outra é iniciada sem intervenção do Isaac.
Escala automática
O número de cópias acompanha a carga, para cima e para baixo.
Na loja: a Black Friday ganha cópias extras, e elas são devolvidas depois do pico.
Cobrança pelo uso
Você paga pelos recursos que os containers consomem enquanto rodam.
Na loja: as cópias ociosas não geram custo de máquina parada.
Não confunda
Containers × serviços gerenciados
Serviço de containers sem servidor
“Quero só entregar o container e receber uma URL, sem administrar nada?”
- Exemplo
- A API de pedidos da loja, que escala com o tráfego.
- Foco
- Menos administração. Você controla a imagem e a configuração.
Orquestração (Kubernetes)
“Preciso de muitos serviços, com regras complexas de rede e de implantação?”
- Exemplo
- Dez serviços da loja, cada um com suas réplicas e suas regras de comunicação.
- Foco
- Mais controle e mais complexidade. Você define a configuração de cada peça.
Por baixo
Orquestração com Kubernetes
O Kubernetes é o sistema de orquestração mais usado. Você descreve o estado desejado, por exemplo "três cópias da API de pedidos, com 512 MB cada", e ele faz o que for preciso para chegar lá: escolhe em que nó cada cópia roda, reinicia as que falham e troca versões aos poucos.
Os provedores oferecem o plano de controle gerenciado: Google Kubernetes Engine (GKE) no Google Cloud, Amazon EKS na AWS, Azure Kubernetes Service (AKS) no Azure e Oracle Kubernetes Engine (OKE) na Oracle Cloud. Mesmo assim, é preciso entender as peças: cópias, serviços, configurações e regras de rede.
Imagens
Registro de imagens
Toda imagem usada na nuvem fica num registro. O servidor (ou o serviço) baixa a imagem de lá quando precisa iniciar um container. Cada provedor tem o seu: Artifact Registry no Google Cloud, Amazon ECR na AWS, Azure Container Registry no Azure e OCI Container Registry na Oracle Cloud.
Quem controla o registro controla o que pode rodar em produção. Por isso, o acesso ao registro segue as mesmas regras de identidade e de permissão do resto da nuvem, como vimos em Segurança e responsabilidade compartilhada.
Na prática
Escolher o caminho
| Situação | Escolha |
|---|---|
| Uma API que escala com o tráfego, sem equipe de infraestrutura | Serviço de containers sem servidor |
| Muitos serviços que se comunicam, com regras de rede próprias | Orquestração gerenciada |
| Carga constante e previsível, com controle total das máquinas | VMs, com containers dentro, se preciso |
| Uma imagem que precisa ficar disponível para várias regiões | Registro com replicação entre regiões |
Termos-chave
Seis termos para recordar
Toque no cartão para ver a definição.
Teste rápido
Três perguntas, estilo prova
01
A equipe quer rodar uma API em containers, sem administrar servidores nem o Kubernetes. Qual opção atende?
02
Onde ficam guardadas as imagens que a loja usa em produção?
03
Um serviço de containers tem muitas instâncias na Black Friday e poucas no resto do ano. Qual característica reduz o custo fora do pico?
Containers na nuvem tiram do time a parte mais repetitiva: escolher servidores, instalar sistemas e reagir a cada pico. O que sobra é decidir o tamanho das cópias, o limite de escala e quem pode publicar imagens. Para a loja, isso significa subir a API na Black Friday sem uma tarde de configuração, e devolver os recursos quando o pico passa.