Escalando Containers
Réplicas no Docker Compose
Escalando servicos com Docker Compose e validando distribuicao.
Nesta aula você vai
- Configurar multiplas replicas de servicos stateless no Compose
- Evitar conflito de portas e estado compartilhado incorreto
- Validar distribuicao de requisicoes e eventos entre replicas
Réplicas no Docker Compose
Objetivos
- Configurar múltiplas réplicas de serviços stateless no Compose
- Ajustar portas e resolução interna sem conflito
- Validar distribuição de requisições e consumo
Pré-requisitos
- Aula
escala-horizontal-verticalconcluida. - Servicos sem dependencia de estado local em disco.
- Logs centralizados por container ativos.
Conceito
Docker Compose permite testar escala horizontal no ambiente local, simulando comportamento que depois vai para Kubernetes ou ECS.
Para servicos replicados, evite mapear mesma porta fixa no host e garanta que o balanceamento ocorra pelo nome do servico na rede interna.
Estrutura de arquivos
infra/docker-compose.scale.ymldocker-compose.ymlinfra/nginx/nginx.confservices/payment-service/internal/http/server.go
Passo a passo com codigo
- Defina servico sem porta fixa por replica:
payment-service:
build: ./services/payment-service
expose:
- "8080"
networks:
- backend
- Escale via comando:
docker compose up -d --scale payment-service=3
- Configure Nginx para upstream interno:
upstream payment_upstream {
server payment-service:8080;
}
- Adicione identificador de instancia em resposta/metricas:
c.JSON(http.StatusOK, gin.H{
"service": "payment",
"instance": os.Getenv("HOSTNAME"),
})
Como testar
- Rode
curlrepetido no endpoint de health via gateway. - Confirme alternancia do campo
instance. - Gere carga e monitore CPU/memoria por replica.
- Pare uma replica e valide continuidade do servico.
Dicas
- Use
exposepara comunicacao interna entre containers. - Adicione
healthcheckem todo servico replicado. - Evite arquivo temporario local como dependencia funcional.
- Monitore erro por instancia para detectar replica ruim.
Erros comuns
- Conflito de portas expostas no host
- Dependência de estado local dentro de serviço replicado
- Não ajustar limites de recursos por container
- Ignorar monitoramento de erros por instância
Resumo
Replicas no Docker Compose ajudam a validar concorrencia, roteamento e resiliancia localmente, antecipando problemas antes de subir para um orquestrador de producao.