DevOps, explicado

Emiliano Pardo Saguier junio 24, 2022
- 11 min read

DevOps no es una sola cosa, sino un conjunto de herramientas y prácticas que todo el mundo sigue o debería seguir. A pesar de su creciente popularidad, pocos pueden explicar en qué consiste DevOps sin enredarse en la jerga. Sin embargo, esta guía pretende ayudar a comprender qué es DevOps de una manera fácil y amena, lo que permitirá avanzar en la búsqueda de una mayor -y mejor- implementación. Sin más preámbulos, ¡Aquí la explicación completa sobre qué es DevOps!

Como decíamos, incluso un ingeniero de DevOps experimentado se tropezará cuando trate de explicar de qué se trata. Pero hay algo importante que dijimos al respecto en nuestro blog sobre 10 consejos de DevOps, allá por 2018:

"Poner a todas en la misma página de DevOps. Dado que hay tantas definiciones de DevOps, algunas de ellas centradas únicamente en el incremento de la automatización, es necesario compartir lo que DevOps significa para tu organización a través de todas las partes interesadas".

Por eso, lo primero y fundamental es encontrar una definición simple de DevOps. 

DevOps 101 

Según Atlassian: 

"DevOps es un conjunto de prácticas, herramientas y una filosofía cultural que automatiza e integra los procesos entre los equipos de desarrollo de software y de IT. Hace hincapié en el empoderamiento, la comunicación y la colaboración entre equipos, así como en la automatización de la tecnología.

El movimiento DevOps comenzó alrededor de 2007 cuando (...) se plantearon las limitaciones que tenía el modelo tradicional de desarrollo de software, en el que los desarrolladores que escribían el código trabajaban disociados de los responsables de operaciones de IT que implementaban y daban soporte al código. El término DevOps, una combinación de las palabras desarrollo y operaciones (development y operations), refleja el proceso de integración de estas disciplinas en un proceso continuo".

Como acabas de leer, DevOps en sí mismo no es una práctica que tenga muchos años. Surgió de una profunda necesidad cultural y organizativa: luchar contra la disfunción en el sector IT. 

¿Y cuál era esa disfunción, te preguntarás? Principalmente, el hecho de que los equipos de desarrollo e implementación de software trabajaban completamente separados, provocando problemas que afectaban negativamente a todas las partes involucradas en las operaciones de IT. Así pues, DevOps surgió de la necesidad de integración y el trabajo continuo en el sector. 

Este fenómeno de que la mano izquierda no sepa lo que hace la derecha es sumamente negativo para una organización. Y más aún cuando ambos equipos parecen tener objetivos contrapuestos o directamente contradictorios. 

Este es precisamente el vacío que DevOps vino a completar. 

¿Cómo funciona DevOps?

DevOps trata de evitar, esencialmente, lo que se llama "silo organizacional". En otras palabras, pretende que los equipos dejen de trabajar en pequeñas islas aisladas sin interactuar entre sí, que no exista la competencia sectaria y el afán de superación. En cambio, fomenta un entorno de colaboración.

Entonces, los equipos de DevOps incluyen a los desarrolladores y a los equipos de IT que trabajan mano a mano durante todo el ciclo de vida del producto: desde el nacimiento hasta su eliminación. La idea es acelerar la velocidad y la calidad no sólo del desarrollo, sino también de la implementación. Como tal, representa un importante cambio de paradigma respecto a "cómo eran las cosas", lo que resulta un cambio trascendental con implicancias profundas tanto para los equipos como las organizaciones. 

DevOps, idealmente, evita este aislamiento organizacional del que hablábamos antes. En algunos casos, incluso, los equipos se fusionan para maximizar la eficiencia, con ingenieros que trabajan durante todo el ciclo de vida del producto o la aplicación. Por supuesto, tienden a tener una gama más amplia de habilidades con el fin de dar cabida a estos escenarios diversos. En conclusión, se acabaron los días en que los ingenieros reunían una sola habilidad hiperespecializada y trabajaban en ella con las anteojeras puestas. Ahora se requiere contar con una visión periférica en la era del trabajo interdisciplinario.

