Un tsunami llamado DevOps
En estos tiempos que corren, Foreman no es un aguerrido boxeador sino un sistema para aprovisionar servidores. Cuando te hablan de Docker, no piensas en pantalones, sino en todo un ecosistema para gestionar contenedores de software. Ahora tomad aire: Orion, Trello, Git, Jenkins, Go, Selenium, Urbancode, Puppet, Kubernetes, Mesos, Bluemix, Kibana, Logstash… Así podría seguir hasta llenar este artículo de sugerentes nombres.
Pero lo importante, ¿qué tienen en común? Todos ellos forman parte de una u otra manera de un verdadero tsunami llamado DevOps que viene cargado de herramientas, procesos y cultura para llevarse por delante las apacibles aguas en las que descansaba lo mucho (o poco) que muchas empresas habían implementado para dar soporte al ciclo de vida de aplicaciones, o ALM.
Llegará el momento en que pase el tsunami y todo vuelva a la calma, pero ahora mismo estamos en pleno «revolcón tecnológico». Así que tratemos de poner un poco de orden. Como casi siempre, ayuda bastante apoyarse en un marco de referencia que, para el caso que nos ocupa, intente definir de manera ordenada las principales disciplinas que cubre DevOps, desde la pura codificación de la aplicación y colaboración entre los miembros del equipo hasta la monitorización de la aplicación ya desplegada. Y entre medias los elementos más determinantes, con diferencia, para implementar DevOps: integración y pruebas continuas, aprovisionamiento y gestión de la configuración, contenedores y virtualización, plataformas Cloud (IaaS/PaaS/CaaS…).
Una manera muy interesante de expresar lo anterior es mediante este ‘delivery pipeline’ que no es más que un conjunto de piezas especializadas en «cocinar» software y que, correctamente engranadas y con los nuevos soportes tecnológicos, permiten industrializar (esta vez sí) la producción de aplicaciones como hasta ahora nunca habíamos logrado.
Mucho material del que trae consigo ese tsuami (decenas de herramientas opensource, nuevos modos de interaccionar entre equipos, nuevos roles y culturas de trabajo…) se asentará y permanecerá. Por otro lado, conceptos y tecnologías consolidados hasta hoy se los llevará de vuelta la ola para siempre. Seguramente una de las cosas que queden resueltas (porque a día de hoy no lo está) es la relación entre orquestación de servicios, gestión de configuración y despliegue propiamente dicho de aplicaciones. Cada práctica encuentra su zona de confort en aspectos muy diferentes de la cadena de entrega continua. Pero por algún motivo se está tendiendo a «estresar» las tecnologías que las dan soporte con resultados más o menos satisfactorios por el momento.
Por ejemplo, Puppet, Chef o Ansible son buenos para parchear y actualizar entornos con buena parte del stack hasta la capa de middleware, pero no son tan efectivos para orquestar despliegue de los componentes de una aplicación en particular. Ahí, tecnologías específicas como Urbancode se muestran mucho más adecuadas para ese trabajo, permitiéndonos desligar conceptos de aplicación e infraestructura. En otras palabras, debemos evitar que el planchado de plataformas y la orquestación de aplicaciones estén demasiado solapadas para evitar, entre otras cosas, problemas de portabilidad. Claro, que con tecnologías de gestión y orquestación de contenedores todo esta separación de conceptos empieza a ser mucho más sutil…
En medio todo tsunami, es importante mantener nuestro nivel de flotabilidad. Tecnologías PaaS como Bluemix nos ayudan a conseguirla abstrayéndonos de muchos de los problemas a los que nos tendríamos que enfrentar para gestionar toda la «fontanería» para hacer que todas esas piezas funcionen correctamente. No sólo eso, sino que pone a nuestra disposición un enorme catálogo de runtimes y servicios para que podamos elegir lo que mejor se adapte a nuestras necesidades. Por ejemplo, engranar todo un ecosistema de desarrollo, testing y puesta en marcha de aplicaciones es enormemente sencillo con el nuevo servicio DevOps Toolchain de Bluemix.
En definitiva, aprovechemos esta oportunidad para potenciar nuestro ciclo de entrega continua y tomemos todo el impulso posible que este tsunami nos está ofreciendo; pero a la vez hagámoslo sobre tecnologías y arquitecturas sólidas y suficientemente maduras para no hundirnos en el intento.
¡Esto no es todo! Descubre la web creada para desarrolladores para ver más casos.