Qué es DevOps (y sobre todo qué no es DevOps)

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.

En un post anterior (El legendario origen del movimiento DevOps), presentábamos la génesis del término, pero como ocurre con la mayoría de las buzzwords tecnológicas, es complicado encontrar una definición canónica, y es frecuente de hecho encontrar usos del término contradictorios, o flagrantemente incorrectos.

Gran parte de la confusión viene de mezclar lo que es DevOps con los requisitos necesarios o los beneficios obtenidos al implementar DevOps. Sin querer ser excesivamente dogmáticos acerca de un término cuyas líneas de contorno aún no han acabado de asentarse del todo, vamos a intentar al menos arrojar algo de luz sobre el concepto.

DevOps2 hate love 300

DevOps según WikiPedia

Comenzamos con lo más próximo que hoy en día podemos tener a una definición canónica. ¿Qué dice Wikipedia de DevOps?:

«DevOps es un acrónimo inglés de development (desarrollo) y operations (operaciones), que se refiere a una metodología 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 respuesta a la interdependencia 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 lean startup. Grupos de trabajo, asociaciones profesionales y blogs usan el término desde 2009«.

Devops2 300

Todo claro, ¿verdad? ¿O pensáis como yo que hay overflow de conceptos? Rescatemos de momento tres ideas clave:

  • DevOps es una metodología para 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 una altísima frecuencia de releases.

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 (en lo habitual rabiosamente estancas) de desarrollo y sistemas.

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.

¿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. ¿Os suena ;-)?

devops2 head-of-it-annotated 300

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 sustituir esas dos gorras por una sola: una nueva gorra DevOps.

¿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”.

DevOps: un modelo de desarrollo de productos digitales

Como conclusión, 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 desarrolladores puedan enfocarse sólo en desarrollar y puedan desplegar su código en segundos.

DevOps es especialmente útil en el nuevo entorno de la transformación digital y el desarrollo de productos digitales, para los que el usuario final y/o el cliente interno de negocio demanda TTM (time-to-market), más flexibilidad, más calidad, menos coste y una altísima frecuencia de releases.
DTMA, ¿Conoces el nivel de Transformación Digital de tu compañía?

Foto de José Ruiz Cristina

Ingeniero de telecomunicación por la UPM, cuento con veinte años de experiencia en proyectos web en compañías como GMV-SGI, Germinus, Gesfor, Logica y CGI. Actualmente me ocupo de alinear y transmitir la oferta de Paradigma Digital, y ayudar a definir la mejor solución para cada cliente, aportando mis conocimientos sobre Internet y metodologías ágiles, mi capacidad de abstracción y el diseño de soluciones de negocio a partir de tecnologías cross.

Ver toda la actividad de José Ruiz Cristina

