Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
El Problema
Habitualmente nos encontramos con que estas metodologas se aplican nicamente en el
desarrollo de aplicaciones. Elementos tan importantes como la infraestructura, la calidad y
la gestin de los datos, quedan normalmente fuera del marco de aplicacin de Agile.
Adems, esta "peticin/respuesta" suele necesitarse para todo: Para pedir un pase entre
entornos, para pedir la creacin de un entorno nuevo, para pedir cambios en la
configuracin y un largo etctera.
En la mayora de los casos son procesos burocrticos, anticuados y muy lentos: Hojas Excel
enviadas por email que tienen que aprobar varias personas... te suena?
Ocurre a menudo que este departamento no es informado de los requisitos hasta que es
demasiado tarde y se acaba pidiendo una infraestructura que no estaba prevista, la cual es
entregada semanas despus con incontables
problemas: rendimiento, capacidad, escalabilidad, resiliencia, ...
Visto as, es sencillo comprender que, desde el punto de vista del Time To Market, estamos
limitando la agilidad del equipo. Pero qu podemos hacer?
La Solucin
Lo primero es pensar en producto y no en servicio.
Si las personas de este departamento formaran parte de los equipos que desarrollan los
productos, cada una de ellas slo tendra que preocuparse de su producto, de los servidores
de su producto, de las redes de su producto, del almacenamiento de su producto, de las
reglas de firewall de su producto, etc.
Si adems formaran parte desde el principio hasta el final como uno ms del equipo,
podran dar una correcta solucin a los requisitos no funcionales, aceptar cambios en
cualquier momento y adaptarse a las necesidades reales de la aplicacin segn se va
desarrollando, con un control continuo de la infraestructura necesaria.
Pero claro, crear un entorno cuesta das o semanas! Instalar un Sistema Operativo,
plataformar una mquina, actualizarla, configurarla, requiere mucho tiempo. Y los entornos
tienen muchas mquinas!
Encima, una vez creado el entorno, se corrompe con facilidad, pierde su alineacin con
otros entornos (desarrollo y produccin fueron alguna vez iguales?), la ejecucin de
pruebas de usuario los bloquea durante semanas y un sinfn de problemas derivados de
la operacin manual.
De nada nos sirve que todo est virtualizado si cada vez que necesitamos un elemento
nuevo tenemos que entrar en las consolas de administracin.
Por suerte, los proveedores de IaaS en la nube y la mayora de sistemas para virtualizar
hardware "on premise" ya nos ofrecen el API que necesitamos.
Las Herramientas
La evolucin que han sufrido los procesos de desarrollo durante estos ltimos aos es
evidente. Los programadores cuentan con herramientas para escribir cdigo en ficheros de
texto de forma paralela, distribuida y totalmente descentralizada (Git y Gitflow, por
ejemplo).
Si incluimos estos ficheros de texto como parte del ciclo de vida de nuestros productos
podemos tener las mismas ventajas: versionado de infraestructura!, gestin
de dependencias de infraestructura!, integracin continua de infraestructura!, testing
automatizado de infraestructura!
Estas tres soluciones son propietarias y, evidentemente, slo funcionan con sus productos.
Pero hay una herramienta que no le importa el proveedor que tengas: Terraform.
Su lenguaje declarativo est orientado a ser escrito por humanos y es muy sencillo de
aprender.
En la siguiente parte de este artculo veremos como describir con Terraform un escenario
real en Azure con varios elementos tpicos de una infraestructura moderna (redes, vms,
balanceadores, almacenamiento).
Sguenos en Twitter para no perderte los prximos posts!