Pular para o conteúdo

Disponível para propostasGoiânia ou remoto

jnogxavier
Voltar aos casos

Esteira de entrega compartilhada

Entrega contínua

O que deveria acontecer

Um conjunto pequeno de templates define como todo serviço é construído, testado e publicado, e cada serviço só declara o que o distingue.

O que acontecia

Cada serviço carregava o próprio pipeline, escrito e versionado junto do código. Com o tempo viraram arquivos quase iguais que divergiam em detalhes, sem cache e sem dono. Subir um serviço novo significava copiar o pipeline de outro e ajustar na mão.

O que eu fiz

Os pipelines passaram a vir de templates compartilhados, com build em estágios e cache. Perdi flexibilidade: quem precisa de algo fora do padrão abre uma exceção declarada, e ela aparece no diff. Os agentes de build também foram separados em pools por tipo de serviço, para que a esteira de um grupo não ficasse esperando a de outro.

Antesserviço Aserviço Bserviço Cpipeline Apipeline Bpipeline Cproduçãoarquivos quase iguais, sem cacheDepoisserviço Aserviço Bserviço Ctemplatescache compartilhadoprodução
Todo serviço passa pelo mesmo caminho, e o cache deixa de ser decisão de cada time.

O que isso destravou

  • Cada pipeline passou a rodar em menos tempo. Quem abre um commit espera menos para saber se ele passou, e o agente fica livre mais cedo para o próximo.
  • Publicar um serviço ficou mais rápido. O serviço novo já nasce com a esteira pronta, em vez de copiar o pipeline de outro time e ajustar na mão.
  • Com os agentes em pools separados, a disputa por agente diminuiu, e a esteira de um grupo deixou de travar a de outro.
  • Melhorar a esteira virou uma mudança em um template, em vez de uma mudança em muitos arquivos.

O que eu faria diferente

Deixei a migração opcional tempo demais. Por semanas rodaram dois padrões ao mesmo tempo, o que é pior do que qualquer um dos dois sozinho. Hoje eu começaria pelos serviços mais barulhentos e migraria sem perguntar.