Go — Cloud-native e produção

TL;DR

Galho 18 da trilha Go — por que Go é a linguagem nativa da era dos containers. 8 notas em 3 fases: o binário estático e cross-compilation (Iniciado); build flags/embed, imagens Docker mínimas, graceful shutdown e o contrato com Kubernetes (Adepto); secrets em produção e o pipeline do commit ao deploy (Magus). Ao fim, você empacota e opera um serviço Go como um sênior — imagem de poucos MB, shutdown limpo, probes honestas.

Docker, Kubernetes e Terraform são escritos em Go por um motivo: um binário autocontido de poucos MB é o cidadão perfeito de um container. Ver roadmap pro estado das notas.

Notas por fase

Iniciado — o artefato

  1. 01 - O binário estáticoCGO_ENABLED=0, static linking, por que Go é ideal para containers
  2. 02 - Cross-compilationGOOS/GOARCH, compilar para Linux/ARM de qualquer máquina

Adepto — empacotar e operar

  1. 03 - Build flags e versionamento-ldflags -X, -s -w, //go:embed para assets
  2. 04 - Docker — imagens mínimas — multi-stage, distroless e scratch, imagem de poucos MB
  3. 05 - Graceful shutdown — SIGINT/SIGTERM, srv.Shutdown(ctx), drenar in-flight
  4. 06 - Contrato com Kubernetes — liveness/readiness probes, config via env, 12-factor

Magus — produção de verdade

  1. 07 - Configuração e secrets em produção — env vs secrets montados, não logar segredos, reload
  2. 08 - Do commit ao deploy — CI-CD — vet/test-race/lint/build no CI, goreleaser, do PR ao cluster

Veja também

  • Trilha Go — índice geral (21 galhos + capstone)
  • Galho anterior: Runtime interno
  • Próximo galho: Segurança (galho 19) — crypto, TLS, validação e supply chain em código Go