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:
- Comprendre les diferents estratègies de desplegament.
- Seleccionar l'estratègia de desplegament adequada per a diferents situacions.
- Implementar aquestes estratègies en un entorn CI/CD.
Estratègies de Desplegament
- 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ó.
- 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.
- 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.
- 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.
- 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:
-
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.
-
Desplega la versió actual a l'entorn blau.
- Assegura't que l'entorn blau està funcionant correctament.
-
Desplega la nova versió a l'entorn verd.
- Realitza proves exhaustives en l'entorn verd.
-
Redirigeix el tràfic a l'entorn verd.
- Utilitza un balançador de càrrega per redirigir el tràfic.
-
Monitora el rendiment i els errors.
- Assegura't que l'entorn verd està funcionant correctament.
-
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.
Curs de CI/CD: Integració i Desplegament Continu
Mòdul 1: Introducció a CI/CD
Mòdul 2: Integració Contínua (CI)
- Introducció a la Integració Contínua
- Configuració d'un Entorn de CI
- Automatització de la Construcció
- Proves Automatitzades
- Integració amb Control de Versions
Mòdul 3: Desplegament Continu (CD)
- Introducció al Desplegament Continu
- Automatització del Desplegament
- Estratègies de Desplegament
- Monitoratge i Retroalimentació
Mòdul 4: Pràctiques Avançades de CI/CD
Mòdul 5: Implementació de CI/CD en Projectes Reals
Mòdul 6: Eines i Tecnologies
Mòdul 7: Exercicis Pràctics
- Exercici 1: Configuració d'un Pipeline Bàsic
- Exercici 2: Integració de Proves Automatitzades
- Exercici 3: Desplegament en un Entorn de Producció
- Exercici 4: Monitoratge i Retroalimentació