¿Qué es DevOps?

Programa con Paco
7 min readMar 29, 2021

--

DevOps es uno de los términos más mencionados en el actual entorno de IT. Normalmente se asocia a estrategias de transformación digital, y a metodologías como Continuous Delivery o desarrollo ágil.

Breve historia

En la conferencia Agile 2008 Toronto, Yhens Wasna y Patrick Debois introdujeron el término en su charla sobre “Infraestructura Ágil”[1].​ A partir de 2009, el término DevOps se ha promocionado constantemente y se ha incorporado a un uso más general a través de una serie de Días DevOps (devopsdays por su nombre original en inglés),​ que no son más que conferencias comunitarias sobre mejora en IT, que comenzaron en Bélgica y ahora también se han extendido a otros países.

Ilustración que muestra DevOps como la intersección de desarrollo, operaciones de tecnología y calidad (QA)

El término DevOps ha sido utilizado en múltiples contextos diferentes. Una definición propuesta por Bass, Weber y Zhu es:

DevOps es un conjunto de prácticas destinadas a reducir el tiempo entre el compromiso de un cambio en un sistema y el cambio que se coloca en la producción normal, al tiempo que garantiza una alta calidad.

Definición

DevOps es un acrónimo inglés de development (desarrollo) y operations (operaciones), que se refiere a una cultura o modo de desarrollo de software que se centra en la comunicación, colaboración e integración entre desarrolladores de software y los profesionales de sistemas en las tecnologías de la información (IT).

DevOps es una una respuesta a romper los silos entre los roles con el fin de aumentar la velocidad y la calidad del desarrollo de software y las operaciones IT. Su objetivo es ayudar a una organización a producir productos y servicios software más rápidamente, de mejor calidad y a un coste menor. Las empresas con entregas (releases) muy frecuentes podrían requerir conocimientos de DevOps. Flickr desarrolló un sistema DevOps para cumplir un requisito de negocio de diez despliegues diarios. A este tipo de sistemas se les conoce como despliegue continuo (continuous deployment) o entrega continua (continuous delivery), y suelen estar asociados a metodologías startup.

Rescatemos de momento tres ideas clave:

  • DevOps es una metodología para la creación de software.
  • DevOps se basa en la integración entre desarrolladores software y administradores de sistemas.
  • DevOps permite fabricar software más rápidamente, con mayor calidad, menor coste y despliegues de versiones inmediatos.

Con estos conceptos en mente, repasemos algunas corrientes de opinión en torno a DevOps.

¿Es DevOps una cultura?

No, DevOps no es en sí una cultura, pero sí requiere de un fuerte cambio cultural y organizativo para su implementación. Un cambio cultural hacia la colaboración, la comunicación, y en último término la completa integración entre las antiguas áreas de desarrollo y sistemas, en lo habitual rabiosamente estancas.

Este cambio cultural es tan complicado de conseguir en algunas organizaciones, que son muchos los que lo identifican directamente con DevOps, pero recordemos: DevOps es una metodología de desarrollo software, y un cambio de cultura no es en sí mismo una forma de desarrollar software. A pesar de que cuando se habla de una cultura DevOps se habla de la implementación de la metodología es importante tener esto claro.

Un antipatrón común es introducir DevOps en una organización asignando roles a algunos empleados o llamando a un equipo DevOps. Cuando lo que busca DevOps es eliminar las separaciones o diferencias entre los equipos de IT.

¿Es DevOps una nueva raza de hombres orquesta?

Otro error común es confundir DevOps con modelos que algunas startups se ven abocadas a adoptar en sus inicios, en los que todos los miembros del equipo técnico saben de desarrollo, de sistemas, de tuning de rendimiento, de bases de datos… y hasta de cablear la oficina, comprar portátiles y hasta configurar el móvil de la gente de negocio.

Ese modelo puede funcionar durante un tiempo, pero no escala. DevOps no consiste en aumentar la responsabilidad de los desarrolladores haciendo que lleven varias gorras (en particular dos, la de desarrollo y la de sistemas), sino en romper los silos entre los dos con sus mismas gorras de Dev y Sys.

¿Es DevOps una profesión?

Según Rob Steward, vicepresidente de desarrollo de producto de Progress Software, “una buena práctica de DevOps liberará a los desarrolladores para que se centren en hacer lo que mejor saben hacer: escribir software. DevOps elimina el trabajo y las preocupaciones de la puesta en producción del software una vez que está escrito”.

Si esto es así, ¿qué es un ingeniero DevOps? ¿No hemos quedado en que DevOps permite que un desarrollador sólo desarrolle? ¿Entonces por qué se buscan en el mercado –y cada vez con mayor demanda- perfiles con habilidades específicas para montar equipos DevOps?