Además, los equipos de DevOps suelen utilizar las herramientas para automatizar y facilitar los procesos. Por lo tanto, disponen de más tiempo y posibilidades para hacer uso de sus habilidades de alto nivel. Y como plus, no sólo aceleran los procesos sino que los hacen menos propensos a los errores. 

Otra cuestión fundamental que facilita el trabajo de los DevOps son las toolchain más adecuadas. Los fundamentos de DevOps como la integración continua, la entrega continua, la automatización y la colaboración están a la orden del día. 

Al igual que la gestión de activos de IT (ITAM), los fundamentos de DevOps se aplican, en ocasiones, más allá de las fronteras del desarrollo y la implementación de software. Los equipos de seguridad, por ejemplo, pueden adoptar modalidades de DevOps, o incluso integrarse activamente en el proceso de desarrollo. Cuando esto ocurre, estamos ante un área denominada DevSecOps.

El ciclo de vida de DevOps 

Un ciclo de vida consiste en el lapso entre que se concibe el software hasta su eliminación. Y como DevOps es un proceso continuo, se representa mejor a través de un bucle infinito que pretende transmitir la necesidad de una colaboración constante y una mejora iterativa a lo largo del ciclo de vida. 

El ciclo de vida de DevOps, con su enfoque en la entrega y la integración continua, se centra en seis fases: desarrollo (en el lado izquierdo del bucle), que tiene tres; y las operaciones (lado derecho), que cubren las otras tres. 

Por supuesto, como hemos dicho anteriormente, los equipos de desarrollo y operaciones colaboran constantemente para mantener la alineación y las cuestiones en orden durante todo el proceso. Entraremos más en detalle en esas prácticas. 

  • La integración continua es una práctica de desarrollo de software en la que los desarrolladores juntan cada cambio de código que realizan en un único repositorio. Es aquí donde se ejecutan las construcciones y pruebas automatizadas. El objetivo de esta práctica es encontrar los errores más rápidamente y acabar con los problemas antes de que se extiendan, o lleguen a la implementación. Si las cosas van bien, el tiempo que se tarda en lanzar y actualizar el software disminuye considerablemente.
  • La entrega continua consiste en implementar cambios en el código que se construyen, prueban y preparan automáticamente para su lanzamiento a producción. Como tal, se puede considerar una ampliación de la integración continua, ya que se basa en el despliegue de todos los cambios de código en un entorno de pruebas o de producción tras la fase de construcción. Si se hace bien, los desarrolladores tendrán siempre a su disposición compilaciones listas para su uso que ya han sido probadas adecuadamente. 

Ahora, vamos a echar un vistazo a las seis fases secuencialmente con el fin de tener una mejor idea de cómo están dispuestas las cosas. 

1. Planificación

Mejorar la velocidad y la entrega implica haber alcanzado el éxito para los equipos de DevOps. ¿Cómo se logra eso? Con Agile: como enfoque iterativo número uno en la gestión de proyectos, es una buena práctica integrarlo en la planificación de DevOps. Funciona permitiendo a los equipos dividir el trabajo en "partículas" más pequeñas que les permiten trabajar a un ritmo más rápido y entregar valor incremental. 

De hecho, un experto en Agile señala: 

"DevOps puede interpretarse como una consecuencia de Agile: el desarrollo ágil de software prescribe una estrecha colaboración de los clientes, la gestión de productos, los desarrolladores y (a veces) el control de calidad para rellenar los huecos e iterar rápidamente hacia un producto mejor (...)

(...) la prestación de servicios y la forma en que interactúan la aplicación y los sistemas son una parte fundamental de la propuesta de valor para el cliente, por lo que el equipo de producto debe incluir estas preocupaciones como un elemento de primer nivel. Desde esta perspectiva, DevOps es simplemente extender los principios ágiles más allá de los límites del código a todo el servicio entregado".

Y hablando de código...

2. Construir el código 

