Saltar al contenido principal

🚀 Despliegue Zero Downtime (ZDT) para PHP

Mantener las aplicaciones siempre disponibles es esencial. Durante el proceso de actualización (redeploy), muchos servicios enfrentan errores o quedan indisponibles. La plataforma SaveinCloud ofrece un método simple y eficiente para resolver este problema en aplicaciones PHP: el Despliegue ZDT, basado en buenas prácticas adoptadas por grandes empresas como Etsy.


🔧 Cómo funciona

El proceso de Despliegue ZDT se basa en dos pilares:

  1. En cada nuevo despliegue, los archivos de la aplicación se copian a una nueva carpeta con timestamp.

  2. Un symlink (enlace simbólico) apunta a la versión actual de la aplicación y se redirige instantáneamente al final del despliegue.

Esto permite que:

  • La versión antigua continúe atendiendo a los usuarios durante el proceso.

  • La nueva versión se active de forma atómica al finalizar.

  • No haya interrupción en el servicio.


📈 Flujo del Despliegue

1. Crear o usar un entorno PHP existente

Se recomienda utilizar Apache (con soporte para el módulo mod_realdoc) o NGINX.


2. Activar ZDT al hacer deploy

Durante el despliegue de un .zip o enlace directo:

  • Marca la opción "Enable zero-downtime deployment" imagem

O, al usar un repositorio Git/SVN/Bitbucket: imagem

  • La opción se activa automáticamente al desplegar en el contexto ROOT.

⚠️ Esta opción funciona solo si el despliegue se realiza en el contexto ROOT.


3. Estructura de directorios

En cada despliegue:

  • Se crea una nueva carpeta como ROOT_yyyy.mm.dd-hh.mm.ss

  • El symlink ROOT apunta a la versión activa


ls -l /var/www/webroot

imagem


4. Actualizaciones futuras

En cada nuevo despliegue:

  • Se crea una nueva carpeta

  • El symlink se actualiza automáticamente

  • La versión anterior se mantiene (puedes eliminarla manualmente después)


⚙️ Implementación técnica

Apache PHP

Usa el módulo mod_realdoc con configuraciones en:


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

Parámetro útil: RealpathEvery 2


NGINX PHP

Soporte nativo para ZDT, con ajustes al final del archivo:


/etc/nginx/nginx.conf


⚖️ Comparación entre métodos

MétodoTiempo de RespuestaFallosDisponibilidad
Despliegue ClásicoMás rápidoTieneHay interrupción
Despliegue ZDTLigeramente mayorCeroSiempre en línea ✅

📊 Pruebas con WordPress

Despliegue vía Archivo (Clásico)

  • Tiempo de fallo: hasta 2 segundos

  • Errores durante el proceso

Despliegue vía Archivo (ZDT)

  • Sin errores

  • Cambio instantáneo de versión

Despliegue vía Git (Clásico)

  • Puede fallar durante el clone/push

Despliegue vía Git (ZDT)

  • Estable, sin downtime

  • Preserva archivos generados por el usuario


✅ Beneficios

  • Actualización suave y transparente

  • Preserva contenido generado por usuarios

  • Menor riesgo de error e indisponibilidad


🔚 Conclusión

El Despliegue ZDT es la mejor manera de actualizar aplicaciones PHP sin impactar a tus usuarios. Con él, garantizas estabilidad, seguridad y eficiencia en el proceso de actualización de tu proyecto.

💡 Recomendado para todos los entornos PHP con despliegue continuo o frecuente.