Pular para o conteúdo principal

🚀 Zero Downtime (ZDT) Deployment para PHP

Manter aplicações sempre disponíveis é essencial. Durante o processo de atualização (redeploy), muitos serviços enfrentam erros ou ficam indisponíveis. A plataforma SaveinCloud oferece um método simples e eficiente para resolver esse problema em aplicações PHP: o ZDT Deployment, baseado em boas práticas adotadas por grandes empresas como o Etsy.


🔧 Como funciona

O processo de ZDT Deployment é baseado em dois pilares:

  1. A cada novo deployment, os arquivos da aplicação são copiados para uma nova pasta com timestamp.

  2. Um symlink (link simbólico) aponta para a versão atual da aplicação e é redirecionado instantaneamente ao fim do deployment.

Isso permite que:

  • A versão antiga continue atendendo os usuários durante o processo.

  • A nova versão seja ativada de forma atômica ao final.

  • Não haja interrupção no serviço.


📈 Fluxo do Deployment

1. Criar ou usar um ambiente PHP existente

Recomenda-se utilizar Apache (com suporte ao módulo mod_realdoc) ou NGINX.


2. Ativar ZDT ao fazer deploy

Durante o deploy de um .zip ou link direto:

  • Marque a opção "Enable zero-downtime deployment" imagem

Ou, ao usar um repositório Git/SVN/Bitbucket: imagem

  • A opção é ativada automaticamente ao deploy no contexto ROOT.

⚠️ Essa opção funciona apenas se o deploy for feito no contexto ROOT.


3. Estrutura de diretórios

A cada deploy:

  • É criada uma nova pasta como ROOT_yyyy.mm.dd-hh.mm.ss

  • O symlink ROOT aponta para a versão ativa


ls -l /var/www/webroot

imagem


4. Atualizações futuras

A cada novo deployment:

  • Uma nova pasta é criada

  • O symlink é atualizado automaticamente

  • A versão anterior é mantida (você pode excluí-la manualmente depois)


⚙️ Implementação técnica

Apache PHP

Usa o módulo mod_realdoc com configurações em:


/etc/httpd/conf.d/mod_realdoc.conf

Parâmetro útil: RealpathEvery 2


NGINX PHP

Suporte nativo ao ZDT, com ajustes no fim do arquivo:


/etc/nginx/nginx.conf


⚖️ Comparação entre métodos

MétodoTempo de RespostaFalhasDisponibilidade
Deploy ClássicoMais rápidoPossuiHá interrupção
ZDT DeployLevemente maiorZeroSempre online ✅

📊 Testes com WordPress

Deploy via Arquivo (Clássico)

  • Tempo de falha: até 2 segundos

  • Erros durante o processo

Deploy via Arquivo (ZDT)

  • Sem erros

  • Troca instantânea de versão

Deploy via Git (Clássico)

  • Pode falhar durante o clone/push

Deploy via Git (ZDT)

  • Estável, sem downtime

  • Preserva arquivos gerados pelo usuário


✅ Benefícios

  • Atualização suave e transparente

  • Preserva conteúdo gerado por usuários

  • Menor risco de erro e indisponibilidade


🔚 Conclusão

O ZDT Deployment é a melhor maneira de atualizar aplicações PHP sem impactar seus usuários. Com ele, você garante estabilidade, segurança e eficiência no processo de atualização do seu projeto.

💡 Recomendado para todos os ambientes PHP com deploy contínuo ou frequente.