Marcio Cunha

¿Deploy trabado? Cómo usar feature flags en ArgoCD

Descubre cómo combinar feature flags y ArgoCD para realizar Canary Deployments seguros, liberando nuevas funcionalidades de forma gradual y sin riesgos.

Marcio Cunha•5 min
También disponible en:EnglishPortuguês
Resumen
  • Los canary deployments reducen el radio de impacto al liberar código nuevo a una pequeña fracción de usuarios.
  • Las feature flags permiten activar o desactivar funciones en tiempo de ejecución sin requerir nuevos despliegues.
  • Combinar GitOps con administradores de flags garantiza que el estado de la infraestructura sea predecible.
  • Probar en producción con tráfico real valida hipótesis antes de abrir el acceso a toda la base.
  • Monitorear métricas de errores durante la liberación gradual previene interrupciones masivas en el sistema.

El desafío de poner código nuevo sin romper el sistema

Desplegar código en entornos de producción suele ser un momento tenso para los equipos de ingeniería. En la práctica, esto significa enviar código nuevo a servidores activos que atienden a clientes reales, donde cualquier pequeño error puede causar inestabilidad. Para evitar que un fallo estropee todo el sistema, los equipos buscan formas de mitigar riesgos, ya sea aplicando estrategias como el modelo de entregas sin tiempo de inactividad o dividiendo el tráfico de manera controlada. El problema es que el proceso de rollback, es decir, volver a la versión anterior, no siempre es lo suficientemente rápido cuando el daño ya está hecho.

Es exactamente en este escenario donde entran las herramientas de automatización y control de estado. ArgoCD, una herramienta popular de GitOps que mantiene la producción sincronizada con un repositorio de código, ayuda a automatizar la entrega. Sin embargo, actualizar los archivos de configuración en Kubernetes no resuelve el problema lógico de una funcionalidad rota. Es necesario separar el acto de desplegar código del acto de hacerlo visible para el usuario final, y ahí es donde la integración con las llaves de control de recursos marca la diferencia en la operación diaria.

Qué son las feature flags y cómo salvan tus despliegues

Las feature flags, o interruptores de funciones, funcionan como interruptores de luz integrados en el código de la aplicación. En la práctica, permiten enviar una pieza de código nuevo a producción manteniéndola oculta para la mayoría de las personas. Si el sistema comienza a mostrar fallos inesperados, en lugar de pasar por el estrés de generar una nueva versión y esperar a que termine el ciclo de despliegue, basta con apagar el interruptor mediante un panel administrativo para que el comportamiento anterior vuelva a funcionar al instante.

Este enfoque cambia por completo la dinámica de desarrollo. Los ingenieros pueden fusionar código en desarrollo en la rama principal sin miedo, ya que la funcionalidad permanece inactiva hasta el momento adecuado. Además, esta técnica sirve como base para pruebas seguras, complementando prácticas como la inyección controlada de fallos para validar la resiliencia. La ganancia principal es la tranquilidad, ya que el riesgo de indisponibilidad se desploma cuando el control está literalmente a un clic de distancia.

Canary deployments: probando el agua antes de nadar

El concepto de Canary Deployment hereda su nombre del uso histórico de canarios que los mineros usaban para detectar gases tóxicos bajo tierra. En la ingeniería de software, la idea es lanzar la nueva versión del software solo a un grupo muy restringido de usuarios, como empleados internos o el 2% de la base total. Si la versión nueva comienza a consumir memoria en exceso o genera errores de conexión, solo este pequeño grupo se ve afectado, limitando drásticamente el radio de explosión del problema.

Automatizar este proceso requiere que el enrutamiento de tráfico funcione de manera inteligente en el borde de la infraestructura. Las herramientas de entrega continua gestionan esta progresión, aumentando el porcentaje de tráfico hacia la versión nueva de forma gradual —por ejemplo, pasando del 5% al 25%, luego al 50% y finalmente al 100%. Si en cualquiera de estas etapas las métricas de salud del sistema muestran anomalías, el proceso se detiene y retrocede de forma automática, garantizando que el resto de los clientes nunca note nada.

Orquestando el proceso con ArgoCD y Argo Rollouts

Para unir la entrega declarativa de ArgoCD con las liberaciones graduales, la comunidad creó Argo Rollouts, un controlador de Kubernetes que reemplaza los objetos de despliegue tradicionales con estrategias avanzadas. A continuación, mira un ejemplo práctico de configuración de un Rollout que define una estrategia canaria con pasos automatizados de análisis:

apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
  name: mi-aplicacion
spec:
  replicas: 5
  strategy:
    canary:
      steps:
      - setWeight: 10
      - pause: {duration: 10m}
      - setWeight: 50
      - pause: {duration: 30m}
  selector:
    matchLabels:
      app: mi-aplicacion
  template:
    metadata:
      labels:
        app: mi-aplicacion
    spec:
      containers:
      - name: app
        image: mi-imagen:v2

En este ejemplo práctico, el controlador dirige solo el 10% del tráfico a la nueva versión y hace una pausa de diez minutos para analizar el comportamiento. Si todo marcha bien, el volumen de acceso sube al 50% durante treinta minutos más antes de completar la transición total. Esta automatización elimina el factor humano en decisiones repetitivas, permitiendo que el equipo se concentre en resolver problemas de negocio mientras el operador gestiona el tráfico con precisión matemática.

Mitigando riesgos reales combinando herramientas

La verdadera fuerza de esta arquitectura surge cuando combinamos la liberación de tráfico por porcentajes con el uso de feature flags en el código. Mientras Argo Rollouts garantiza que la infraestructura y los pods respondan bien a la carga física, las banderas de control permiten activar partes específicas de la regla de negocio únicamente para los usuarios canarios que acceden al sistema en ese preciso instante.

Esta doble capa de protección resuelve un dilema clásico: ¿qué pasa si el código pasa todas las pruebas de infraestructura, pero la nueva pantalla presenta un error de usabilidad que confunde al cliente? Con la llave de control posicionada estratégicamente en el código, es posible desactivar la funcionalidad visual sin necesidad de reconstruir las imágenes del contenedor. La operación gana una agilidad sin precedentes, reduciendo el tiempo de respuesta a incidentes casi a cero.

Consideraciones finales sobre entregas seguras y continuas

Adoptar despliegues graduales y feature flags no es solo una elección técnica, sino un cambio profundo en la cultura de ingeniería de una empresa. Cuando los desarrolladores saben que un error no va a tirar el sistema de producción durante horas, el miedo a enviar código nuevo desaparece y el ritmo de entrega aumenta de forma natural. Herramientas como ArgoCD proporcionan la base sólida necesaria para mantener el entorno organizado mediante GitOps, mientras las estrategias de liberación inteligente hacen el resto.

Invertir tiempo en la configuración inicial de estas herramientas trae retornos inmediatos en estabilidad y confianza operacional. Los equipos dejan de apagar incendios a altas horas de la madrugada y empiezan a enfocarse en crear valor real para los usuarios. Al final, la mejor infraestructura es la que trabaja de forma invisible tras bambalinas, permitiendo que la innovación ocurra con total seguridad y previsibilidad.