Siguiendo con mi ruta de aprendizaje sobre DevOps, en esta oportunidad me gustaría explorar la práctica de Infraestructura como código (IaC). Para dar pie a esta exploración empecemos resaltando el siguiente principio del manifiesto ágil:
Entregamos software funcional frecuentemente...
Como developer, esto es importante tener en cuenta, pues es la razón por la cual nos contratan. No nos pagan sólo por escribir código, sino por entregar software que funcione y de valor al usuario. Entonces, ¿cómo podemos cumplir con este principio ágil? Optimizando nuestro Flujo de Valor.
El Flujo de Valor
Entregar software funcional frecuentemente implica recorrer un flujo, que en términos de Lean Manufacturing se denomina Flujo de Valor (Value Stream). El Flujo de Valor se refiere a la secuencia de actividades requeridas para diseñar, producir y entregar un bien o dar un servicio a un cliente.
En el año 2003 los hermanos Poppendieck tradujeron los principios de Lean Manufacturing al mundo del software. En este sentido, podemos ver nuestro trabajo cotidiano como un Flujo de Valor, un proceso donde partimos de una idea y la transformamos en una pieza de software que colocamos en un ambiente productivo para que el usuario la use.
En realidad, lo normal es que dentro de nuestro Flujo de Valor tengamos varios ambientes (environments) por donde nuestra pieza de software debe transitar (Ejemplo: Test, UAT y production). Y cuando hablamos de ambientes, hablamos de infraestructura. Ya sabes: Operating Systems, servers, storage, networking, etc. Montar todos los ambientes necesarios para el desarrollo de tu proyecto puede implicar demasiado tiempo si se hace manualmente.
Modelo de infraestructura propuesto por Sjaak Laan
¿Cómo podemos gestionar nuestra infraestructura de manera efectiva y eficiente? ¿Cómo manejamos nuestros ambientes de cara a optimizar nuestro flujo de valor?
IaC al rescate
La mejor solución para gestionar nuestra infraestructura es eliminar las configuraciones manuales a través de la automatización. Para lograr esto debemos manejar nuestra infraestructura como código.
La idea es escribir scripts que describan nuestra infraestructura, esto es código que puede ser versionado y ejecutado. De esta forma podemos reutilizar el script múltiples veces, eliminando la necesidad de realizar configuraciones manuales. También podemos replicar la misma configuración para diferentes ambientes (Ejemplo: Test, UAT y production).IaC y la nube
Finalmente...
En resumen, para optimizar nuestro flujo de valor (y por ende la entrega rápida de valor) es necesario tratar nuestra infraestructura como código para levantar ambientes y tenerlos bajo control. Una vez que tenemos nuestra infraestructura como código, el siguiente paso es hacer que nuestra pieza de software transite por los distintos ambientes hasta llegar a producción cuando el negocio lo necesite. Esta práctica es la denominada Continuous Delivery y será tema de otro artículo.
Enlaces interesantes
- ¿Qué es la Infraestructura como código (IaC)?
- Lean Software Development - Refcard #093
- Infraestructura como Código (IaC) y el caso Ansible
- Guía definitiva de desarrollo para 2019 (Platzi)
¡Gracias por llegar hasta aquí!
No comments:
Post a Comment