Escalando Containers

Réplicas no Docker Compose

Escalando servicos com Docker Compose e validando distribuicao.

Avançado 40 min 35 pontos Leitura 0%

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-vertical concluida.
  • 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.yml
  • docker-compose.yml
  • infra/nginx/nginx.conf
  • services/payment-service/internal/http/server.go

Passo a passo com codigo

  1. Defina servico sem porta fixa por replica:
payment-service:
  build: ./services/payment-service
  expose:
    - "8080"
  networks:
    - backend
  1. Escale via comando:
docker compose up -d --scale payment-service=3
  1. Configure Nginx para upstream interno:
upstream payment_upstream {
  server payment-service:8080;
}
  1. Adicione identificador de instancia em resposta/metricas:
c.JSON(http.StatusOK, gin.H{
  "service": "payment",
  "instance": os.Getenv("HOSTNAME"),
})

Como testar

  1. Rode curl repetido no endpoint de health via gateway.
  2. Confirme alternancia do campo instance.
  3. Gere carga e monitore CPU/memoria por replica.
  4. Pare uma replica e valide continuidade do servico.

Dicas

  • Use expose para comunicacao interna entre containers.
  • Adicione healthcheck em 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.