Arquitectura (IT)Ingeniero DevOps, Desarrollador Backend

¿Qué es el Zero Downtime Deployment en el contexto de la arquitectura de sistemas de TI y cómo se puede implementar?

Supere entrevistas con el asistente de IA Hintsage

Respuesta.

Zero Downtime Deployment es la práctica de actualizar una aplicación sin interrumpir su funcionamiento y sin que esté fuera de servicio para los usuarios. Esto se logra mediante la desactivación secuencial de las instancias antiguas y la introducción de nuevas instancias de la aplicación.

Ejemplo de implementación para una aplicación sin estado en la nube (por ejemplo, usando Kubernetes):

  1. Despliegue de la nueva versión de los pods sin eliminar los antiguos.
  2. Verificación de que las nuevas instancias están saludables.
  3. Solo después de esto, redirigir el tráfico a ellas (blue-green/release o rolling update).
  4. Los contenedores antiguos se apagan gradualmente tras tener total confianza en la nueva versión.

Ejemplo de deployment.yaml con rolling update:

apiVersion: apps/v1 kind: Deployment metadata: name: my-app spec: replicas: 4 strategy: type: RollingUpdate rollingUpdate: maxSurge: 1 maxUnavailable: 1 template: metadata: labels: app: my-app spec: containers: - name: app image: my-app:v2

Características clave:

  • Requiere servicios sin estado o estrategias especializadas de migración de estado.
  • A menudo se implementa a través de rolling update o blue-green deployment.
  • Para zero downtime a nivel de base de datos, se requiere migración en varios pasos (esquemas backward/forward-compatible).

Preguntas capciosas.

¿Es imposible el Zero Downtime Deployment al cambiar el esquema de datos?

Es posible, si las migraciones de esquema se realizan en dos pasos: primero, el código se vuelve compatible con el esquema antiguo y el nuevo, luego, se realiza la migración y se elimina el código legado.

Si la aplicación es sin estado, ¿el zero downtime deployment siempre está garantizado?

¡No! Factores limitantes pueden ser el estado externo, los tiempos de espera de conexiones, las solicitudes no procesadas o los cambios incompatibles inversos no admitidos en la API.

¿El Zero Downtime Deployment solo es necesario para grandes empresas?

No. Incluso para pequeñas startups y soluciones SaaS, el zero downtime es un factor crítico para la experiencia del usuario (especialmente en mercados globales y alta carga).