¿Qué es DevOps y cómo influye en la transformación digital de las empresas?

De la misma forma que no se puede entender la relevancia en la historia de Marco Antonio sin Cleopatra, y en la literatura, de Sherlock Homes sin el Dr. Watson o de Nuestro Don Quijote sin su Sancho Panza, en los proyectos digitales, concretamente en los desarrollados por los departamentos de software y TI, encontramos otra unión, otro tándem que debe ser indisoluble si queremos garantizar el éxito de los proyectos de software. Hablamos de la unión entre los departamentos de desarrollo de software y los equipos de TI/operaciones. Esta unión se está consiguiendo gracias a la implantación de DevOps. Pero, ¿y eso qué es?

¿Qué es DevOps?

Cuando hablamos de DevOps nos referimos al conjunto de prácticas de automatización de procesos en los departamentos de de software y TI. DevOps es un movimiento, o filosofía de trabajo, también definido como cultura de responsabilidad compartida o pensamiento sistemático, cuyo objetivo último no es otro que trabajar en base a la colaboración entre los miembros de los equipos de desarrollo de software y TI/operaciones para conseguir mejores y más ágiles resultados.

Este movimiento comenzó a hacerse más visible a partir del año 2007, cuando, siendo conscientes de la desunión e independencia con la que trabajaban los equipos de desarrollo de software y operaciones de TI, se decidió comenzar a dar un cambio en la forma de trabajar y modificar el modelo en base al que se había venido trabajando hasta el momento y que había demostrado sobradamente su ineficacia en cuando a la lentitud en la publicación de los desarrollos, desunión entre los equipos e insatisfacción en los clientes.

El modelo anterior no permitía a los desarrolladores de código inmiscuirse en la organización y operatividad de las tareas que llevaban a cabo los responsables de desplegar y mantener el código. Ambos departamentos trabajaban por separado y, en muchas ocasiones, persiguiendo objetivos diferentes. Este choque de trenes, esta separación de intereses, provocaba que los proyectos se resintiesen inevitablemente.

Sin duda, era necesario un cambio, así que DevOps nació como una cultura de trabajo colaborativa, de responsabilidad y objetivos compartidos entre los diferentes departamentos implicados en un proyecto de recopilación, realización de pruebas y publicación de software, que mejora la transparencia y refuerza las líneas de comunicación internas. ¿El resultado? Objetivos compartidos, mayor visibilidad del trabajo de los departamentos, integración de todo el equipo en los procesos de desarrollo, más agilidad en la publicación de software, mayor productividad, mejora en la resolución de incidencias y equipos menos frustrados y más motivados. ¿Magia? No, el DevOps no hace milagros, requiere de tiempo de dedicación e implantación paulatina en los equipos.

La transformación digital de las industrias

Estamos asistiendo a la transformación digital de las empresas, y no hay sector de actividad que se libre… Aunque “lo digital” a priori pueda afectar más a unos sectores que a otros, estamos ante una transformación transversal que no entiende de tipo de actividad o tamaño de empresa. Ante este tótum revolútum, las empresas deben estar preparadas, cambiando la forma en la que operan para satisfacer las demandas de los consumidores actuales (que por cierto, somos cada vez más exigentes y estamos más informados).

Por ejemplo, en este escenario de cambio, estamos viendo como Uber abre una brecha en el transporte urbano tal y como lo conocíamos hasta ahora; Slack permite a los equipos colaborar entre trabajadores de formas totalmente novedosas, o Docker rivaliza con los proveedores de virtualización más veteranos.

En la actualidad, la innovación se basa en el avance tecnológico que se produce más rápido que nunca. En esta dirección, los datos son el nuevo combustible que impulsa a las empresas, y no podemos obviar que en los últimos años ha habido una explosión de datos generados por las organizaciones, sistemas y consumidores que requieren de su puesta en valor. De hecho, en apenas dos años los datos acumulados en el universo digital crecerán desde los 4.4 zetabytes actuales hasta los 44 zettabytes (44 trillones de Gigas). ¡Una inmensa cantidad de datos que necesitan ser estructurados!

