Lanzamientos canary con Actions
Implemente patrones de lanzamiento canary para distribuir gradualmente nuevas funciones a un subconjunto de usuarios mientras monitoriza el rendimiento y la estabilidad.
Lanzamientos canary con Actions es una lección gratuita de CI/CD with GitHub Actions & DevOps Pipelines en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de CI/CD with GitHub Actions & DevOps Pipelines, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de CI/CD with GitHub Actions & DevOps Pipelines incluye 4 lecciones en total.
Introducción a las versiones Canary
Imagine que lanza una función o actualización nueva. ¿Qué ocurriría si tuviera un error que afectara a todos los usuarios? Da miedo, ¿verdad?
Las versiones Canary ayudan a reducir este riesgo al distribuir los cambios gradualmente, primero a un pequeño subconjunto de usuarios. Es como enviar un «canario a una mina de carbón» para comprobar el aire antes de que entren los demás.
Ventajas de las versiones Canary
Las versiones Canary ofrecen varias ventajas importantes:
- Menor riesgo: Limite el impacto de los problemas a un grupo pequeño de usuarios.
- Comentarios del mundo real: Obtenga datos de producción sobre el rendimiento y la estabilidad.
- Reversión rápida: Si surgen problemas, revierta rápidamente solo el pequeño grupo Canary o todo el servicio.
- Exposición controlada: Aumente gradualmente la exposición de los usuarios a medida que aumenta la confianza.
Canary frente a Blue/Green
Es posible que recuerde las implementaciones Blue/Green, en las que el tráfico cambia instantáneamente entre dos entornos idénticos.
Las versiones Canary son diferentes. En lugar de un cambio instantáneo, implican un cambio gradual del tráfico. La nueva versión se ejecuta junto a la anterior y, al principio, solo un pequeño porcentaje de los usuarios ve la nueva versión. Esto permite realizar una supervisión detallada antes de completar la implementación.
Cómo funcionan las versiones Canary
Este es el flujo básico de una versión Canary:
- Implementar la nueva versión: Se implementa una nueva versión de la aplicación en un pequeño conjunto de servidores o instancias, junto con la versión estable existente.
- Dirigir una pequeña parte del tráfico: Se configura un balanceador de carga o una malla de servicios para enviar un pequeño porcentaje (por ejemplo, del 5 al 10 %) del tráfico de usuarios a la nueva versión.
- Supervisar: Se supervisan atentamente el rendimiento, las tasas de error y los comentarios de los usuarios del grupo Canary.
- Promover o revertir: Si todo parece correcto, el tráfico aumenta gradualmente o la nueva versión se promueve al 100 %. Si se producen problemas, se revierte Canary y el tráfico vuelve a dirigirse a la versión estable.
Orquestación con GitHub Actions
GitHub Actions puede orquestar todo el proceso de lanzamiento canario. No gestiona directamente el tráfico (esa es responsabilidad de su infraestructura), pero activa los pasos:
- Compilar y probar su aplicación.
- Implementar la nueva versión en un entorno canario.
- Iniciar los cambios de tráfico mediante llamadas a la API de su balanceador de carga o malla de servicios.
- Esperar los resultados de la monitorización o las aprobaciones manuales.
- Promover el canario o activar una reversión.
Esquema de un flujo de trabajo canario
Un flujo de trabajo típico de GitHub Actions para un lanzamiento canario podría ser similar al siguiente:
name: Canary Deployment
on: push
jobs:
build:
# ... build and test steps ...
deploy-canary:
needs: build
steps:
- name: Deploy to Canary Group
# ... call script/tool to deploy and shift 10% traffic ...
monitor-canary:
needs: deploy-canary
# ... wait for monitoring/approval ...
promote-or-rollback:
needs: monitor-canary
# ... conditionally promote to 100% or rollback ...Cada paso interactuaría con sus herramientas de implementación.
Simulación de la lógica de un despliegue canario
Aunque GitHub Actions se encarga de la orquestación, las decisiones reales y los comandos de implementación suelen ejecutarse dentro de scripts. Este es un ejemplo en Python que simula la lógica de un despliegue canario. Imagine una Action que ejecuta este script:
def deploy_version(version, traffic_percent):
print(f"Deploying {version} to {traffic_percent}% traffic.")
if traffic_percent == 100:
print("Full rollout complete!")
elif traffic_percent > 0:
print("Canary deployed. Monitoring for stability...")
else:
print("Version removed (rollback).")
if __name__ == "__main__":
print("--- Starting Canary Workflow ---")
new_app_version = "v2.1-canary"
stable_app_version = "v2.0"
# Step 1: Deploy new version to 10% traffic
deploy_version(new_app_version, 10)
# Step 2: Simulate monitoring (e.g., waiting for metrics)
print("Monitoring canary performance...")
import random
canary_successful = random.choice([True, True, True, False]) # 75% chance of success
if canary_successful:
print("Canary looks good! Proceeding to full rollout.")
# Step 3a: Promote new version to 100%
deploy_version(new_app_version, 100)
else:
print("Canary issues detected! Rolling back.")
# Step 3b: Rollback to stable version
deploy_version(stable_app_version, 100)
print("--- Canary Workflow Finished ---")Monitorización de su canario
Una monitorización eficaz es fundamental. Su flujo de trabajo de GitHub Actions puede integrarse con sistemas de monitorización de varias formas:
- Llamadas a la API: Consultar herramientas de monitorización (por ejemplo, Datadog o Prometheus) para obtener métricas clave.
- Comprobaciones de estado: Consultar periódicamente los endpoints de estado de la aplicación.
- Puertas manuales: Pausar el flujo de trabajo para que una persona lo revise y apruebe.
- Esperas basadas en el tiempo: Esperar un periodo establecido para que las métricas se estabilicen.
A continuación, el flujo de trabajo utiliza estas señales para decidir si promocionar o revertir el despliegue.
Promoción o reversión condicional
Tras la fase de monitorización, GitHub Actions utiliza lógica condicional para decidir el siguiente paso. Puede utilizar sentencias if en las definiciones de sus trabajos o pasos.
promote-or-rollback:
needs: monitor-canary
if: success() && needs.monitor-canary.outputs.canary_ok == 'true'
steps:
- name: Promote Full Rollout
# ... command to shift 100% traffic to new version ...
rollback:
needs: monitor-canary
if: failure() || needs.monitor-canary.outputs.canary_ok == 'false'
steps:
- name: Rollback to Stable
# ... command to shift 100% traffic to old version ...Esto garantiza una reacción automática al rendimiento del canario.
Comprobación del lanzamiento canario
Ha aprendido sobre las ventajas y el funcionamiento de los lanzamientos canarios. Compruebe sus conocimientos.
Resumen: lanzamientos canarios con Actions
En esta lección, ha aprendido sobre los lanzamientos canarios, una potente estrategia de implementación para distribuir gradualmente nuevas versiones de software a un subconjunto de usuarios.
- Los lanzamientos canarios minimizan el riesgo y proporcionan información del mundo real.
- GitHub Actions orquesta la compilación, la implementación en el entorno canario, la monitorización y los pasos de promoción o reversión condicionales.
- Una monitorización eficaz y la lógica condicional son fundamentales para que los pipelines canarios tengan éxito.
Al utilizar canarios, puede implementar con mayor confianza y control.
Preguntas frecuentes
¿La lección «Lanzamientos canary con Actions» es gratis?
Sí — el texto completo de «Lanzamientos canary con Actions» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de CI/CD with GitHub Actions & DevOps Pipelines, actualiza a CoddyKit PRO. El curso de CI/CD with GitHub Actions & DevOps Pipelines incluye 4 lecciones en total.
¿Qué aprenderé en «Lanzamientos canary con Actions»?
Implemente patrones de lanzamiento canary para distribuir gradualmente nuevas funciones a un subconjunto de usuarios mientras monitoriza el rendimiento y la estabilidad. Practicas CI/CD with GitHub Actions & DevOps Pipelines con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar CI/CD with GitHub Actions & DevOps Pipelines?
No se requiere experiencia previa. CI/CD with GitHub Actions & DevOps Pipelines en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «Lanzamientos canary con Actions»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de CI/CD with GitHub Actions & DevOps Pipelines?
Sí. Cada lección de CI/CD with GitHub Actions & DevOps Pipelines incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Despliegues blue/green
- Lanzamientos canary con Actions
- Reversiones y recuperación ante desastres
- Feature flags y despliegues progresivos