Para qué DevOps, sus metas y una estrategia básica

28 Jun 2016 en Management

Devops.svg

Departamentos de desarrollo “congelaban” un relevamiento y diseño para luego crear software sin volver sobre el terreno de operaciones. Esa fue una realidad durante muchos años y ese alejamiento entre el desarrollo y los planos operacionales traía consigo imprevistos post proyecto, omisión de necesidades y desajustes en con los procesos. DevOps, acrónimo de Development (Desarrollo) y Operations (Operaciones) representa un comportamiento basado en la colaboración y en la comunicación como vías a la integración entre el trabajo de los desarrolladores de software y quiénes trabajan en la operación del IT y los procesos de una organización. El objetivo de DevOps es ayudar a que la empresa pueda generar productos y servicios de software en forma rápida y flexible.

 

DevOps gana protagonismo

En lo que hace a esta metodología o modalidad, las mejores prácticas han ganado importancia. Y esto es debido principalmente a la emergencia de usos como los de la movilidad e Internet of Things (IoT), dos ambientes en los que los desarrolladores se ven sometidos a una incesante demanda de aplicaciones que deben ser entregadas en plazos cada vez más cortos. La tendencia observada el año pasado por la firma consultora Gartner se está haciendo realidad. Gartner predijo que el crecimiento de la demanda de aplicaciones móviles y sus servicios asociados crecería por lo menos cinco veces más rápidamente que la capacidad de los departamentos de IT para poder entregarlas. Este escenario fue predicho para finales del año próximo. Estamos en el medio de un proceso de cambio intenso y exigente. Los directivos de empresas que no adviertan una situación de esta clase en su organización, deberían tomar esa ausencia de demanda como una señal de alarma que puede indicar un rezago competitivo.

La tarea de equilibrar las necesidades con las capacidades para satisfacerlas es parte de un proceso continuo del management. En lo que respecta a la tecnología de información y la generación de nuevas aplicaciones, el factor crítico es la capacidad de realizarlas bien y rápido. DevOps es una variante que está siendo contemplada asiduamente y para finales de este año, siempre siguiendo las predicciones de Gartner, pasará de ser la estrategia de nicho que hoy sólo emplean los proveedores de cloud, a ser utilizada en una cuarta parte de las grandes organizaciones globales. Esto podría leerse como “algo que no tiene que ver con mi empresa que es de menor tamaño,” pero si consideramos los ecosistemas de esas enormes organizaciones, notaremos que hay más involucrados de lo que se piensa. Desarrolladores, integradores, revendedores de valor agregado, consultoras, clientes, proveedores y muchos otros players van a sentir el impacto de la velocidad de cambio y extensión que logran las grandes empresas globales.

Si miramos a las estimaciones de los proveedores de tecnología de información, encontramos que su visión es aún más positiva respecto a la proliferación de DevOps. Una investigación realizada por la firma RightScale, muestra que un 80 % de las empresas de gran porte y un 70% de las medianas, están adoptando DevOps.

 

Una estrategia que requiere profundización

Como ocurre con muchas otras tendencias que se diseminan en el mercado, DevOps posiblemente no sea la solución para todo el mundo. Si bien es positivo que las compañías analicen la posibilidad de utilizar esta modalidad, primero deben asegurarse de lo que realmente aporta. Hay definiciones encontradas y la definición de DevOps todavía no es lo suficientemente contundente. Gene Kim, uno de los más notables impulsores de DevOps, admite que “una de las objeciones válidas respecto a DevOps es que no es fácil describir qué es realmente.” Pero aun cuando no se cuente con una definición aceptada, la mayoría de los expertos en proyectos de desarrollo de software coincide en ciertos aspectos básicos de DevOps. Se entiende que se trata de la creación de una cultura en la que los grupos de desarrollo y los de operaciones trabajan conjunta y cercanamente. Nacido bajo los principios del desarrollo Agile y Lean, DevOps involucra la mayor automatización posible de procesos para aumentar la tasa de implantación de nuevas aplicaciones en una organización. Su meta final no es la de hacer que el IT sea más eficiente, sino la de ayudar a que la organización sea más competitiva y exitosa.

 

La importancia de las mejores prácticas