El desarrollo y el despliegue rápido de software están a la orden del día. Los desarrolladores tienen que producir nuevos desarrollos y actualizaciones como nadie, y deben hacerlo siguiendo procedimientos de prueba estandarizados. Diferentes herramientas, como Git o Docker, los ayudará a construir un sistema de apoyo para ramificar y reescribir los historiales de los repositorios según sea necesario. Y, por supuesto, todo esto tiene que ocurrir sin retrasarse demasiado. La velocidad y la eficiencia son tan importantes como la eficacia total. 

3. Integración y entrega continua 

Cuando se emplean conjuntamente la integración y la entrega continua, los desarrolladores pueden producir de forma fiable productos de alta calidad y mantenerlos actualizados regularmente. De hecho, esta fiabilidad y previsibilidad permiten que cuestiones como los repositorios de código fuente estén completamente automatizados. También ayudan a los equipos a realizar pruebas de principio a fin, a hacer deploy de feature flags o a fusionar cambios de código, según sea necesario. 

Y esto tampoco es algo que deba tomarse a la ligera. Como señaló el experto Tommy Tynja

"Para implementar con éxito la entrega continua, es necesario cambiar la cultura de la forma en que una organización ve los esfuerzos de desarrollo de software".

En conclusión, es posible que para implementar la integración y la entrega continuas haya que revisar la forma en que se hacen algunas cuestiones. Y eso no es malo, porque cuando todas estas herramientas se utilizan juntas, los resultados pueden ser asombrosos. 

4. Monitorear y alertar 

Que las cosas funcionen no significa que puedas quitar las manos del volante. Resolver y predecir los problemas debe ser una prioridad, y por eso es que siempre debes mantener un ojo vigilante en todo lo que está pasando en un proceso de DevOps. Recuerda que los problemas afectan fundamentalmente al tiempo de actividad del producto, la funcionalidad y, en última instancia, a la velocidad. 

Pero, por supuesto, también debes ser capaz de notificar a tus equipos las acciones, los cambios y los fallos de alto riesgo. Ya sabes, para que al final del día también puedas mantener las luces encendidas. ¡Prioridades, gente! 

5. Operar 

Aquí es donde la entrega de IT de principio a fin entra triunfalmente en escena. También es donde debes esforzarte por ofrecer el mejor servicio posible a los clientes. ¿Y qué te facilita proporcionar un servicio perfecto? Disponer de una infraestructura informática eficiente, fiable y bien mantenida, que maximice las posibilidades de éxito. Todo juega a favor de todo lo demás. 

6. Feedback continuo 

Ahora, con DevOps las cosas no son de una sola vez. Más bien, los equipos deben evaluar cada versión, proporcionar informes detallados y crear el entorno para la mejora futura (y constante). 

Así, la retroalimentación continua permite a los equipos mejorar sus procesos, incorporar el feedback de los clientes y optimizar todas las versiones posteriores. 

Y eso nos lleva a la siguiente pregunta. Aunque el “cómo” de DevOps es importante, el “por qué” es igual de crucial. 

¿Cuáles son algunos de los beneficios de adoptar este conjunto de prácticas? 

Beneficios de DevOps

Según el estudio de Atlassian de 2020, el 99% de los encuestados notaron beneficios organizativos después de adoptar DevOps. 

Pero, ¿cuáles son esos beneficios? 

Más rápido, más rápido, más rápido 

La velocidad es probablemente una de las métricas más valoradas en todas partes. Si puedes unir velocidad y eficiencia, entonces es perfecto. DevOps brinda ayuda en estas dos cuestiones: hacer las cosas más rápido, pero mejor. 

Los equipos de DevOps consiguen que los entregables salgan mucho más rápido, y con mayores métricas de calidad y estabilidad. Y esto, unido a las capacidades que proporciona la entrega continua, les permite superar en más de cien veces a los equipos que no utilizan estas prácticas (!!!). 

Mejora la colaboración transversal 

¿Recuerdas la idea detrás de todo esto? Sí, se trataba de reducir el aislamiento y fomentar una cultura de colaboración interdepartamental y multidisciplinar. Como resultado, los equipos de desarrollo y operaciones comparten la carga y la responsabilidad de todo el proceso. 

Esto implica un aumento de la eficiencia general, ya que los equipos podrán pasar el trabajo a otros, ahorrando tiempo. Además, los equipos crearán el código que sea realmente relevante para el entorno para el que están diseñado, en lugar de hacerlo de forma aislada.