En definitiva, el avance tecnológico y la puesta en valor del dato son aspectos que están transformando las industrias. Por resumir, esta transformación está impulsada por tres vías fundamentales:

  • La tecnología potencia la innovación. La tecnología es la base de todos los procesos y servicios que desarrollan los negocios. Este ritmo frenético de transformación tecnológica implica a empresas y clientes finales que tienen a su alcance una multitud de maneras de participación e interacción.
  • El aumento de la demanda de los consumidores. Estamos en la era de los consumidores más y mejor informados. Muchas de las compras que se efectúan en la actualidad son cualificadas, es decir, las realizan clientes que se han tomado un tiempo más que prudencial en informarse sobre el producto y/o servicio y realizar una labor de comparación. Los consumidores tenemos al alcance de nuestra mano una gran diversidad y cantidad de opciones de servicios empresariales y productos que avanzan gracias a la tecnología disponible. El número de marcas con las que los clientes podemos interactuar es aparentemente interminable y, además, continúa creciendo. Por otro lado, si el servicio o producto no cumple con nuestras expectativas, los clientes podemos cambiar de marca, simplemente, tocando un botón en la pantalla o en el teclado.
  • Competitividad creciente. La innovación tecnológica de la que hablábamos, junto con la creciente demanda de los clientes, está aumentando la competitividad en todas las industrias. Cada empresa, incluso las organizaciones más grandes, se enfrentan a la posibilidad de nuevas irrupciones en el mercado de competidores más ágiles en tecnología que podrán atraer a clientes con servicios y/o productos más innovadores.

¿Hasta qué punto son determinantes las aplicaciones (apps) en el éxito de la transformación digital?

Pero si hay un punto clave dentro de esta transformación digital de las empresas y, por ende, de las formas de consumo, son las aplicaciones (apps) muy presentes en nuestro día a día. Ya sean aplicaciones B2B, de empresas a empresas, como CRM y herramientas de colaboración empresarial, o las aplicaciones B2C, de empresas a consumidores, como las aplicaciones de banca personal y los servicios de monitoreo de la atención médica, las aplicaciones llevan, como ninguna otra herramienta digital, la tecnología a la vida cotidiana. Permiten a los clientes interactuar con las marcas cómo y cuándo quieran, y posibilitan que las startups disruptivas puedan competir rápidamente contra marcas ya consolidadas en el mercado. Por tanto, las aplicaciones están siendo determinantes para dar forma y definir el panorama empresarial actual y futuro.

¿Qué factores hacen que una aplicación tenga éxito?

Existen millones de aplicaciones en funcionamiento. Tan sólo en Google Play encontramos más de 3.600.000 aplicaciones, a las que se suman las disponibles en Apple Store que, según datos de 2017, ya superaban los 2 millones. Cifras de vértigo que no hacen otra cosa que responder a la demanda creciente de apps de todo tipo por parte de los usuarios.

Sólo en España se descargan alrededor de cuatro millones de apps al día y el tiempo que pasamos “navegando” por ellas también se está incrementando, según datos de la consultora estadounidense App Anie, durante el tercer trimestre de 2017 se contabilizaron 325.000 millones de horas en el mundo, un 40% más de tiempo que el mismo periodo del año anterior.

Pero, encontramos apps útiles que suman millones de descargas y estrellitas doradas y otras que pasan completamente desapercibidas o que frenan su crecimiento poco tiempo después de su lanzamiento. ¿Qué factores determinan el éxito o fracaso de una aplicación? Que se decante la balanza hacia al éxito o el fracaso depende de la estrategia de software que lleve a cabo la empresa que la desarrolle.

En este sentido, el enfoque tradicional de la construcción y desarrollo de software, la metodología Waterfall, se ha quedado obsoleta. Este enfoque tradicional obligaba a los equipos implicados en la construcción y el desarrollo de software a trabajar de forma independiente, en departamentos separados en desarrollo, calidad y operaciones. En este ecosistema de profesionales trabajando a su libre albedrío y en el que la colaboración entre equipos brillaba por su ausencia, el software se planificaba durante meses y se preparaba un lanzamiento de la app que se fijaba en rojo en el calendario. Todos los equipos temían la fecha en cuestión, ya que cada uno de ellos operaba con objetivos diferentes y en base, en muchas ocasiones, a directrices distintas. Por este motivo, el proceso en su conjunto era muy propenso a fallar, además de pecar de ser poco ágil e ineficiente.