En una columna escrita para Datamation, Cynthia Harvey se ocupó de recoger sugerencias efectuadas por notables expertos del mercado. Se trata de principios centrales que sin duda están abiertos a la variedad y al análisis para determinar la forma en que se utilizará DevOps en cada organización. A continuación vemos las sugerencias que reunió Cynthia en su excelente artículo.

La primer sugerencia es comenzar de a poco. Intentar hacer demasiado de entrada es un camino seguro al fracaso con DevOps. El IT de toda organización de cierto porte tiene procesos y una cultura arraigada que no se puede cambiar de un día al otro. Lo que los expertos recomiendan es comenzar con un proyecto o un equipo de trabajo que se pueda beneficiar claramente con las prácticas DevOps. La clave es seleccionar un proyecto donde DevOps tenga gran probabilidad de éxito y de convertirse en el punto de partida para futuros proyectos.

Los cambios deberían operarse allí dónde se experimente mayor dificultad en el desarrollo e implantación y por ende exista la posibilidad de mayores beneficios.

La mayoría de los directivos de IT con experiencia reconoce la importancia de tener un éxito temprano para que el equipo de trabajo gane confianza y se convierta en ejemplo. De ese éxito temprano dependerá a menudo la capacidad de llevar el cambio a mayor escala. Y no hay que dejar de lado la importancia de ese proyecto. Deberá ser algo significativo para el negocio de la empresa. Si el proyecto inicial no es un proyecto estratégico, la gente lo desmerecerá.

 

En segundo lugar, aparece la recomendación de centrarse en la cultura y no en las herramientas. Como se trata de un cambio principalmente cultural, la compra de recursos de automatización o nuevas herramientas no será suficiente para traer los cambios esperados.

Y así lo entiende Stevan Arychuk, de la firma NewRelic, especializada en monitoreo de performance de aplicaciones. “Un error común es enfocarse en la tecnología y no en los elementos culturales. DevOps es acerca de la confianza y la colaboración entre equipos de ingeniería y operaciones. Las herramientas y las tecnologías deben estar al servicio de esa meta.”

Esto aleja una creencia frecuente entre la gente de IT: la de que las herramientas pueden resolver los problemas. Si bien son importantes en la transformación que conlleva DevOps, no sirven sin un cambio cultural. Los objetivos de la empresa, la comunicación y las razones internas son importantes. La solución técnica debería elegirse cuando los cambios culturales son verificados como posibles.

 

En tercer lugar y ya pasando ahora sí a las herramientas, la recomendación es que conviene invertir en aquellas que ofrezcan visibilidad del proyecto en tiempo real. Para estimular la comunicación y la colaboración es importante que las herramientas permitan que todos los involucrados vean cómo avanzan los proyectos. También es clave que las herramientas que utilizan sean integrables entre sí. Es frecuente ver que las empresas compran múltiples recursos para DevOps. Por ejemplo, un sistema de administración del control de versiones, uno de seguimiento de bugs, una plataforma de comunicación, una de helpdesk, herramientas de monitoreo y más. Se han observado muchos ruidos y fracasos cuando la cadena de herramientas para el delivery no funciona en conjunto.

La integración de herramientas es lo más importante y adecuado para el soporte de DevOps.

Implantar tecnología de automatización es otro de los puntos importantes en DevOps. Tim Buntel de Xebia Labs, enfatiza en que “toda tecnología que contribuye a la automatización de procesos en forma controlada y escalable, es de gran ayuda.” Hoy son muchos los proveedores que ofrecen esta clase herramientas que pueden simplificar el proceso de configurar, monitorear y mantener una estructura de red de modo que se puedan desplegar aplicaciones más rápidamente y mejorar la eficiencia del IT.

Siguiendo la misma línea, tenemos a la tecnología de containers como lo es Docker y que pueden ser de gran ayuda. Los containers facilitan el tránsito desde los servidores de desarrollo a los de producción y eliminan gran parte de los problemas de la implantación.

