Blockchain, Data Analysis, React Native, Business Intelligence, JWT e inclusive Docker. ¿Qué tienen en común todos estos conceptos? Son buzzwords. Palabras que en el entorno de los desarrolladores se volvieron con justa razón virales.

DevOps llega a la vida de las empresas de software ofreciendo ser la panacea a cualquier inconveniente tecnológico y de comunicación entre equipos clave. Pero… ¿Qué es?

Hoy en día, no puede entenderse el desarrollo de aplicaciones de cualquier tipo sin un enfoque DevOps. Desde las pruebas de concepto hasta el lanzamiento, pasando por el testing y los entornos de prueba, todos los pasos involucrados requieren de la máxima agilidad posible, y eso pasa por integrar los procesos y los equipos de programación con los de sistemas.

DevOps es una metodología con la que se cambia el modo en el que se gestiona el ciclo de desarrollo de software, a nivel tecnológico pero sobre todo a nivel cultural. Los equipos de desarrollo y de Operaciones (o sistemas) eliminan el trabajo “apilado” y comienzan a trabajar de una manera colaborativa y bidireccional. Entre todos cubren el ciclo completo de desarrollo de software, garantizando procesos mucho más rápidos y seguros, entregas más fiables y productos de calidad. Para conseguirlo, se introducen nuevas herramientas que contribuyen a la automatización de tareas repetitivas y al trabajo en equipo, ayudando a agilizar los procesos y evitar trabajo duplicado y la introducción de nuevos errores.

definicion-devops

DevOps establece una “intersección” entre Desarrollo, Operaciones y Calidad, pero no se rige por un marco estándar de prácticas, sino que permite una interpretación mucho más flexible en la medida en que cada organización quiera llevarlo a la práctica, según su estructura y circunstancias.

El objetivo final de DevOps es minimizar el riesgo de los cambios que se producen en las entregas y dar así un mayor valor tanto a los clientes como al propio negocio.

Una de las problemáticas que pretende zanjar el movimiento DevOps es la llamada “pared de confusión”. Es el conflicto que surge cuando el equipo de Desarrollo hace el traspaso de código al equipo de QA, y éste trabaja en el testing y en los scripts para el pase a producción. Es entonces cuando surgen incidencias que no se sabe bien a quién atribuir, si a Desarrollo por entregar código desarrollado con fallos o a Operaciones por realizar una mala configuración. Y mientras ambos equipos se ponen de acuerdo, la fecha de lanzamiento está cada vez más cerca y no hay tiempo para hacer más pruebas-error.

En esta situación cada departamento vela por sus intereses (el primero busca un sistema fluido y dinámico en el que poder añadir nuevas funcionalidades, el segundo la estabilidad por encima de todo) y tienen sus propias prioridades y forma de trabajar, provocando en más de una ocasión fricciones y falta de confianza entre los equipos. Precisamente DevOps entra en escena para integrar los intereses de ambos departamentos y crear un ambiente de confianza y cooperación mediante prácticas que fomentan una actitud positiva respecto al fallo y una cultura sin culpas (blameless culture), colaborativa, en la que la información fluye, el talento se intensifica y el equipo se siente comprometido. Se contribuye a la comunicación y trabajo bidireccional mediante actividades en la que desarrolladores y Operaciones trabajan estrechamente, por ejemplo en las tareas de pruebas y calidad.

Además de las implicaciones en las Personas, DevOps supone un cambio en los Procesos. DevOps va más allá de las metodologías ágiles y se fundamenta en la llamada metodología  conocida como Lean. 

Finalmente quiero tomar las palabras de un gran blog que encontré (link aquí) para dejar en claro qué es y qué no es 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.

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.

Y tú? ¿Ya empezaste a pensar en cómo integrarte a DevOps en tu empresa?

Apresúrate que el futuro no espera a que la gente esté lista 🙂