La respuesta es sencilla: para un desarrollador pasar a un modelo DevOps resulta inmediato, mientras que un ingeniero de sistemas necesita nuevas habilidades. Estas habilidades, según una investigación de Puppet Labs, son, por este orden: scripting, don de gentes, reingeniería de procesos, y en último lugar experiencia con herramientas específicas. Un perfil que no es fácil de encontrar.

Así que no, DevOps no es una profesión, y estrictamente no existen ni perfiles DevOps ni ingenieros DevOps, sino “ingenieros de sistemas con capacidades específicas para integrarse en equipos DevOps”.

Un modelo de desarrollo de productos digitales

Quedémonos con una definición simple de DevOps con la que todos podamos estar de acuerdo: DevOps es una metodología de desarrollo software basada en la integración entre desarrolladores y administradores de sistemas, que permite que los miembros del equipo puedan enfocarse sólo en desarrollar y puedan desplegar su código en segundos.

Ventajas

Los equipos que adoptan la cultura, las prácticas y las herramientas de DevOps mejoran el rendimiento y crean productos de más calidad en menos tiempo, lo que aumenta la satisfacción de los clientes. Esta mejora de la colaboración y la productividad es fundamental también para alcanzar objetivos de negocio como estos:

  • Reducción del tiempo de comercialización
  • Adaptación al mercado y a la competencia
  • Mantenimiento de la estabilidad y la confiabilidad del sistema
  • Mejora del tiempo medio de recuperación

DevOps y el ciclo de vida de las aplicaciones

DevOps influye en el ciclo de vida de las aplicaciones a lo largo de las fases de planeamiento, desarrollo, entrega y uso. Cada fase depende de las demás y las fases no son específicas de un rol. En una auténtica cultura de DevOps, todos los roles están implicados de algún modo en todas las fases.

Planificar

En la fase de planeamiento, los equipos de DevOps conciben, definen y describen las características y la funcionalidad de las aplicaciones y los sistemas que van a crear. Realizan un seguimiento del progreso tanto de forma general como de forma pormenorizada, desde tareas de un único producto hasta tareas que abarcan carteras de numerosos productos. La creación de registros de trabajo pendiente, el seguimiento de los errores, la administración del desarrollo de software ágil con Scrum, el uso de paneles Kanban y la visualización del progreso son algunas de las formas en las que los equipos de DevOps planean con agilidad y visibilidad.

Desarrollar

La fase de desarrollo incluye todos los aspectos de la programación (escritura, pruebas, revisión e integración del código por parte de los miembros del equipo) y la compilación de ese código en artefactos de compilación que se pueden implementar en varios entornos. Los equipos de DevOps buscan innovar con rapidez sin sacrificar la calidad, la estabilidad ni la productividad. Para ello, utilizan herramientas muy productivas, automatizan los pasos cotidianos y manuales, e iteran el código en pequeños incrementos mediante pruebas automáticas e integración continua.

Entregar

La entrega es el proceso de implementar aplicaciones en entornos de producción de un modo constante y confiable. La fase de entrega incluye también la implementación y la configuración de la infraestructura básica totalmente gobernada que constituye esos entornos.

En la fase de entrega, los equipos definen un proceso de administración de versiones con fases de aprobación manual claras. También establecen puertas automáticas que mueven las aplicaciones de una fase a otra hasta que están disponibles para los clientes. La automatización de estos procesos hace que estén controlados y sean escalables y repetibles. De este modo, los equipos que practican DevOps pueden realizar entregas con facilidad, confianza y tranquilidad.

Usar

La fase de uso implica mantener y supervisar las aplicaciones, así como solucionar los posibles problemas, en los entornos de producción. Al adoptar prácticas de DevOps, los equipos trabajan para asegurar la confiabilidad, la alta disponibilidad y el objetivo de ningún tiempo de inactividad del sistema, al tiempo que refuerzan la seguridad y la gobernanza. Los equipos de DevOps buscan identificar los problemas antes de que afecten a la experiencia del cliente y mitigarlos rápidamente a medida que surgen. El mantenimiento de esta vigilancia requiere una telemetría muy completa, alertas que permitan tomar medidas y visibilidad total de las aplicaciones y del sistema subyacente.

Conclusiones

DevOps es una metodología de desarrollo de software que implica un cambio cultural en cómo la empresa o equipo gestiona el ciclo de desarrollo de software.

No olvides dejarnos en los comentarios que tal te pareció el artículo y seguirnos en nuestro canal de Telegram y en nuestra cuenta de Twitter.

Si quieres conocer un poco más sobre DevOps a continuación te dejamos algunas referencias empleadas para la construcción de este artículo:

--

--

Programa con Paco
Programa con Paco

Written by Programa con Paco

Noticias, comentarios, recomendaciones, consejos… principalmente sobre desarrollo de software y tecnología

No responses yet