Hace que el desarrollo sea mucho más rápido

DevOps brilla en muchas áreas. Y una de las más importantes es la capacidad de sacar productos más rápido y mejorarlos continuamente. No se trata sólo de la estabilidad y la fiabilidad (una métrica muy importante del lado del cliente), sino de obtener una ventaja competitiva mediante la corrección de errores rápidamente y el lanzamiento de nuevas funciones cuando son realmente necesarias. 

Calidad y fiabilidad

Sí, así es. La integración y la entrega continuas también ayudan a los desarrolladores de software a garantizar que los cambios sean funcionales y seguros, lo que mejora la calidad general del producto. Además, el monitoreo ayuda a los equipos a estar al tanto del rendimiento del software en todo momento. Esto garantiza resultados aún mejores de lo normal y una cultura de mejora constante. 

Seguridad 

Esta es un área en la que DevOps se solapa con ITIL. En nuestro artículo sobre cómo construir una cultura de ciberseguridad, decíamos: 

"La cultura de una organización define cómo se comportan los empleados en su entorno de trabajo, ya sea en una oficina o en una situación laboral desde casa. Dicta cómo se comunican los empleados, los límites, la forma de vestir o de presentarse y lo que se espera de cada uno. Una cultura de ciberseguridad intenta reducir el riesgo general reforzando el eslabón más débil de una organización y su recurso más valioso: su gente".

Al integrar la seguridad en la integración, el desarrollo y el despliegue continuos, DevSecOps se convierte en una parte importante del proceso de desarrollo. De hecho, incorpora funciones de seguridad directamente en los productos, y lo refuerza aplicando auditorías y pruebas de seguridad periódicas, todo ello dentro de los flujos de trabajo de DevOps y las directrices de desarrollo ágil. 

DevOps e ITIL: ¿Separados al nacer? 

Ahora bien, si has leído nuestra guía definitiva de ITIL, probablemente te estés rascando la cabeza preguntándote por las obvias similitudes que hay aquí. 

Pero, ¿cuáles son las diferencias? Aunque estos sistemas se solapan y a menudo interactúan entre sí, no son exactamente iguales. Estas son las principales diferencias: 

  • ITIL es un sistema codificado de prácticas orientadas principalmente a la integración de las IT con los procesos y estrategias empresariales.
  • DevOps, por otro lado, surgió de la necesidad de integrar los equipos de desarrollo y operaciones de software, para reducir el nivel de aislamiento y hacer que todos tiren en la misma dirección. 

Aunque hay momentos en que estos dos enfoques coinciden, están pensados para abordar cuestiones diferentes. Así que, en esencia, lo que hay que hacer es no comparar estos dos procesos, sino observar qué atiende cada uno, y si es relevante para los desafíos de tu organización. 

En definitiva, lo más importante es saber qué se puede conseguir con cada filosofía, evitando aplicar las palabras de moda porque parecen cool. La aplicación es buena tanto como nuestra comprensión de lo que estamos tratando de aplicar -de ahí este artículo-.

Para terminar

Si quieres evitar el aislamiento de la organización, sacar el software más rápido, de forma más fiable y más en sintonía con el uso en el mundo real, entonces DevOps es para ti. Y, teniendo en cuenta su increíble historial, te recomendamos que empieces a aplicarlo. 

Como dijo Gene Kim

"DevOps y sus prácticas técnicas, arquitectónicas y culturales resultantes representan una convergencia de muchos movimientos filosóficos y de gestión, incluyendo: Lean, la teoría de las restricciones, el sistema de producción Toyota, la ingeniería de la resiliencia, las organizaciones de aprendizaje, la cultura de la seguridad, los factores humanos, las culturas de gestión de alta confianza, el liderazgo de servicio, la gestión del cambio organizacional y los métodos ágiles." 

Y, como tal, el cóctel es perfectamente potente para ayudar a impulsar tus esfuerzos de desarrollo y operaciones de software en una máquina bien aceitada que funciona como un todo.

Read other articles like this : DevOps