Siempre, siempre, algo nuevo se aprende¡
Bueno, en esta ocasión les contamos, que hace unos días tuvimos la oportunidad de escuchar el siguiente término durante una de las consultorías de AWS que brindamos a nuestros clientes. “Ambientes efímeros”
Si, lo sé, el término alude explícitamente a su significado, fácilmente se puede conocer cuál es el propósito del uso de ambientes efímeros, pero el cliente, más allá de preguntar si conocíamos el concepto, requería herramientas útiles para el manejo de ambientes efímeros.
Para ser sinceros, no había escuchado antes el término, pero analizando el día a día de nuestro trabajo, comprendí que lo usamos todo el tiempo.
Por ejemplo, cada vez que desplegamos infraestructura cómo código (IAC) usando AWS CloudFormation y etiquetamos los recursos con su respectivo ambiente, para una vez finalizadas las pruebas sean destruídas las pilas con la nomenclatura del ambiente.
Pero este cliente en particular, sabe esto y más, su necesidad va más allá de hacer procesos manuales de ambientes efímeros, el requiere definir el tiempo de vida para los entornos, destinar presupuestos y en general un control automatizado y gestionable.
Es por ello que nos hemos propuesto investigar sobre servicios y herramientas que puedan ayudar con su requerimiento y como siempre aportar nuestro granito de arena a materializar las ideas de las personas.
Para aquellos que no son muy técnicos o también desconocen el concepto. Los entornos efímeros, también llamados entornos sandbox o bajo demanda (Con algunas diferencias), son aquellos ambientes que están preparados para tener una vida útil corta. Estos entornos son útiles por ejemplo para proporcionarlos a un equipo de calidad (QA), donde puedan realizar sus distintas pruebas y asegurar el funcionamiento del producto.
Dentro de las características principales de los entornos efímeros, están las siguientes:
- Temporalidad: Como mencionamos anteriormente existen solo por un periodo de tiempo limitado.
- Automatización: Es claro que estos entornos deben ser fácilmente desplegables, por lo que herramientas de IAC, facilita su implementación y gestión.
- Fiabilidad: Entiéndase por esto, que los entornos deberían ser una réplica fiel del ambiente de producción, si su objetivo, como en la mayoría de los casos, es con fines de pruebas.
Otras características que pueden ser opcionales o requeridas según sea el caso, es el aislamiento, escalabilidad, monitoreo, entre otros.
Usar entornos efímeros tiene como ventaja, tener un control sobre los recursos que desplegamos, es muy común que se generen costos innecesarios de recursos que no se están utilizando, de allí también la importancia del uso de etiquetas. Además agiliza los procesos, para los desarrolladores por ejemplo, dado que evita la modificación continua de permisos, cuando queremos asegurar el mínimo privilegio.
Teniendo en cuenta que nuestro fuerte es la nube de AWS, encontramos una posible solución, publicada por AWS haciendo uso de la herramienta AWS Control Tower. Básicamente con este servicio podemos automatizar la creación de cuentas de AWS y con algunas configuraciones y un stack se puede transformar la cuenta creada en una cuenta de pruebas, configurando el tiempo de vida de nuestro ambiente que en este caso es la cuenta de AWS. Dentro de la configuración es posible indicar el número de días y el límite de presupuesto (AWS Budget). El producto desplegado tendrá una cuenta regresiva para hacer la eliminación de los recursos una vez finalizado el tiempo de vida definido. El servicio no tiene ningún cobro adicional pero hace uso de servicios subyacentes que si pueden incurrir en costos, algunos de los servicios subyacentes son AWS CloudFormation, AWS Service Catalog, AWS Organizations, AWS IAM Identity Center, AWS Config.
El siguiente enlace, te llevará a la publicación de AWS donde exponen el paso a paso para ejecutar tu primer entorno efímero usando AWS Control Tower.
Para el caso de uso específico de nuestro cliente, recomendamos la lectura de las siguientes publicaciones en donde hacen uso de Terraform y acciones de GitHub, y en la primera, de AWS Lambda en contenedores.
Previewing environments using containerized AWS Lambda functions
Ephemeral environments for serverless applications in AWS using Terraform and GitHub Actions
Adicionalmente, en el siguiente video proporcionan una implementación de entornos efímeros usando varios servicios de AWS incluyendo EKS.
Ephemeral Environments with EKS – 2021-10-28 – Mario Mercado
Concluímos este tema, diciendo que siempre se aprende algo nuevo, o se refuerza lo aprendido, pero a veces es importante también desaprender un poco para que lo nuevo nos renueve, y les sugiero que hagamos uso de los entornos efímeros como una buena práctica a nivel de proyectos, empresas y en general las organizaciones, no solo para disminuir costos, y tener mayor control, sino pensando más en un impacto ambiental. Si exhortamos un poco sobre esto, deben existir millones de recursos desplegados en la nube sin ningún propósito ni uso, generando una gigantesca “huella de carbono digital”