AWS AppConfig
Servicio que despliega cambios de configuración de aplicaciones de forma segura con rollout gradual y validación, con rollback automático en caso de problemas
Descripción general
AWS AppConfig es un servicio de gestión de configuración proporcionado como funcionalidad de AWS Systems Manager. Permite distribuir cambios de configuración de aplicaciones de forma segura e independiente del despliegue de código, combinando rollout gradual, rollback automático y validación previa para reducir significativamente el riesgo de incidentes por errores de configuración. Puede reflejar en tiempo real configuraciones como feature flags, parámetros operativos y listas de permisos en aplicaciones que se ejecutan en Lambda, ECS, EKS y EC2, controlando el comportamiento de la aplicación sin redespliegue.
Perfiles de configuración y estrategias de despliegue
En AppConfig, los recursos se organizan en 3 niveles jerárquicos: aplicación, entorno y perfil de configuración. La aplicación representa un grupo lógico (como una unidad de microservicio), el entorno distingue destinos de despliegue como producción, staging y desarrollo. El perfil de configuración define dónde se almacenan los datos de configuración reales, pudiendo especificar como fuente un bucket S3, un documento SSM o SSM Parameter Store. La estrategia de despliegue es un mecanismo que controla la velocidad de distribución de los cambios de configuración, con 3 patrones disponibles: lineal (Linear), exponencial (Exponential) e inmediato (AllAtOnce). Para entornos de producción se recomienda el despliegue lineal; por ejemplo, configurando un rollout gradual del 10% cada 20 minutos, se puede minimizar el alcance del impacto cuando se detecta una anomalía. Si una alarma de CloudWatch se activa durante el despliegue, se ejecuta un rollback automático que revierte inmediatamente a la última configuración correcta. Este mecanismo permite gestionar el riesgo de cambios de configuración con la misma seguridad que un despliegue de código.
Verificación segura de valores de configuración con validadores
Los validadores de AppConfig verifican el contenido de los valores de configuración antes de ser desplegados, previniendo que valores incorrectos lleguen a la aplicación. Existen dos tipos de validadores: validador de sintaxis y validador Lambda. El validador de sintaxis especifica un JSON Schema para verificar declarativamente tipos, rangos y campos obligatorios de los valores de configuración. Por ejemplo, se puede definir en el esquema que un valor de timeout sea un entero entre 1 y 300, o que una URL de conexión comience con https. El validador Lambda implementa verificaciones avanzadas con lógica personalizada, como comprobaciones de consistencia de valores, verificación de conectividad con sistemas externos y validación de reglas de negocio. Si la validación falla, el despliegue no se inicia y se devuelve un error al creador de la configuración. Es posible combinar múltiples validadores, siendo efectivo en la práctica aplicar verificaciones de sintaxis y de lógica de negocio de forma escalonada. Al poder eliminar automáticamente errores humanos en cambios de configuración, la fiabilidad operativa mejora drásticamente.
Feature flags e integración en tiempo de ejecución
La función de feature flags de AppConfig es un mecanismo para activar o desactivar funcionalidades sin despliegue de código. Al crear un perfil de configuración para feature flags, se pueden definir atributos como booleanos, cadenas y números para cada flag, además de configurar targeting basado en segmentos de usuarios o porcentajes. Para obtener la configuración en tiempo de ejecución se utiliza AppConfig Agent. El Agent funciona como una capa Lambda, un sidecar ECS o un endpoint HTTP local, cacheando los valores de configuración localmente para devolverlos rápidamente. El intervalo de polling es de 45 segundos por defecto, y cuando se despliega un cambio de configuración, se refleja automáticamente en el siguiente polling. Al usar el Agent, el código de la aplicación obtiene la configuración con un simple HTTP GET, minimizando las dependencias del SDK. En entornos Lambda se recomienda AppConfig Lambda Extension, que obtiene la configuración en la fase de inicialización de la función y la cachea en memoria, con impacto mínimo en el cold start.