Hoy en día, las aplicaciones han evolucionado desde aplicaciones para equipos de escritorio a aplicaciones para web y móviles. Ahora son mucho más rápidas, ligeras y fáciles de utilizar. Los usuarios exigimos más velocidad y somos más intransigentes en cuanto a posibles fallos en las aplicaciones. Por tanto, el cambio en la forma en la que se utilizan estas aplicaciones requiere también de un cambio en cómo son desarrolladas por los equipos de construcción y desarrollo de software.

Los sistemas colaborativos se están convirtiendo en la respuesta. La colaboración entre equipos desarrolladores de software es clave para construir aplicaciones exitosas. El pipeline del desarrollo de software tiene que optimizarse para obtener versiones en ciclos cada vez más cortos. Este nuevo enfoque es el que explica a través de la filosofía que adelantábamos al comienzo del artículo: la cultura, movimiento y filosofía DevOps.

¿Cuáles son los aspectos fundamentales de DevOps y cómo afecta a la transformación digital de las empresas?

Como ya adelantábamos, existen numerosas definiciones de lo que es DevOps. De forma resumida, recordamos que se trata de una cultura, movimiento o filosofía que trabaja sobre cómo organizar el trabajo de los equipos de desarrollo y operaciones, con el objetivo de garantizar que las empresas puedan lanzar nuevos desarrollos software de calidad al competitivo mercado actual y a una velocidad que satisfaga las necesidades de los clientes más exigentes.

Existe un acrónimo “CAMS” que describe los principales aspectos de DevOps. Este acrónimo fue acuñado por dos pilares del movimiento DevOps en el mundo, John Willis y Damon Edwards durante la primera conferencia DevOpsDays en Estados Unidos celebrada en 2010. “CAMS” significa "Cultura, automatización, medición y uso compartido". Por su parte, Jez Humble, autor del libro “Continuous Delivery”, años después añadió la "L" para que "Lean" (infalible) formara finalmente “CALMS”.

Los aspectos básicos de DevOps y del modelo CALMS son los siguientes:

  1. Cultura colaborativa.Es necesario implantar en los equipos de construcción y desarrollo de software una cultura de responsabilidad compartida. De esta forma, todos los integrantes remarán “todos a una”, trabajarán con mayor agilidad, aumentará el grado de confianza de los proyectos y la capacidad de solventar las incidencias en los desarrollos. Por tanto, esta cultura colaborativa provoca mayor agilidad en el trabajo, fiabilidad en los desarrollos y mejora la gestión de los proyectos.
  2. Automatización de los procesos. A través de la filosofía DevOps los miembros del equipo tratarán de automatizar la mayor cantidad de tareas posibles y los procesos. Los proyectos serán más ágiles y trazables.
  3. La importancia de la medición. La cultura DevOps entiende los procesos de forma iterativa, repitiendo y analizando cada fase desde el inicio. Para que estos procesos sean exitosos, cuantos más datos se recojan y se analicen, más información tendremos para mejorar el sistema.
  4. Colaboración/Uso compartido. Antes de DevOps, con la metodología Waterfall, los equipos de desarrollo y operaciones se encontraban en confrontación constante. Un equipo no se hacía cargo de las incidencias o fallos provocados por el otro, lo que derivaba en cierta inestabilidad en los equipos. Sin embargo, con DevOps las responsabilidades son compartidas y ambos grupos de trabajo trabajar unidos durante todo el ciclo de vida del desarrollo de la aplicación.
  5. Infalibilidad (LEAN). Con DevOps la mejora continua y el fracaso van siempre de la mano. Los miembros de los equipos de desarrollo y operaciones serán capaces de visualizar el progreso del trabajo de forma constante y se fomenta la aceptación y resolución de los errores.

Aunque estos son los aspectos básicos de DevOps y del modelo CALMS, al igual que no hay dos organizaciones iguales, tampoco existen  dos empresas que hagan DevOps de la misma forma. La cultura DevOps hay que moldearla en base a cada equipo de trabajo y debe ser implementada de forma gradual.

En definitiva, DevOps puede ser una cultura muy útil para que la transformación digital sea un éxito en las empresas, al promover la agilidad y la entrega continua (continuos delivery) siempre con la mirada puesta en las demandas y necesidades cambiantes de los clientes y en la calidad.