Acerca de DevOPS

Mitos y Realidades acerca del concepto 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.

ANTECEDENTES

A pesar de que DevOps es una de las buzzwords que a día de hoy no puede faltar en cualquier evento de IT que se precie, pocos conocen el origen de su historia, que resulta muy ilustrativa como contexto para entender mejor el significado del término.

Odoo • Text and Image

«DevOps” como tal se popularizó en 2009, a partir de los “DevOps Days” celebrados primero en Gante (Bélgica) y luego replicados en varias ciudades del mundo (a Barcelona llegó en 2013). Damon Edwards, apóstol del movimiento desde su propia empresa #SimplifyOps, relata en un corto vídeo la génesis completa.

Así, resulta muy revelador comprobar cómo el movimiento DevOps está fuertemente ligado desde su origen a las metodologías ágiles de desarrollo software. Todo comenzó de hecho en la conferencia Agile’08 celebrada en agosto de ese año en Toronto (Canadá).

Andrew Clay Shafer (creador de Puppet Labs y ahora en Pivotal, la spinoff de MVware y EMC2 que liberó la base de datos NoSQL Redis), tenía un slot asignado, pero a su charla sólo había acudido una persona, un belga llamado Patrick Debois, así que decidió ahorrársela. Asaltado en los pasillos por ese mismo joven, que había ido a contar su caso de no-éxito («Infraestructura Agile y operaciones: ¿cómo de infra-ágil eres?»), y ante su insistencia, comenzaron a discutir cómo se podría llevar el agilismo al mundo de la infraestructura y la administración de sistemas.

Patrick había vivido una experiencia muy frustrante en un proyecto para el ministerio belga de finanzas que ni desarrolladores de software ni administradores de sistemas habían logrado sacar adelante. Animados por este intercambio de ideas, acordaron crear un grupo en Google para abrir la discusión a la comunidad, el Agile System Administrators Group.

DevOps según WikiPedia

Es complicado encontrar una definición canónica, y es frecuente de hecho encontrar usos del término contradictorios, o flagrantemente incorrectos.

«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«.

CONCEPTOS GENERALES


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.
Odoo • Text and Image

¿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 definición de hombres orquesta?

Un 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.

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

Un modelo de desarrollo de productos digitales

Odoo • A picture with a caption
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.

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.

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.

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.

Los equipos tienen muchas herramientas de DevOps para facilitar la adopción de una cultura de DevOps en su organización. La mayoría de los equipos confían en varias herramientas y, de este modo, crean cadenas de herramientas personalizadas que han adaptado a sus necesidades en cada fase del ciclo de vida de las aplicaciones. Si bien adoptar una herramienta o una tecnología específicas no es lo mismo que adoptar DevOps, cuando la cultura de DevOps está presente y los procesos están definidos, la gente puede implementar y optimizar las prácticas de DevOps si eligen las herramientas adecuadas.

Odoo • Text and Image

Tanto DevOps como el método ágil son marcos de desarrollo de software para elaborar un producto, un lanzamiento o una versión. DevOps es una cultura que promueve la colaboración entre todos los roles implicados en el desarrollo y el mantenimiento de software. El enfoque ágil es una metodología de desarrollo diseñada para mantener la productividad e impulsar el lanzamiento de versiones en una realidad muy común de necesidades que cambian continuamente. DevOps y el método ágil no solo no se excluyen mutuamente, sino que a menudo se practican juntos.

El verdadero significado de DevOps es la entrega de valor a los clientes de forma constante. Los resultados de la adopción de DevOps deben valorarse en relación con los objetivos de negocio. Los equipos de DevOps se alinean en torno a estos objetivos y los consiguen usando ciclos de lanzamiento de versiones cortos. Estos ciclos permiten responder con agilidad al mercado y aprender continuamente con los comentarios de los clientes.