Juan Rodríguez, director general de F5 Networks, explica las características que hacen que DevOps se haya convertido en una de las tendencias tecnológicas más relevantes en la actualidad.
¿En qué piensas cuando escuchas el término «DevOps»? ¿Concepto técnico impenetrable? Quizá ni siquiera has oído hablar de DevOps… En ese caso, prepárate, pronto lo harás.
Desarrollar una aplicación en el pasado era algo sencillo. Se definían los requisitos que debía cumplir el nuevo producto, se codificaba, se probaba el software resultante y se entregaba al equipo de operaciones para que lo pusiera en producción. Era un proceso limpio y ordenado.
El tema se complica con la evolución hacia el escenario digital, en el que el negocio depende de la capacidad de incorporar nuevas funcionalidades y servicios con agilidad, en el momento en el que se necesitan. Cuando la rapidez para adaptarse a nuevas circunstancias del mercado no era un requisito, el modelo tradicional era perfecto. Sin embargo, las dinámicas y exigencias de los negocios modernos, con plazos de time to market cada vez más cortos, hacen que ya no sea válido.
En el desarrollo de una aplicación suelen intervenir diferentes equipos de programadores que trabajan en paralelo. Con el modelo tradicional de desarrollo, no es raro que cuando cada equipo termina su trabajo y lo integra con el de los demás se descubra que algunos componentes son incompatibles, por lo que hay que realizar ajustes o, incluso, comenzar de nuevo, lo que puede convertir el proceso en algo muy tortuoso. Esto es algo muy común y que ha llevado a demostrar que si todos los equipos involucrados en el proyecto esperar a terminar sus respectivos trabajos antes de ponerlos en común, el resultado suele ser una gran pérdida de tiempo, cuando el tiempo es precisamente algo que ningún negocio actual puede permitirse perder.
También puede pasar que la integración de las distintas partes se lleve a cabo con éxito, pero que antes de pasar la aplicación a producción se solicite a Operaciones un entorno específico para probarla y garantizar su correcto funcionamiento. Es posible que Operaciones tarde algunos días, incluso semanas, en proporcionar este entorno de pruebas, ya que puede requerir la intervención de otros departamentos, como el de Seguridad (que tendrá que ponerse al día al no trabajar en conexión con los equipos de desarrollo y operaciones), y que una vez comenzada la fase de testing se encuentren algunos errores cuya solución requiera de una revisión importante del código. Todo ello vuelve a suponer un retraso en la entrada en producción de la aplicación sobre la que se asienta el negocio.
¡DevOps al rescate!
DevOps es una nueva cultura de trabajo que llega para evitar las frustraciones y retrasos en los procesos de desarrollo e implementación de las aplicaciones incorporando las siguientes características:
- Integración continua (CI). DevOps utiliza una metodología ágil donde, por lo general, los trozos de código funcionales más pequeños (por ejemplo, una nueva característica) se integran de manera regular y sin problemas en la rama principal de desarrollo de la aplicación, algo que permite detectar y corregir los posibles errores con rapidez. Los pequeños fragmentos de código se crean dentro de su propio entorno aislado (en contenedor) donde cada componente se comunica con el resto a través de APIs (interfaces de programación de aplicaciones). Esto le da al desarrollador la flexibilidad suficiente para agregar o eliminar componentes sin afectar a otros. Es algo que se conoce como arquitectura de microservicios, en donde cada componente presenta una capacidad plug-and-play.
- Entrega continua (CD). El código integrado (CI) se va probando automáticamente a través de varios entornos durante todo el proceso hasta llegar a la fase de preproducción, donde queda listo para ser implementado definitivamente. La interacción entre CI y CD se denomina CI/CD.
- Despliegue continuo. El objetivo final de DevOps es que las aplicaciones puedan implementarse, es decir, ponerlas en funcionamiento de forma automatizada a través de tres pasos: integración continua, entrega continua y despliegue continuo (CI/CD²).
- La importancia de la nube. La nube es un entorno clave que facilita el desarrollo de DevOps, ya que proporciona a esta metodología la velocidad y la capacidad de automatización necesarias para hacer posible la innovación y el cambio de modelo.
- La infraestructura como código. Una infraestructura de TI altamente automatizada es ideal para que el equipo de desarrollo pueda desplegar automáticamente el código en cada coyuntura, desde la fase de pruebas hasta el entorno de implementación. La Infraestructura como Código es un potente antídoto para los posibles cuellos de botella de los equipos Dev y Ops. Una infraestructura de este tipo debe abarcar herramientas de aprovisionamiento de infraestructura, que crean y despliegan infraestructura mediante un clic o completando rápidamente una plantilla. También debe incluir herramientas de gestión de configuración que facilite, por ejemplo, la actualización de 10.000 servidores con un solo comando.
- Colaboración. El éxito de DevOps depende en gran medida de la colaboración intensiva y coordinada entre el cliente, el desarrollador y los responsables de las operaciones de TI. Los desarrolladores deben centrarse en la codificación y los equipos de operaciones de TI en la gestión de la infraestructura automatizada. Ambos necesitan hablar entre ellos para descubrir nuevas formas de innovar y mejorar tanto los procesos como los entregables. El trabajo en silos sin comunicación ya es algo del pasado.
DevOps es una práctica que puede eliminar las fuentes de desperdicio en la entrega de aplicaciones. Impulsa la eficiencia al optimizar los procesos, eliminar silos, usar herramientas de automatización, estandarizar plataformas y establecer una sólida cultura de colaboración. Es una forma de evitar los cuellos de botella en el desarrollo de software y una fuerza imparable para la innovación. Es todo esto y mucho más. La verdadera influencia de DevOps solo se ha comenzado a sentir.