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çãoEscolha
Uma API que escala com o tráfego, sem equipe de infraestruturaServiço de containers sem servidor
Muitos serviços que se comunicam, com regras de rede própriasOrquestração gerenciada
Carga constante e previsível, com controle total das máquinasVMs, com containers dentro, se preciso
Uma imagem que precisa ficar disponível para várias regiõesRegistro com replicação entre regiões

Termos-chave

Seis termos para recordar

Toque no cartão para ver a definição.

FinanceiroArquitetura

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.