Skip to content
Latchkey

O que é deploy com zero downtime?

O deploy com zero downtime é a prática de lançar uma nova versão de um serviço sem qualquer interrupção para os usuários - sem janela de manutenção, sem erros, sem requisições descartadas.

Os usuários esperam que o software esteja disponível 24 horas por dia, então derrubar o sistema para fazer deploy é cada vez mais inaceitável. O deploy com zero downtime alcança lançamentos contínuos ao manter sempre uma versão saudável atendendo o tráfego enquanto a nova é introduzida e verificada.

O que ele exige

O requisito essencial é que exista sempre uma versão funcional tratando as requisições. Em vez de parar a versão antiga e iniciar a nova, você sobe a nova versão ao lado da antiga, confirma que está saudável e só então direciona o tráfego para ela - assim os usuários nunca encontram uma lacuna.

Técnicas que o viabilizam

  • Rolling deployments que substituem instâncias em pequenos lotes de cada vez.
  • Blue-green deployments que alternam entre dois ambientes completos.
  • Canary releases que deslocam o tráfego gradualmente.
  • Load balancers que drenam as conexões antes de remover uma instância.

Health checks e drenagem de conexões

O zero downtime depende de saber quando uma nova instância está realmente pronta e de deixar uma antiga finalizar de forma graciosa. Os health checks bloqueiam o tráfego até que a nova versão consiga atendê-lo, e a drenagem de conexões permite que as requisições em andamento sejam concluídas antes que uma instância antiga seja removida, de modo que nenhuma requisição seja cortada.

A parte difícil: estado e schemas

Serviços stateless são fáceis de fazer deploy com zero downtime; bancos de dados e schemas são o desafio. As mudanças de schema precisam ser retrocompatíveis para que as versões antiga e nova possam coexistir durante o rollout. Técnicas como as migrações expand-and-contract permitem evoluir o schema sem nunca exigir um cutover sincronizado.

Por que isso importa

Além da satisfação dos usuários, o deploy com zero downtime é o que torna viável lançar com frequência. Se cada deploy significasse downtime, as equipes acumulariam mudanças e fariam deploy raramente. Deploys contínuos removem essa penalidade, viabilizando os lançamentos pequenos e frequentes dos quais uma boa entrega depende.

Principais conclusões

  • O deploy com zero downtime lança novas versões sem interrupção para os usuários.
  • Ele mantém uma versão saudável atendendo enquanto a nova é introduzida e verificada.
  • A parte difícil é evoluir estado e schemas de forma retrocompatível.

Guias relacionados