Close

DevOps: cómo romper la barrera entre Desarrollo y Operaciones

¿Qué es DevOps?


DevOps es un conjunto de prácticas, herramientas y filosofía cultural que sirve para automatizar e integrar los procesos que comparten el equipo de desarrollo de software y el de TI. Se centra en el empoderamiento de los equipos, la comunicación y colaboración entre ellos y la automatización de la tecnología.

El movimiento DevOps surgió allá por el año 2007, cuando las comunidades de desarrollo de software y operaciones de TI plantearon objeciones al modelo de desarrollo de software tradicional, según el cual los programadores trabajaban al margen del equipo de operaciones, el encargado de implementar y respaldar el código. El término "DevOps", que es una combinación de las palabras "development" (desarrollo) y "operations" (operaciones), refleja el proceso de integración de estas dos disciplinas en un único proceso continuo.

¿Cómo funciona DevOps?


Un equipo de DevOps está formado por desarrolladores y profesionales de operaciones de TI que colaboran durante todo el ciclo de vida de un producto para aumentar la velocidad y la calidad de la implementación del software. Se trata de una nueva forma de trabajar, un cambio cultural que tiene una profunda repercusión tanto para los equipos como para las organizaciones en las que trabajan.

Con un modelo DevOps, se pone fin al aislamiento de los equipos de desarrollo y operaciones. A veces, estos dos equipos se fusionan en uno solo; en ese caso, los ingenieros, que cuentan con varias competencias multidisciplinarias, trabajan durante todo el ciclo de vida de una aplicación, desde la fase de desarrollo y pruebas hasta la de implementación y operaciones.

Los equipos de DevOps utilizan herramientas para automatizar y acelerar los procesos, lo que hace que sean mucho más fiables. Con una cadena de herramientas de DevOps, los equipos pueden ocuparse de aspectos básicos de esta metodología, como la integración continua, la entrega continua, la automatización y la colaboración.

Los valores de DevOps a veces se aplican a otros equipos que no son de desarrollo. Por ejemplo, cuando los equipos de seguridad adoptan un enfoque DevOps, la seguridad se convierte en una parte activa e integrada del proceso de desarrollo. Es lo que se conoce como DevSecOps.

El ciclo de vida de DevOps


Debido al carácter continuo de DevOps, se usa un bucle infinito para representar que las fases del ciclo de vida de DevOps se relacionan entre sí. A pesar de que parece fluir de forma secuencial, este bucle simboliza la necesidad de colaboración constante y mejora iterativa a lo largo de todo el ciclo de vida.

Rueda en forma de símbolo de infinito de DevOps

El ciclo de vida de DevOps se divide en seis fases, que representan los procesos, capacidades y herramientas necesarios para el desarrollo (en la parte izquierda del bucle) y para las operaciones (en la parte derecha). A lo largo de cada fase, los equipos trabajan juntos y mantienen la comunicación para ir coordinados y ajustarse a la misma velocidad y calidad.

Icono de lápiz y papel

Planifica

Los equipos de DevOps deben adoptar prácticas ágiles para mejorar la velocidad y la calidad. La metodología ágil es un enfoque iterativo de gestión de proyectos y desarrollo de software que ayuda a los equipos a dividir el trabajo en partes más pequeñas para proporcionar un valor incremental.

Compila

Git es un sistema de control de versiones gratuito y de código abierto. Incluye las funcionalidades de crear ramas y fusiones y reescribir historiales de repositorios, lo cual ha dado como resultado muchas herramientas y flujos de trabajo innovadores y eficaces para el proceso de desarrollo de compilaciones.

Integración y entrega continuas

La CI y la CD permiten a los equipos lanzar productos de calidad con frecuencia y de forma predecible, desde el repositorio de código fuente hasta la producción con flujos de trabajo automatizados. Los equipos pueden fusionar cambios de código con frecuencia, implementar marcas de función e incorporar pruebas de extremo a extremo.

Icono de ojo

Supervisión y alerta

Identifica y resuelve rápidamente las incidencias que afectan al tiempo de actividad, la velocidad y la funcionalidad de los productos. Notifica automáticamente al equipo cualquier cambio, acción de alto riesgo o fallo para que los servicios sigan funcionando correctamente.

Operar

Gestiona la prestación integral de servicios de TI a los clientes. Esto incluye las prácticas relacionadas con el diseño, la implementación, la configuración y el mantenimiento de toda la infraestructura de TI que sirve de soporte a los servicios de una organización.

Feedback de DevOps

Feedback continuo

Los equipos de DevOps deben evaluar todas las publicaciones y generar informes para mejorar las publicaciones futuras. Al recoger feedback de forma continua, los equipos pueden mejorar sus procesos e incorporar las opiniones de los clientes para mejorar la próxima versión.

Herramientas de DevOps


Rueda en forma de símbolo de infinito de DevOps

