En aquest tema, explorarem diverses estratègies de desplegament que es poden utilitzar per assegurar que les actualitzacions de programari es facin de manera segura, eficient i amb mínim impacte en els usuaris finals. Les estratègies de desplegament són crucials per minimitzar el risc de temps d'inactivitat i errors en producció.

Objectius d'Aprenentatge

Al final d'aquest tema, hauràs de ser capaç de:

  1. Comprendre les diferents estratègies de desplegament.
  2. Seleccionar l'estratègia de desplegament adequada per a diferents situacions.
  3. Implementar aquestes estratègies en un entorn CI/CD.

Estratègies de Desplegament

  1. Desplegament Directe (Direct Deployment)

El desplegament directe és la forma més senzilla de desplegament on el nou codi es reemplaça directament en el servidor de producció.

Avantatges:

  • Simple i ràpid d'implementar.
  • No requereix configuracions complexes.

Desavantatges:

  • Pot causar temps d'inactivitat.
  • Risc elevat d'errors en producció.

  1. Desplegament Blau/Verde (Blue/Green Deployment)

En aquesta estratègia, es mantenen dos entorns idèntics: un entorn "blau" (producció actual) i un entorn "verd" (nova versió). Els usuaris es redirigeixen a l'entorn verd un cop es verifica que tot funciona correctament.

Avantatges:

  • Permet proves completes abans de redirigir el tràfic.
  • Facilita la reversió ràpida en cas de problemes.

Desavantatges:

  • Requereix el doble de recursos (dos entorns).
  • Pot ser complex de gestionar.

  1. Desplegament Canari (Canary Deployment)

El desplegament canari implica desplegar la nova versió a un petit subconjunt d'usuaris abans de desplegar-la a tota la base d'usuaris. Això permet detectar problemes en una petita part de la infraestructura.

Avantatges:

  • Redueix el risc de desplegament.
  • Permet monitoratge i ajustos abans del desplegament complet.

Desavantatges:

  • Pot ser complex de configurar i gestionar.
  • Requereix una infraestructura de monitoratge robusta.

  1. Desplegament Progressiu (Rolling Deployment)

En el desplegament progressiu, la nova versió es desplega gradualment a diferents parts de la infraestructura fins que tota la infraestructura estigui actualitzada.

Avantatges:

  • No requereix duplicació completa de recursos.
  • Permet una transició suau amb mínim impacte.

Desavantatges:

  • Pot ser més lent que altres estratègies.
  • Pot ser difícil de revertir si es detecten problemes tard.

  1. Desplegament de Funcions (Feature Toggles)

Aquesta estratègia implica desplegar codi amb funcionalitats desactivades que es poden activar o desactivar segons sigui necessari. Això permet desplegar codi de manera segura i activar-lo només quan estigui llest.

Avantatges:

  • Permet desplegaments freqüents i segurs.
  • Facilita la prova de noves funcionalitats en producció.

Desavantatges:

  • Pot augmentar la complexitat del codi.
  • Requereix una gestió acurada de les funcionalitats.

Comparació d'Estratègies de Desplegament

Estratègia Avantatges Desavantatges
Desplegament Directe Simple, ràpid Risc elevat, pot causar temps d'inactivitat
Blau/Verde Proves completes, fàcil reversió Requereix el doble de recursos
Canari Redueix el risc, permet monitoratge Complex de configurar, requereix monitoratge
Progressiu Transició suau, mínim impacte Pot ser lent, difícil de revertir
Funcions Desplegaments freqüents, prova en producció Augmenta la complexitat del codi

Exercici Pràctic

Exercici: Implementació d'un Desplegament Blau/Verde

Objectiu: Configurar un entorn de desplegament blau/verd per a una aplicació web.

Passos:

  1. Configura dos entorns idèntics (blau i verd).

    • Utilitza eines com Docker per crear entorns idèntics.
    • Configura els servidors web per a cada entorn.
  2. Desplega la versió actual a l'entorn blau.

    • Assegura't que l'entorn blau està funcionant correctament.
  3. Desplega la nova versió a l'entorn verd.

    • Realitza proves exhaustives en l'entorn verd.
  4. Redirigeix el tràfic a l'entorn verd.

    • Utilitza un balançador de càrrega per redirigir el tràfic.
  5. Monitora el rendiment i els errors.

    • Assegura't que l'entorn verd està funcionant correctament.
  6. Reverteix al blau si es detecten problemes.

    • Si es detecten problemes, redirigeix el tràfic de nou a l'entorn blau.

Solució:

# Exemple de configuració de Docker Compose per a entorns blau/verd
version: '3'
services:
  web-blue:
    image: myapp:current
    ports:
      - "8080:80"
  web-green:
    image: myapp:new
    ports:
      - "8081:80"
  load-balancer:
    image: nginx
    ports:
      - "80:80"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf

nginx.conf:

http {
    upstream backend {
        server web-blue:80;
        # server web-green:80; # Descomenta per redirigir al verd
    }

    server {
        listen 80;

        location / {
            proxy_pass http://backend;
        }
    }
}

Resum

En aquesta secció, hem explorat diverses estratègies de desplegament, cadascuna amb els seus avantatges i desavantatges. Hem après a seleccionar l'estratègia adequada segons les necessitats del projecte i hem implementat un exercici pràctic per consolidar els coneixements. Aquestes estratègies són fonamentals per assegurar desplegaments segurs i eficients en un entorn CI/CD.

© Copyright 2024. Tots els drets reservats