GH GambleHub

Implantação Zero-Downtime

(Seção: Arquitetura e Protocolos)

1) O que é Zero-Downtime e porquê

Zero-Downtime (ZDT) é uma forma de lançar novas versões do aplicativo sem a indisponibilidade do serviço para usuários e sem a perda de solicitações. Objetivos:
  • Zero fácil para clientes e integrações.
  • Lançamentos previsíveis, reversão rápida e risco controlado.
  • Manter o SLO/SLI (latência, erros, disponibilidade) nos limites dos acordos.

A chave para o ZDT não é uma técnica «mágica», mas uma combinação de patterns de entrega, compatibilidade de dados e roteamento de tráfego adequado.

2) Princípios básicos Zero-Downtime

1. Compatibilidade de versões: versões novas e antigas devem processar o tráfego e os dados de forma correta ao mesmo tempo.
2. Idempotidade das operações: O reaproveitamento não deve quebrar o estado.
3. Conclusão graceful (graceful shutdown) e drenagem de conexões.
4. Teste de saúde passo a passo: readiness/liveness amostras, health endpoint.
5. Retrocesso como primeira classe cidadão: rollback mais fácil e rápido do que hotfix.
6. Observabilidade by design: marcas de lançamento, dashboards unificados, alertas SLO.
7. Automação: cenários de lançamento e reversão - código, não instruções manuais.

3) Pattern de entrega sem downthame

3. 1 Rolling Update

Gradualmente, tiramos do tráfego algumas instâncias da versão antiga, atualizamo-las para uma nova versão e devolvê-las ao pool.

Vantagens: eficiente em infraestrutura, apenas em k8s/ASG.
Contras: há algum tempo, o cluster funciona com duas versões simultâneas (version skew).

3. 2 Blue-Green

Duas pilhas de prod completas: ativa (Blue) e candidato (Green). Mudança de tráfego - flip atômico.

Os benefícios são o retrocesso instantâneo, o isolamento puro.
Contras: ↑ gastos em infraestrutura, mais difícil com o stateful.

3. 3 Canary/Rollout progressivo

Damos uma pequena proporção de tráfego (1-5-10-25-50-100%) à nova versão com gates em métricas.

Os benefícios são o mínimo blast radius, data-driven da solução.
Contras: precisa de observação madura e rotação inteligente.

3. 4 Shadow traffic / Dark launch

Espelhar as solicitações reais para uma nova versão (sem resposta ao usuário) ou executar oculto para coletar métricas.

Vantagens, detecção precoce de problemas.
Contras: dupla carga de dependência, precisa de controle de efeitos colaterais.

4) Controle de tráfego e conexões

4. 1 Readiness/Liveness

Liveness diz ao orquestrador «reinicie-me».
Readiness - «Não dirijas o tráfego, ainda não estou pronto».
Não se pode soltar sem uma lógica readiness correta ou um tempo.

4. 2 Drenagem de conexões (Connation Draining)

Antes de tirar a instância do pool:
  • deixamos de aceitar novas conexões,
  • aguardando a conclusão dos ativos,
  • Interrompemos os «dependentes» por tempo.

4. 3 sessões de Sticky e rotação de nível L7

Sticky é útil para os cenários stateful, mas torna o equilíbrio de carga mais difícil.
As regras L7 (no caminho, cabeçalho, cookie, API) são fáceis para canary/ring.

4. 4 Compostos de longa vida

WebSocket/gRPC streaming: Antes de atualizar, ative o estilo drain + sinal «GOAWAY».
Planeje o windows para superar striptease e bacof-retrai clientes.

5) Compatibilidade de dados e migração de banco de dados

5. 1 Expand-Migrate-Contract

1. Expand: Adicione novas colunas/índices/tabelas sem quebrar a versão antiga.
2. Migrate: Transferimos dados de fundo e idumpotente (batches, checkpoint).
3. Contract: Só removemos o antigo após a estabilização.

5. 2 Práticas

Evite DDL exclusivos na janela de lançamento.
Versionize os contratos de API/evento (schema registry, CDC).
Para as migrações pesadas - ferramentas online, réplicas, mudanças graduais.
Gravação de dois contornos (dual-write) somente com dedução e usuários idumpotentes.
Outbox/Inbox para uma integração segura através de filas.

6) Cachês, sessões e tarefas de fundo

As sessões e o dinheiro são externos (Redis/Memcached) para que as versões sejam trocadas.
Aquecimento do cachê/jit/índice de ritmo antes de ser incluído no pool.
Divida as filas de fundo por versão ou use a liderança para evitar corridas.

7) Observabilidade e gates SLO