Las herramientas de DevOps están presentes en las fases clave del ciclo de vida de DevOps. Con las herramientas de DevOps, los equipos pueden mejorar su colaboración, reducir los cambios de contexto, usar la automatización y sacar partido a la observabilidad y la supervisión.

Las cadenas de herramientas de DevOps suelen seguir dos enfoques: todo en uno o abiertas. Las cadenas de herramientas todo en uno son una solución completa que normalmente no se integra en otras herramientas de terceros, mientras que las cadenas de herramientas abiertas permiten la personalización con otras herramientas. Ambos enfoques tienen sus ventajas y desventajas.

Un ejemplo de cadena de herramientas de DevOps abierta es la solución Open DevOps de Atlassian, que incluye Jira como base y se integra con los principales proveedores y aplicaciones de Marketplace.

¿Cuáles son las ventajas de DevOps?


En la encuesta de Atlassian sobre tendencias de DevOps de 2020, el 99 % de los encuestados afirmó que DevOps tuvo un impacto positivo en su organización. Las ventajas de DevOps incluyen lanzamientos más rápidos y sencillos, mayor eficiencia de los equipos, mayor seguridad, productos de mayor calidad y, en consecuencia, equipos y clientes más felices.

Indicador de velocidad

Rapidez

Los equipos que practican DevOps publican las entregas con mayor frecuencia, calidad y estabilidad. De hecho, según el informe 2019 State of DevOps (Estado de DevOps 2019) de DORA, los equipos de élite implementan con una frecuencia 208 veces superior y 106 veces más rápido que los equipos de bajo rendimiento. La entrega continua permite a los equipos crear, probar y entregar software con herramientas automatizadas.

Videollamada

Mejor colaboración

La base de DevOps es una cultura de colaboración entre los desarrolladores y los equipos de operaciones, que comparten responsabilidades y combinan el trabajo. Esto hace que los equipos sean más eficientes y ahorra tiempo relacionado con las entregas de trabajo y la creación de código diseñado para el entorno en el que se ejecuta.

Cohete de publicación de código

Implementación rápida

Al aumentar la frecuencia y la velocidad de los lanzamientos, los equipos de DevOps mejoran los productos rápidamente. Se puede obtener una ventaja competitiva publicando nuevas funciones y resolviendo errores rápidamente.

Canalización de código

Calidad y fiabilidad

Prácticas como la integración continua y la entrega continua se encargan de que los cambios funcionen correctamente y sean seguros, lo que mejora la calidad de los productos de software. La monitorización ayuda a los equipos a mantenerse informados del rendimiento en tiempo real.

Escudo de seguridad

Seguridad

DevSecOps es una parte activa e integrada del proceso de desarrollo, ya que integra la seguridad en una canalización de integración continua, entrega continua e implementación continua. La seguridad se integra en el producto mediante la implementación de auditorías de seguridad activas y pruebas de seguridad en flujos de trabajo ágiles de desarrollo y DevOps.

¿Cuáles son los desafíos de adoptar DevOps?


Es difícil romper con los hábitos. Los equipos acostumbrados a trabajar en unidades aisladas pueden tener dificultades o incluso resistirse a reformar sus estructuras para adoptar las prácticas de DevOps. Algunos equipos pueden caer en el error de pensar que basta con implementar nuevas herramientas para adoptar DevOps. En realidad, DevOps es una combinación de personas, herramientas y cultura. En un equipo de DevOps, todos los miembros deben comprender todo el flujo de valor, desde la concepción de la idea hasta el desarrollo y la experiencia del usuario final. Según esta metodología, hace falta terminar con el aislamiento para poder colaborar durante todo el ciclo de vida del producto.

Comillas

DevOps no es el trabajo de una persona sola. Es el trabajo de todos.

Robert Krohn

Responsable de ingeniería de DevOps en Atlassian

Pasar de una infraestructura tradicional a usar la infraestructura como código (IaC) y microservicios puede ofrecer desarrollo e innovación más rápidos, pero el aumento de la carga de trabajo operativa puede ser todo un desafío. Es mejor crear una base sólida de prácticas de automatización, gestión de la configuración y entrega continua para ayudar a aliviar la carga.

Una dependencia excesiva de las herramientas puede restar a los equipos los fundamentos necesarios de DevOps: la estructura del equipo y la organización. Una vez que se establece una estructura, los procesos y el equipo deben venir a continuación y, después, las herramientas.

¿Cómo adoptar DevOps?


Para adoptar DevOps, es necesario comprometerse a evaluar y, posiblemente, cambiar o eliminar los equipos, herramientas o procesos actuales de la organización. Implica desarrollar una infraestructura que dé a los equipos la autonomía necesaria para crear, implementar y gestionar sus productos sin tener que depender demasiado de equipos externos.

Cultura de DevOps

En una cultura de DevOps, los equipos adoptan nuevas formas de trabajar que implican mayor colaboración y comunicación. Implica coordinar las personas, los procesos y las herramientas hacia un enfoque en el cliente más unificado, con equipos multidisciplinarios que se responsabilizan de todo el ciclo de vida de un producto.

