🚀 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:
-
En cada nuevo despliegue, los archivos de la aplicación se copian a una nueva carpeta con timestamp.
-
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"

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

- 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
ROOTapunta a la versión activa
ls -l /var/www/webroot

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étodo | Tiempo de Respuesta | Fallos | Disponibilidad |
|---|---|---|---|
| Despliegue Clásico | Más rápido | Tiene | Hay interrupción |
| Despliegue ZDT | Ligeramente mayor | Cero | Siempre 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.