Golden signals: latência p95/p99, errante rate, RPS, saturação, fila de fila.
SLA de negócios: autorizações, conversões, pagamentos bem sucedidos, rejeição de passos de vórtice.
Gates: rollout só avança se canary ≤ baseline + liminares de degradação, e o Error Budet não queima.

8) Fim seguro e retrocesso

A reversão é o mesmo pipline, apenas para o lado inverso: comandos fixos, não craft manual.
Para blue-green - flip back; canary - baixa de peso de 0% ou passo estável anterior.
Dados: transações compensadoras, reaproveitamento, dedução de eventos.

9) Folhas de cheque Zero-Downtime

Antes do lançamento

  • Coletado um artefato assinado (imutável), SBOM e verificação de dependências.
  • Readiness/liveness implementados e testados.
  • Plano de migração em modo expand, reversível confirmado.
  • Dashboards e alertas para a nova versão estão prontos, as marcas de lançamento estão contidas.
  • A reversão foi verificada em staging/pré-prod.

Durante o lançamento

  • A drenagem das conexões está ativada e os temporizadores são adequados.
  • O tráfego é traduzido gradualmente (canary/ring) ou flip (blue-green).
  • As métricas são comparadas com baseline, e as liminares de gate são cumpridas.

Após lançamento

  • Monitoramento post-N relógio, nenhum incidente.
  • Migração contract concluída e bandeiras temporárias/rotas removidas.
  • Retrospectiva, atualização de playbooks.

10) Anti-pattern

Recreate-deplay sem drenagem e readiness ⇒ as aberturas de solicitação.
DDL não preparados ⇒ bloqueios e temporizações no horário nobre.
Mistura esquemas incompatíveis entre versões do serviço.
Não há idempotidade em processadores e workers.
«Aluguer por sensações» sem gates ou comparação com baseline.
DNS-TTL comprido com blue-green, o que faz a flip durar horas.
Sessões locais/dinheiro na memória da sala de aula de rolling/canary.

11) Cenários de implementação

11. 1 Kubernetes (rolling + canary)

Deployment с `maxUnavailable=0`, `maxSurge=25%`.
Readiness está à espera de aquecimento (inicialização do cachê, migração menor).
Serviço-mesh/Ingress com weighted roting (1-5-10-25-50-100%).
Alerts, p95, 5xx, fila, vórtice de negócios.

11. 2 Blue-Green na nuvem

Duas pilhas atrás do balanceador. example. com` и `green. example. com`.
Aquecimento green, smoke/regresso, em seguida listiner/road swap (ou mudança DNS com TTL baixo).
Com problemas, flip back instantâneo.

11. 3 Estateful-serviço

Réplicas de dados + migração online; dupla leitura com validação.
Os fundos de fundo são transferidos pela «liderança» da versão ou por filas divididas.
Sessões/dinheiro fora de instância; o sticky está ligado apenas temporariamente.

12) Ficheflags e aplicativos de clientes

Os novos fichas são ativados com bandeiras (segmentos: funcionários → beta → todos).
Para os clientes móveis/desctop, leve em conta os limites de compatibilidade de protocolo e a vitalidade de versões antigas (deprecation policy, server-side fallback).

13) Desempenho e custo

Rolling é mais barato, mas exige compatibilidade cuidadosa.
O Blue-Green é mais caro durante o lançamento, mas a reversão é instantânea.
Canary reequilibra riscos e custos, mas requer forte observabilidade.
Economize através da proeminência ephemeral e limpeza automática dos estandes.

14) Mínimo ZDT ZDT

1. Build: artefacto único, assinatura, SBOM.
2. Test: unit/integration/contract + security.
3. Staging: smoke, carga, migração em modo expand, verificação de reversão.
4. Prod: shadow → canary (gates) ou blue-green flip.
5. Post-deploy: observação, contracto-cleanup, retrô.

15) Resumo breve

Zero-Downtime é uma disciplina: versões compatíveis + rotação correta + migrações controladas + observabilidade e reversão rápida. Selecione o pattern sob o contexto (rolling, blue-green, canary), automatize os gates por SLO, mantenha os dados idimpotentes - e os lançamentos deixarão de ser um evento, tornando-se um processo de rotina confiável.

Contact

Entrar em contacto

Contacte-nos para qualquer questão ou necessidade de apoio.Estamos sempre prontos para ajudar!

Iniciar integração

O Email é obrigatório. Telegram ou WhatsApp — opcionais.

O seu nome opcional
Email opcional
Assunto opcional
Mensagem opcional
Telegram opcional
@
Se indicar Telegram — responderemos também por lá.
WhatsApp opcional
Formato: +indicativo e número (ex.: +351XXXXXXXXX).

Ao clicar, concorda com o tratamento dos seus dados.