Deploy sem downtime
Zero downtime são quatro problemas separados dentro de um deploy: requisições em andamento, requisições que chegam durante a troca, jobs rodando e código antigo diante de um esquema novo. As lições acompanham uma aplicação publicada com Kamal, Puma e Solid Queue. Elas tratam de SIGTERM e SIGKILL, do período de tolerância do Docker, do exec no entrypoint, do shutdown_timeout do Solid Queue, de jobs idempotentes apoiados em índices únicos, de JavaScript desatualizado em navegadores abertos, do rastreamento de assets do Turbo e de uma ordem de cinco deploys para mudanças de esquema.
O que você vai aprender
- ✓Os três sentidos de zero downtime e as quatro janelas de um deploy
- ✓Como o Puma esvazia as requisições no SIGTERM e por que o exec no entrypoint importa
- ✓Como o Solid Queue libera ou prende jobs conforme o shutdown_timeout e o tempo de parada
- ✓Por que a idempotência e os índices únicos tornam seguro repetir um job
- ✓Como o Turbo usa data-turbo-track e os digests dos assets para recarregar páginas desatualizadas
- ✓Uma ordem de deploys que mantém o esquema compatível com o código atual e o novo
O que indisponibilidade realmente significa
"Zero downtime" é uma afirmação que precisa de uma definição antes de poder ser testada, e a definição útil é mais estreita e mais exigente que a de costume.
Ler a aula completa grátis →Currículo
7 aulasO que indisponibilidade realmente significa
Define três sentidos de zero downtime e as quatro janelas em que um deploy pode perder algo.
Como o Puma desliga
Explica SIGTERM, SIGKILL, o período de tolerância de dez segundos do Docker e o papel do exec no entrypoint.
Os jobs que estavam rodando
Mostra como o Solid Queue dentro do Puma desliga, o limite do shutdown_timeout e o papel da idempotência.
A janela do lado do cliente
Trata do JavaScript desatualizado em navegadores abertos, da checagem data-turbo-track do Turbo e de quem ainda escapa.
A ordem de deploy que funciona
Apresenta a regra de que o esquema precisa servir ao código atual e ao novo, com cinco deploys em ordem.
O que este deploy de fato alcança
Avalia esta aplicação nas quatro janelas, separando o que depende de mecanismo do que depende de hábito.
Juntando tudo
Revisa as quatro janelas e seus responsáveis e implementa shutdown_outcome, um modelo do período de tolerância.