Gestión de secretos con Ansible Vault
Gestión de la Salida de Datos

Estrategias de deployment

Estrategias de deployment

Las estrategias de deployment son técnicas fundamentales en el despliegue de aplicaciones, permitiendo la implementación de nuevas funcionalidades o actualizaciones de manera eficiente. Desde enfoques básicos hasta métodos más avanzados, cada estrategia tiene sus propias características y casos de uso.

Estas estrategias de deployment se pueden aplicar en entornos de infraestructuras informáticas, especialmente en el contexto de tecnologías de Cloud, Linux y Kubernetes. Aquí tienes unos diagramas de las estrategias de deployment más comunes:

  • Deployment Básico – Recreación
    Deployment básico
  • Multiservicio
    Multiservicio
  • Blue-Green Deployment
    Blue-Green Deployment
  • Canary Deployment
    Canary Deployment
  • A/B Testing
    A/B Testing
  • Shadow Deployment
    Shadow Deployment

Tabla comparativa de las estrategías

Estrategia Perdida de servicio Pruebas de tráfico real Segmentación de usuarios Coste de infraestructura Duración del desmantelamiento Impacto negativo en los usuarios Complejidad
Recreación 🔴 🔴 🔴 🌔 🔴 🟢
Multiservicio 🟡 🔴 🔴 €€ 🌔 🟡 🟡
Blue/green 🟢 🔴 🔴 €€€ 🌒 🟡 🟡
Canary 🟢 🟢 🔴 €€ 🌓 🟢 🟡
A/B Testing 🟢 🟢 🟢 €€ 🌓 🟢 🔴
Shadow 🟢 🟢 🔴 €€€ 🌒 🟢 🔴

Tabla con estrategias de Deployment

Estrategia de Deployment Descripción Proceso
Deployment Básico – Recreación Consiste en desplegar una nueva versión de la aplicación sustituyendo la versión existente.
  • Detener la versión anterior.
  • Desplegar la nueva versión.
  • Iniciar la nueva versión.
Multiservicio Despliega múltiples servicios o microservicios de forma coordinada, asegurando la compatibilidad entre versiones.
  • Despliegue coordinado de varios servicios.
  • Asegura la compatibilidad entre versiones.
Arquitectura Hexagonal Organiza la aplicación en capas que permiten un fácil reemplazo de componentes.
  • Desplegar nuevas implementaciones de componentes sin afectar otros.
Rolling Deployment Despliega actualizaciones de manera incremental, servicio por servicio.
  • Despliega la nueva versión en un conjunto de instancias.
  • Repite hasta que todas las instancias estén actualizadas.
Blue-Green Deployment Mantiene dos entornos (blue y green) y alterna entre ellos durante las actualizaciones.
  • Despliega la nueva versión en el entorno «green».
  • Dirige el tráfico al entorno «green» y apaga el entorno «blue».
Canary Deployment Introduce la nueva versión gradualmente al dirigir parte del tráfico hacia ella.
  • Despliega la nueva versión en un subconjunto de instancias.
  • Incrementa gradualmente el tráfico hacia la nueva versión.
A/B Testing Despliega dos o más versiones de una aplicación y evalúa su rendimiento en tiempo real.
  • Dirige diferentes segmentos de usuarios a diferentes versiones.
  • Analiza métricas para tomar decisiones informadas.
Shadow Deployment Despliega la nueva versión de la aplicación junto con la versión existente, pero no dirige tráfico de usuario a la nueva versión. Se utiliza para evaluar el comportamiento de la nueva versión en un entorno de producción simulado.
  • Despliega la nueva versión junto con la versión actual.
  • No enruta el tráfico de usuarios a la nueva versión.
Feature Toggles (Despliegue Gradual de Funciones) Activa o desactiva características específicas de la aplicación sin desplegar una nueva versión completa.
  • Despliega la nueva funcionalidad, pero mantiene su visibilidad desactivada.
  • Activa gradualmente la función para grupos específicos de usuarios.
Rollback Strategy (Reversión) Revierte a una versión anterior en caso de que la nueva versión cause problemas inesperados.
  • Si se detectan problemas, revierte a la versión anterior.
  • Investigación y corrección de problemas antes de intentar nuevamente.
Instant Update Actualiza la aplicación de forma instantánea y sin tiempo de inactividad. Utiliza técnicas como contenedores o funciones sin servidor para permitir actualizaciones sin detener la aplicación.
  • Utiliza técnicas como contenedores o funciones sin servidor para permitir actualizaciones sin detener la aplicación.
Immutable Deployment Reemplaza completamente las instancias antiguas por nuevas instancias en lugar de actualizar las instancias existentes.
  • Despliega una nueva imagen de máquina virtual o contenedor, y elimina la instancia anterior.
Roll-Forward Deployment Similar al rollback, pero en lugar de revertir a una versión anterior, se corrige la versión actual y se sigue adelante.
  • Identifica y corrige problemas en la versión actual y continúa con la implementación.

Conclusión

Estas estrategias de deployment pueden ser implementadas de manera manual o automatizada utilizando herramientas como:

  • Kubernetes para orquestación
  • Terraform para la gestión de infraestructura
  • Helm para el despliegue de aplicaciones
  • Servicios cloud para el aprovisionamiento en la nube.

La elección de la estrategia de deployment depende de los requisitos específicos de la aplicación, la tolerancia al riesgo y la infraestructura subyacente, pero sobretodo se debe tener en cuenta las preferencias del equipo de desarrollo. Estas estrategías ofrecen enfoques diferentes para gestionar el despliegue de aplicaciones, cada una con sus propias ventajas y consideraciones.

Más apuntes

Invítame a un café con bitcoins:
1QESjZDPxWtZ9sj3v5tvgfFn3ks13AxWVZ

Bitcoins para café
También puedes invitarme a algo para mojar...

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Rellena este campo
Rellena este campo
Por favor, introduce una dirección de correo electrónico válida.
Tienes que aprobar los términos para continuar