27 comentarios

  1. […] leído definiciones contradictorias que te hacen dudar, no te pierdas nuestro próximo post sobre lo que es, y sobre todo lo que no es devops. Stay […]

  2. […] cerrar nuestra trilogía de posts sobre DevOps (ya os contamos la génesis y una primera definición), hablamos hoy de cómo esta forma de trabajar viene a solucionar un enfrentamiento tan viejo como […]

  3. Creo que DevOps no es que los programadores se dediquen a programar y nada mas en su zona de confort.

    Mas bien parece que es al contrario, impulsar y potenciar la orientación a servicio extremo a extremo y la gestion conjunta de proyectos y servicios con un flujo de trabajo continuo, basándose en la integración y entrega continua al mismo tiempo con feedback y retroalimentación continua, igualmente.

    Saludos

  4. Rubéns dice:

    Yo creo que un DevOps es aquella persona que tiene las habilidades para poder Desarrollar preparando su propio ambiente tal cuál lo tiene el cliente en producción. Para poder «Dedicarse» a desarrollar sin que tenga la preocupación de que tenga problemas al realizar el despliegue en el ambiente del cliente al subirse a producción

  5. Seaclo dice:

    Creo que el «concepto» DevOps NO ES una Metodología, sino un Modelo Operativo que, para responder adecuadamente a la rapidez y flexibilidad que exigen los SLA’s asociados a los Servicios TI de hoy, lleva a las áreas y responsables TI a INTEGRAR a las Áreas y Procesos de Desarrollo con las Áreas y Procesos de Explotación tal que, sin perder la Continuidad Operativa, se trabaje con la Seguridad y Calidad deseada en entornos de alta frecuencia de cambios, releases y versiones aplicativas, ya sea por necesidades del negocio (funcionalidad) o por mantencion evolutiva o correctiva de sus productos base. Y al igual que con el desarrollo ágil, requiere de una infraestructura y arquitectura previamente definida y establecida que permita esa agilidad, seguridad y control.

  6. Rimber dice:

    La definición de DevOps, no es una metodología, considero tampoco es un modelo operativo, es solamente una manera colaborativa de manejar los desarrollo en forma coordinada, donde el Desarrollo, pruebas y pase a producción estaba a cargo de un líder de proyecto o gerente de proyecto, creo que este concepto no ha cambiado, lo que cambia es la herramienta tecnologica que permite realizar esta colaboratividad, por lo tanto el software que permite esto es lo nuevo,

  7. serrano dice:

    otra moda mas…débil.

  8. eduardo dice:

    Devops es una filosofia, no una metodología

  9. Me quedo con la conclusión final, muy clara :
    DevOps es una metodología de desarrollo software basada en la integración entre desarrolladores y administradores de sistemas

  10. Hamlet Almanzar dice:

    Muy buena publicación.

  11. Ivan Collado dice:

    hola puedo hacerte estas preguntas? Cuáles son motivos estratégicos por los que una organización debe considerar un modelo DEVOPS? ¿la Innovación es uno de ellos? ¿Es DEVOPS aplicable necesariamente a todas las organizaciones?
    gracias

  12. Juan José Cerezo Mata dice:

    En cuanto leo fabricar software dejo de leer

  13. Juan José Cerezo Mata dice:

    Es que veo devops y me entra la risa, y mañana se volverá a llamar ap, son cosas que se ha echo toda la vida y ahora quieren llamar así a esa persona independiente que es capaz de montarse el entorno de desarrollo el mismo y desarrollar y hacer la entrega, vamos el que se lo hacia todo de toda la vida y que existe desde hace 20 años o mas

  14. Un cóctel explosivo dice:

    DevOps no es una metodologia de desarrollo, es una filosofia un enfoque que ve el desarrollo como un conjunto de procesos end to end desde el momento en que se demanda una nueva funcionalidad o se informa de una incidencia hasta el momento en que eso se encuentra ya en produccion y todo lo que ocurre por el camino. La cuestion es entender la foto como un todo, de forma que te aseguras que introduces los mecanismos de alineamiento y buenas practicas necesarias para llevarlo a cabo. Pero no es una metodologia ni es software. Aunque se apoya en metodologia y en un conjunto de herramientas de software para hacerlo realidad.

  15. Moises dice:

    Muy interesante, está excelente que pongan diferentes puntos de vista.

  16. Andres dice:

    Me parece que la responsabilidad de informar implica documentarse previamente para informar de manera correcta. Soy docente de este movimiento (DevOps) y veo varios errores en el artículo:
    DevOps NO es metodología
    DevOps si representa un cambio en la cultura y no solo involucra a desarrolladores y operación sino a toda la organización pues de lo contrario no haría sentido «un cambio en la cultura organizacional»…y así otras cosas mas que sería conveniente revisar.

  17. LAG dice:

    Con todo respeto, y para que mas inventos de metodologías si ya hay de todos los colores y sabores… No creen que SCRUM por ejemplo es mas que suficiente… KANBAN… RUP….

  18. Julio Ruiz dice:

    Hola,

    He leído el artículo y me parece muy interesante, además, los comentarios también aportan mucho valor. Lo que está claro, parece ser, es que no hay una definición concreta que explique claramente lo que significa DevOps (con el permiso del docente que escribió antes jeje).

    Pero, aún así, me gustaría resolver una duda. Se ha hablado mucho de las 3 grandes patas sobre las que se soporta DevOps: desarrollo, sistemas y QA. Pero, sólo en el gráfico, es donde se hace referencia a la parte de QA. Qué es lo que «aportamos» los QA a este cambio cultural / nuevo modelo / antiguo modelo renombrado o lo que quiera ser DevOps??

    Muchas gracias.

  19. Miguel dice:

    ¡Qué tal…!
    Creo que DevOps, más allá de quererla adoptar como metodología, es saber pasar la estafeta de Desarrollo a QA de manera oportuna y certera; pero eso ya lo podemos ver desde un Scrum y/o otros métodos ágiles.
    Sin embargo, DevOps va en relación con las herramientas para realizar cada una de las tareas en la metodología Ágil. Pero tengo la siguiente pregunta, escuchamos de nuevas tecnologías, nuevas herramientas, nuevas metodología; pero ¿Cuándo van a evolucionar los actores? De nada servirá, todo lo anterior, sin un avance de mejora en cada perfil.

    Saludos

  20. Los cursos de DevOps son geniales para optimizar los procesos de flujo de trabajo entre equipos de desarrollo. Genial este post!! Un saludo!!

  21. Macano dice:

    Para los que hemos trabajo en Fábricas de Software entendemos cual es el importante papel que juega DevOps en el proceso de puesta en producción. «DevOps es una metodología 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)»… en el proceso de fabricación de software existe el personal de plataforma que realiza el desarrollo, otros que hacen el despliegue en producción, otros que prueban, otros que asguran todo, otros que administran los datos, etc. En el punto de despliegue a producción ocurren muchos problemas de calidad: fallas porque faltó un componente, fallas a nivel de bases de datos (campos faltantes, campos con tipo incorrecto, etc), fallas por uso de versiones incorrectos, fllas de algun motor del sistema, afectacion de toda la produccion por un error introducido durante el despliegue..

    Para garantizar que el despliegue se realiza de manera correcta, DevOps entrega las herramientas y metodologías (según ITIL) de automatizaciones requeridas para pasar por todos los ambiente de trabajo (desarrollo, prueba y produccion). Una de ellas son los scripts, máquinas virtuales o contenedores requeridos por la solucion a desplegar. Esto le garantiza al equipo de desarrollo que su producto sea colocado de la manera correcta en produccion, realizando de paso la separación de responsabilidades entre el equipo desarrollador, el de calidad, el de seguridad, el de bases de datos, el de despliegue y el de plataforma. No es una MODA, es algo que hacia falta, ya que estos inconvenientes afectan la salida a producción de las empresas que se operan como Fábricas de Software.

  22. MALATO dice:

    Todas las personas que han comentado tienen razón desde su punto de vista. Pero me queda la sensación que falta la practica para saber qué es definitivamente DevOps. Todos los que trabajamos en ambientes productivos de TI, conoce que los problemas en la entrega de los desarrollos es la que presenta mayores riesgos de implantación de sistemas de información. Son muchas cosas las que hay que tener en cuenta y muchos equipos de trabajo relacionados como dice MECANO. Si DevOps es una herramienta que relaciona y automatiza las actividades los equipos de trabajo con las entregas y despliegues de software, bienvenido sea. era lo que faltaba. No importa si es una metodología, una herramienta, una cultura, una filosofía, sea como lo definan los estudiosos, es un enfoque que sirve para solucionar muchos problemas en el ciclo de desarrollo, entrega y despliegue, y debe acogerse en las instituciones.

  23. Alberto dice:

    Esta nueva «cultura» de trabajo, es simplemente definir un marco de trabajo entre el equipo de desarrollo y TI, mantener el control de los servidores donde debe estar y no entregarlo al equipo de desarrollo osea darle un ORDEN al trabajo y no sobrevalorar las necesidades de un desarrollo, por que si se le entrega la decision al equipo de desarrollo lo mas seguro es que pidan un F1 cuando necesitan solo un sedan. El implementar esta «nueva» cultura de trabajo implica inversion a la que no todas las organizaciones estan dispuestas a invertir. Es llevar la forma de trabajo de un ambiente SAP a otros ambientes.

  24. Jose dice:

    Pues conociendo el mercado laboral español como lo conozco, DevOps para las empresas va a ser la excusa para ahorrarse a un técnico de sistemas y darle esas labores al programador. Aquí se interpretan las cosas al merme…

Escribe un comentario