Formación continua

Las organizaciones que implementan DevOps correctamente animan a la experimentación y, hasta cierto punto, a asumir riesgos. Son entornos en los que la norma es pensar de forma innovadora y se entiende que el fracaso es una parte natural del aprendizaje que ayuda a mejorar.

Agile

Las metodologías ágiles son tremendamente populares en el ámbito del software, ya que permiten a los equipos ser flexibles, estar bien organizados y tener la capacidad de responder a los cambios. DevOps es un cambio cultural que fomenta la colaboración entre quienes crean y mantienen el software. Cuando se usan juntos, las metodologías ágiles y DevOps dan como resultado una alta eficiencia y fiabilidad.

Prácticas de DevOps


Integración continua

La integración continua es la práctica de automatizar la integración de los cambios de código en un proyecto de software. Permite a los desarrolladores fusionar cambios de código con frecuencia en un repositorio central donde se ejecutan las compilaciones y las pruebas. Esto ayuda a los equipos de DevOps a solucionar los errores más rápido, mejorar la calidad del software y reducir el tiempo que tardan en validar y publicar nuevas actualizaciones de software.

Entrega continua

La entrega continua complementa a la integración continua, ya que se encarga de implementar automáticamente los cambios de código en un entorno de prueba/producción. En una canalización de entrega continua, las compilaciones, pruebas e implementaciones automatizadas se enlazan en un solo flujo de trabajo de publicación.

Conciencia de la situación

Es vital que todos los miembros de la organización tengan acceso a los datos que necesitan para hacer su trabajo de la manera más eficaz y rápida posible. Los miembros del equipo deben recibir alertas sobre los fallos que se produzcan en la canalización de implementación, ya sean sistémicos o debidos a errores en las pruebas, y recibir actualizaciones oportunas sobre el estado y el rendimiento de las aplicaciones que se están ejecutando en producción. Las métricas, los registros, los rastreos, la monitorización y las alertas son fuentes esenciales de feedback que los equipos necesitan para hacer su trabajo.

Automatización

La automatización es una de las prácticas de DevOps más importantes, ya que permite a los equipos avanzar mucho más rápido en el proceso de desarrollo e implementación de software de alta calidad. Con la automatización, el simple hecho de introducir cambios de código en un repositorio de código fuente puede desencadenar un proceso de compilación, pruebas e implementación que reduzca significativamente el tiempo que se tarda en realizar estos pasos.

Infraestructura como código

Tanto si tu organización tiene un centro de datos local como si está completamente en la nube, tener la capacidad de aprovisionar, configurar y gestionar la infraestructura de manera rápida y coherente es fundamental para adoptar DevOps con éxito. La infraestructura como código (IaC) va más allá de la simple configuración de la infraestructura mediante scripts: trata las definiciones de infraestructura como código real, mediante el uso del control de código fuente, revisiones de código, pruebas, etc.

Microservicios

La técnica de arquitectura de microservicios consiste en desarrollar una aplicación como una colección de servicios más pequeños que se pueden implementar y operar de forma independiente entre sí. Cada servicio tiene sus propios procesos y se comunica con otros servicios a través de una interfaz. Esta separación de intereses y la función independiente desacoplada permiten implementar prácticas de DevOps como la entrega continua y la integración continua.

Ojo

Supervisión

Los equipos de DevOps supervisan todo el proceso de desarrollo, desde la planificación, el desarrollo, la integración y las pruebas a la implementación y las operaciones. De este modo, pueden responder a cualquier problema en la experiencia del cliente de forma rápida y automática. Lo que es más importante, permite adoptar el enfoque "Shift Left" hacia etapas más tempranas del desarrollo y reducir las interrupciones en los cambios de producción.

Cómo empezar a trabajar con DevOps

La forma más sencilla de empezar a utilizar DevOps es identificar un flujo de valor pequeño (por ejemplo, una aplicación o servicio de soporte pequeño) y empezar a experimentar con algunas prácticas de DevOps. Al igual que con el desarrollo de software, es mucho más fácil transformar un solo flujo con un pequeño grupo de partes interesadas que intentar implementar una nueva forma de trabajar en toda la organización al mismo tiempo.

Atlassian ofrece una solución DevOps abierta que proporciona procesos de DevOps integrales en las herramientas de Atlassian y de terceros. Con Jira como columna vertebral, los equipos pueden usar los productos de Atlassian o añadir sus productos favoritos a la cadena abierta de herramientas. El ecosistema de Atlassian ofrece una amplia gama de integraciones y complementos con los que los equipos pueden personalizar la cadena de herramientas a la medida de sus necesidades.

Echa un vistazo a nuestros tutoriales de DevOps sobre automatización, pruebas, seguridad, observabilidad, marcas de función y entrega continua.

Ilustración de taller de DevOps