- Se gestionan más de 165,000 recursos en la nube en 625 workspaces de Terraform y 38 cuentas de AWS
- De 170 ingenieros, 40 son especialistas en infraestructura
- Se realizan 225 lanzamientos de infraestructura (
terraform apply) y 723 planes (terraform plan) cada día
- Para lograrlo, adoptaron Terraform Cloud para automatizar el proceso de lanzamiento de infraestructura, reduciendo el trabajo manual y los errores de los desarrolladores
Problemas antes de adoptar Terraform Cloud
- Necesidad de altos privilegios de acceso a AWS: el equipo de infraestructura tenía que contar con un nivel elevado de acceso a AWS
- Tareas que consumían mucho tiempo: había que ejecutar
terraform apply en cada directorio y repetir revisiones y aprobaciones; un solo cambio podía afectar a más de 120 workspaces
- Aparición de drift en la infraestructura: se acumulaban cambios inesperados, por lo que al aplicar era necesaria una revisión y acciones adicionales
Adopción de Terraform Cloud y resultados
- Eliminación del drift → al eliminar el drift de infraestructura, se redujeron el riesgo y la carga para los desarrolladores
- Ahorro de tiempo para los desarrolladores → aproximadamente 8,000 horas al año ahorradas (equivalente a la carga de trabajo de 4 desarrolladores)
- Trazabilidad de cambios → los cambios pueden rastrearse mediante logs de auditoría, lo que facilita el debugging
- Soporte para speculative plans → los cambios pueden probarse automáticamente y los resultados verse directamente en el CI de GitHub
Cómo operan Terraform Cloud actualmente
- Self-hosted: instalaron Terraform Cloud for Business por su cuenta y operan agentes de TFC en un clúster de ECS dentro de sus cuentas de AWS
- Configuración del pool de agentes: operan 120 agentes divididos entre entorno de desarrollo (40) y entorno de producción (80) para mantener una alta concurrencia
Elementos que monitorean con especial atención
- Agotamiento de agentes y límites de concurrencia → si faltan agentes, se notifica al responsable on-call
- Tiempo de plan → si el tiempo de plan supera los 4 minutos en desarrollo, se avisa al equipo
- Drift de infraestructura → actualmente no lo miden (casi no ocurre drift)
Optimización para mejorar la calidad
- Desarrollo de un TFC CLI: permite revisar y aprobar automáticamente cambios en múltiples workspaces desde la CLI
- Implementación de un sistema de alertas: automatizaron notificaciones en Slack para que no se omitan aplicaciones de Terraform
- Gestión automática de workspaces: usan Terraform para administrar 625 workspaces y aplicar tags para distinguir al equipo propietario
- Análisis de uso de Terraform Cloud: aprovechan la API de TFC para recopilar datos de versiones de estado y entender el uso de recursos y las tendencias de crecimiento
- Respaldo de Terraform State: hacen backup automático de los archivos de estado en un bucket de S3 para poder recuperarlos ante incidentes
- Gestión de dependencias entre workspaces: crean un árbol de dependencias de módulos para configurar automáticamente los directorios que cada workspace debe vigilar
- Automatización de upgrades de providers: usan Dependabot para actualizar providers mensualmente y reducir la carga operativa mediante automatización
Mejoras futuras
- Rollout por etapas: migrar de lanzamientos basados en la rama
main a un esquema de despliegue por múltiples etapas (desarrollo → staging → producción)
- División de workspaces grandes: quieren desglosar los 625 workspaces actuales en más de 1500 para reducir el tiempo de plan y apply y acotar el alcance del impacto de los cambios
- Mejora de las notificaciones: agregar reasignación en las alertas de Slack e incorporar la generación automática del comando
tfc review
- Autoescalado de agentes: planean introducir un sistema de autoescalado basado en EKS para manejar eficientemente cargas de trabajo variables
- Open source de herramientas internas: planean publicar como open source varias herramientas desarrolladas internamente para que otros equipos también puedan usarlas
Aún no hay comentarios.