Aumentar la velocidad de despliegue. De acuerdo a un informe sobre el estado de DevOps realizado por Puppet Lab el año pasado, “Las empresas de alto desempeño en su IT experimentan 60 veces menos fallos y se recuperan de los mismos hasta 168 veces más rápido que las de baja performance. A su vez, despliegan sus aplicaciones con una frecuencia 30 veces mayor y con tiempos de entrega hasta 200 veces más cortos.”

Otro estudio, realizado por Forrester y titulado “El nuevo imperativo del software: Entrega veloz con calidad,” muestra que los equipos de desarrollo con un ciclo de entrega rápido consiguen la mayor satisfacción de parte de las líneas del negocio. Lo que es de destacar, es que los equipos que fueron capaces de entregar nuevas aplicaciones en forma veloz, también crearon el software de mayor calidad.

Aumentar la velocidad del despliegue de aplicaciones es un objetivo central de los proyectos DevOps en muchas organizaciones. Para ello, suelen implementar tecnología y metodologías Agile, tales como desarrollo orientado por test, integración continua, programación en pares y metodologías Scrum. Aquí, los expertos consultados por Cynthia recomiendan que la tecnología y las técnicas no son objetivos en sí mismos; son medios para lograr metas tales como un despliegue más veloz, mejor calidad de código y, sobre todo, mejor apoyo a los procesos del negocio.

 

Aumentar el feedback o la retroalimentación desde operaciones. El lado desarrollo de DevOps suele recibir gran atención y las operaciones no tanta. Los expertos recomiendan no olvidar ese otro lado. Con frecuencia, las organizaciones logran gran eficiencia al mejorar la comunicación con y operaciones y otros segmentos del grupo de IT. En muchos casos, el uso de Agile ha optimizado el flujo de la carga de trabajo y en esas situaciones, los equipos de profesionales necesitan mayor feedback desde operaciones y no sub optimizar con más automatización del delivery.

Establecer indicadores (KPI) de performance para medir el logro o éxito de los proyectos es otra práctica aconsejada. Es bueno establecer porqué se está yendo a DevOps y cómo se determinará si se tuvo éxito. Responder estas preguntas antes de comenzar con DevOps es fundamental. En una situación ideal, DevOps debería tener impacto positivo en indicadores o KPI (Key Performance Indicators) que ya se utilizan en el proceso del negocio. La esencia de DevOps es la de lograr mayor aprovechamiento de la tecnología para mejorar el desempeño de la organización y debería ser posible la cuantificación de su impacto positivo en los KPIs que se utilizan.

El cambio de los procesos del negocio para aprovechar la mayor frecuencia de desarrollo es recomendable cuando hace falta. Cuando se hacen cambios en los procesos de funcionamiento del IT afecta a otras partes del negocio. Aquí se recomienda tener la capacidad de cambiar los procesos del negocio para alinearlos con la nueva cadencia de liberación de aplicaciones que surge de DevOps. Al respecto, David Cramer de BMC nos dice que “hace falta un enfoque holístico que atienda a todas las áreas relacionadas y a los procesos de gobernabilidad que se modifican con el lanzamiento de versiones más frecuentes y pequeñas.” La gente de IT debe comunicar y colaborar con los demás departamentos. Muchas organizaciones que han implementado DevOps reconocen que los beneficios se extienden a muchos otros equipos internos, no sólo a los de IT u operaciones.

Otra importante sugerencia es la de que las empresas participen en la comunidad DevOps. Con tantas empresas adoptándolo, no hace falta tener que reinventar la rueda. Las empresas pueden aprender mucho participando en las comunidades DevOps. Las prácticas y herramientas que se utilizan mejoran constantemente. La gente que trabaja en DevOps puede recurrir a la comunidad para comprobar teorías, hacer benchmark y encontrar ideas para nuevas mejoras.

Finalmente, podemos decir que DevOps es un proceso a largo plazo. A diferencia de otras prácticas de administración del IT como ITIL, Agile o Lean, DevOps es más un movimiento o filosofía de trabajo que un framework o conjunto de prácticas. No existe un punto en el que se pueda decir que se logró establecer DevOps. Siempre habrá que seguir experimentando con nuevas herramientas y procesos, tratando de encontrar aquellos que pueden ayudar a conseguir mayor integración entre el desarrollo y las operaciones, llevando a la meta final que es mejores resultados para la organización y su negocio.