Las metodologías y todos los conceptos relacionados con Agile están cada día más extendidos en el mundo empresarial. Esto se debe, principalmente, a las exigencias del mercado, un contexto de cambios constantes y rápidos donde mantenerse flexible y competitivo es requisito indispensable.
Con ese objetivo, también se ha popularizado el término DevOps. Veremos más adelante en qué consiste, pero, de forma muy resumida, busca una organización alineada que, a través de la colaboración de Desarrollo y Operaciones, acelere los ciclos de vida de los productos.
¿Qué es DevOps? Concepto y para qué sirve
El término DevOps es una combinación de los términos Development (desarrollo) y Operations (operaciones). Hace referencia a la colaboración entre distintos departamentos y roles (aunque, principalmente, los ya mencionados Desarrollo y Operaciones) y su coordinación en procesos y herramientas, para ofrecer productos de mayor valor y calidad a los clientes de forma constante. De este modo, se busca resolver sus necesidades para alcanzar objetivos empresariales en menos tiempo.
Así, antes de la adopción de DevOps, estos dos equipos trabajaban de forma aislada, con lo que se extendían los tiempos de cada ciclo y era más difícil evitar o detectar errores y mantener sincronización.
Como veremos más adelante, definir un término tan amplio como este es complejo, pues se puede entender de distintos modos: como una metodología, una filosofía, un movimiento, una cultura, un conjunto de herramientas, unas prácticas de desarrollo…
De todos modos, para intentar aunar los distintos enfoques que adopta, podríamos definirlo como una filosofía de trabajo que mezcla prácticas, técnicas, acciones y herramientas (todo ello apoyado en un cambio cultural de la organización) que integra mediante colaboración el trabajo de desarrolladores y administradores de sistemas. Su objetivo es aumentar la calidad de las soluciones y la eficiencia o agilidad en el proceso de desarrollo, minimizando también el riesgo de los cambios que hay entre las entregas.
Se trata de una forma distinta de gestionar el ciclo de desarrollo de software. Se involucra a distintos departamentos y se introducen herramientas para fomentar la cooperación y la automatización, aunque el cambio más complejo y relevante se hace a nivel cultural, en la organización del trabajo.
Distintos enfoques del término
Aunque cada vez existe más acuerdo sobre a qué hace referencia el término DevOps (a la completa integración de los equipos de Desarrollo y Operaciones), lo cierto es que la interpretación puede variar según el aspecto al que se otorgue más importancia. Por ello, a continuación vamos a ver distintas aproximaciones.
DevOps como filosofía o cultura
Implementar un enfoque DevOps en una empresa es un desafío, pues supone una transformación cultural y en los modos de trabajo de las personas, rompiendo unas barreras que hasta entonces dificultaban la agilidad. Este cambio es bastante profundo y afecta a distintas áreas de la compañía por lo que es necesario tener claro el concepto, su importancia y consecuencias.
Por este motivo, DevOps a menudo se define como una cultura basada en las metodologías ágiles y que pasa por la colaboración de Desarrollo y Operaciones. Poner en práctica sus principios conlleva una mejora continua de procesos y una mayor rapidez de entrega, que favorece la innovación.
Para que los resultados sean los esperados, hay que potenciar la integración, colaboración, visibilidad y transparencia entre los diferentes equipos, con una comunicación frecuente. En ella también participarían los equipos o encargados de Seguridad y Calidad, ofreciendo su visión desde el comienzo del proyecto.
A cambio, se logra una simplificación de todos los procesos y una mejora en la calidad, tanto de las entregas en concreto, como a nivel global de la empresa.
DevOps como conjunto de herramientas
DevOps conlleva también una adaptación tecnológica que suele pasar por el uso de determinadas herramientas. Este conjunto de soluciones tienen el objetivo de automatizar tareas, reducir errores e incrementar la agilidad del equipo y los procesos.
Si bien por sí solo el uso de estas herramientas no implica que se esté aplicando DevOps correctamente (pues debe haber un objetivo y un cambio cultural y metodológico detrás), debemos comprender que la automatización y sus herramientas son esenciales. Esto no quiere decir que definamos DevOps como un conjunto de herramientas sin más, pero sí hay algunas específicas que podemos calificar como “DevOps”, pues forman parte de un término más amplio en el que son clave.
Aunque existe una gran multitud de herramientas, podemos destacar las siguientes, cada una con un fin distinto:
- Control de versiones: Git, Subversion.
- Manejo de la infraestructura en Cloud: Amazon Web Services (AWS), Microsoft Azure y Google Cloud Computing.
- Realización de pruebas y análisis: JUnit, Blazemeter, Codeception, SonarQube.
- Integración y despliegue: Jenkins, Travis, CircleCI, Kubernetes, OpenShift.
- Monitorizar: Grafana, Prometheus, New Relic, Nagios, Zabbix.
Cada organización tiene la libertad de utilizar las que prefiera. Sin embargo, la adecuada elección de herramientas es de gran importancia para reducir los tiempos de entrega y despliegue y ganar tanto en agilidad como en calidad y control sobre el desarrollo. Por ello, siempre se recomienda contar con una opinión experta.
Implementar un enfoque DevOps en una empresa es un desafío, pues supone una transformación cultural y en los modos de trabajo de las personas, rompiendo unas barreras que hasta entonces dificultaban la agilidad. Este cambio es bastante profundo y afecta a distintas áreas de la compañía por lo que es necesario tener claro el concepto, su importancia y consecuencias.
Por este motivo, DevOps a menudo se define como una cultura basada en las metodologías ágiles y que pasa por la colaboración de Desarrollo y Operaciones. Poner en práctica sus principios conlleva una mejora continua de procesos y una mayor rapidez de entrega, que favorece la innovación.
Para que los resultados sean los esperados, hay que potenciar la integración, colaboración, visibilidad y transparencia entre los diferentes equipos, con una comunicación frecuente. En ella también participarían los equipos o encargados de Seguridad y Calidad, ofreciendo su visión desde el comienzo del proyecto.
A cambio, se logra una simplificación de todos los procesos y una mejora en la calidad, tanto de las entregas en concreto, como a nivel global de la empresa.
DevOps como profesión
La gran evolución del sector de desarrollo ha derivado en la creación de nuevos puestos de trabajo, entre los que encontramos también los vinculados a DevOps. Así, aunque el perfil profesional pueda variar (desde un ingeniero específicamente formado en DevOps hasta un desarrollador con conocimientos relacionados), normalmente serán personas capaces de fomentar la colaboración y comunicación entre equipos y de gestionar las herramientas que acabamos de ver.
Estos puestos son cada vez más solicitados. Algunos de los requisitos más mencionados en este tipo de ofertas son:
- Conocimientos en desarrollo de software y dominio de lenguajes de programación.
- Dominio de herramientas específicas de DevOps (como las ya mencionadas AWS, Git, Jenkins…).
- Gestión de bases de datos.
- Conocimiento de metodologías ágiles.
- Capacidad de formación continua y flexibilidad.
Respecto a las funciones que se suelen desarrollar, encontramos tareas y objetivos como:
- Implementar y asegurar el correcto desarrollo de prácticas como la integración continua, la entrega continua y el despliegue continuo.
- Monitorizar los procesos de los equipos implicados.
- Hacer un seguimiento del performance de la aplicación, identificar posibles errores y proponer mejoras.
- Aportar los recursos necesarios para el proyecto y determinar la forma de implementarlos.
- Aumentar la automatización para evitar tareas repetitivas.
- Determinar un modelo de pruebas y asegurar su implementación.
- Analizar los resultados generales y por fases de entrega.
Prácticas de DevOps
La continuidad es un pilar clave en DevOps, pues no se trata de un proceso que se hace una única vez, sino que pasa a formar parte de la organización e influye de forma mantenida en el tiempo.
Por ello, junto al establecimiento de la cultura de DevOps, existen ciertas prácticas para agilizar y automatizar determinados procesos o fases del ciclo de desarrollo. Son las siguientes:
Integración y entrega continuas (CI/CD)
La integración continua (CI) utiliza prácticas y herramientas y va combinando los cambios de código de forma muy frecuente, para que se actualicen automáticamente y se hagan pruebas de revisión. Con ello, se mejora la calidad del software al evitar problemas en las fases de lanzamiento.
Por su parte, la entrega continua (CD) automatiza la entrega de cambios en el código, asegurando que se integre en producción rápidamente y que funcione de forma adecuada. Con esto, se simplifican los procesos de despliegue en entornos complejos.
Control de versiones
Este paso es necesario para otros procesos como la integración continua. Gracias a él, el trabajo conjunto de los equipos de desarrollo es más sencillo. Se facilita la división de tareas, el almacenamiento de código y ofrece la posibilidad de recuperar versiones o revertir cualquier cambio a partir de un historial.
Desarrollo ágil de software
Da especial importancia a la colaboración en equipo, el feedback (tanto de cliente como de usuario) y los ciclos cortos de desarrollo. Con esos tres pilares, se basa en ofrecer actualizaciones y cambios frecuentes que se ajustan tras recibir feedback. Además de la CI/CD ya tratada, podríamos mencionar el desarrollo continuo, el testing continuo y el despliegue continuo.
Infraestructura como código
Esta práctica ayuda a automatizar la implementación, con lo que será más controlada y confiable, reduciendo el riesgo de errores humanos. Como es repetible, se pueden tener entornos de desarrollo y pruebas iguales que el de producción.
Administración de configuración
Esta práctica ayuda a automatizar la implementación, con lo que será más controlada y confiable, reduciendo el riesgo de errores humanos. Como es repetible, se pueden tener entornos de desarrollo y pruebas iguales que el de producción.
Supervisión o monitorización continua
Supone que exista visibilidad y control en tiempo real sobre el estado de las aplicaciones y su rendimiento. En DevOps se establecen alertas útiles, con lo que exista información continua para tomar medidas si es necesario, y para recopilar datos que utilizar como herramienta de mejora.
Ventajas de DevOps
Como adelantábamos antes, aplicar DevOps en una empresa traerá muchos beneficios para el rendimiento y la calidad de las entregas. Se agiliza todo el proceso y se logra que el producto tenga valor incluso antes de su finalización. Además, encontramos otras ventajas como:
- Automatización de procesos: con herramientas que permiten trabajar de forma más rápida y usar eficientemente el tiempo y los recursos.
- Reducción del tiempo de comercialización: con la integración continua, las entregas son más rápidas y se publican novedades o actualizaciones más a menudo.
- Mejor calidad: como la aplicación está disponible casi de forma constante, se pueden hacer pruebas de forma continua, con lo que es más sencillo detectar fallos incluso desde las etapas más tempranas.
- Mejora de la colaboración y la comunicación: hay más entendimiento y colaboración entre departamentos (principalmente desarrollo y operaciones, aunque cuantos más departamentos formen parte, mejor funcionará). Se aumenta la productividad, el intercambio de ideas y el asumo de responsabilidades.
- Mejora la comunicación con el cliente: se le pone en el centro, con una mayor interacción.
- Resolución de incidencias y problemas de forma más rápida.
- Más seguridad: se usan herramientas que automatizan los controles de seguridad contra amenazas.
En general, la idea es entregar más rápido, optimizando el coste y mejorando la productividad. Al ofrecer respuestas más rápidas, la empresa logrará mayor flexibilidad y adaptación al entorno.
En definitiva, adoptar este enfoque es un gran desafío porque afecta de forma profunda a la cultura empresarial. Sin embargo, tanto las herramientas como los procesos para sacarle el máximo partido están bastante bien definidos, con lo que contando con profesionales con conocimientos en DevOps, es una apuesta bastante segura.