DevOps, acrónimo inglés de development que es desarrollo en español y operations que es operaciones.
En la conferencia Agile de año 2008 en Toronto, Yhens Wasna y Patrick Debois introdujeron el término en su charla sobre Infraestructura Ágil.
Nació un concepto nuevo en las empresas, un concepto que venía a dar nombre a una necesidad, la de la colaboración. Se expresa que la necesidad de DevOps surgió en las implementaciones de desarrollos de software ágil, ya que eso llevó a que las organizaciones necesitan liberar su software con mayor frecuencia.
Fue entonces cuando se reconoció una necesidad inherente en el mercado y se decidió crear una tecnología que diera solución a los problemas que surgen entre los dos departamentos principales en cualquier empresa, el de operaciones y el de desarrollo.
A medida que se trata de superar la tensión que esto suponía para sus procesos de gestión de versiones, debían adoptar patrones como la automatización de liberación de aplicaciones, las herramientas de integración continua y la entrega continua.
Si bien la entrega continua también se centra en la automatización de los procesos de entrega de software, DevOps además se centra en el cambio de la organización para admitir una gran colaboración entre las muchas funciones involucradas.
DevOps sí mismo no es un producto o una solución igual para todo. Es un sistema de colaboración, comunicación y evaluación de que una empresa tiene que desarrollar y adaptar a sus propias circunstancias; no es solo un término, no es un rol ni un equipo concreto en la organización, no es automatización y no es únicamente un cambio en los procesos, es una filosofía o actitud.
Por otro lado, una definición propuesta por Bass, Weber y Zhu es: DevOps dice que es un conjunto de prácticas destinadas a reducir el tiempo entre el compromiso de un cambio en un sistema y el cambio que se coloca en la producción normal, al tiempo que garantiza una alta calidad.
· Entrega más rápida
· Alta satisfacción
· Mayor frecuencia de lanzamientos
Los posibles obstáculos para una implementación DevOps están relacionados con la forma en que está organizado el negocio y con cuestiones relativas a los presupuestos.
El principal obstáculo es la complejidad organizacional, demasiadas personas o departamentos involucrados y excesivas interdependencias; la falta de comprensión de las fases del proyecto, de todo el ciclo de desarrollo y de quién es responsable en cada una de las fases y actividades, y la falta de presupuesto o la falta de claridad sobre qué presupuesto cubre cada elemento.
Como muestra del valor de implementar DevOps, los usuarios muestran mayor confianza hacia una empresa, banco o institución pública que mantenga actualizada su página web y cuente con una aplicación que realice constantemente mejoras en su interface para proporcionar una experiencia de usuario satisfactoria.
Dentro de los beneficios que obtiene una empresa que adopta la cultura DevOps son:
Mejorar la Colaboración interna
Mejor Time To Market
Incrementar la calidad de productos y servicios
Reducción de costos y tiempo de desarrollo y despliegue
Aumentar la innovación y creatividad
Mayor rendimiento y estabilidad
Mejorar la relación con los clientes, entregas más oportunas.
Las empresas debe medir el éxito de su estrategia DevOps en función de factores internos como menores costos, menor número de errores (bugs), mejora de eficiencias, mayor retorno de la inversión y mejor colaboración entre departamentos, entre otros.
Otros evalúan el éxito en función de métricas de negocio de carácter externo como el incremento de los ingresos, tiempos más cortos de lanzamiento de productos al mercado, mejora de la posición competitiva y mejor experiencia del cliente.
Los seis pasos que las empresas que desea implementar DevOps, como parte de su cultura de colaboración son los siguientes:
Cambio cultural. El primero que se menciona es muy sencillo de entender, difícil de implementar y es crucial. Transmitir al equipo el valor de DevOps y los beneficios de incorporarlo en su trabajo, así como escuchar sus inquietudes; posteriormente, expandirlo a toda la organización y considerando que esta transición no es instantáneo, por lo que involucra tiempo y recursos.
Colaboración. La colaboración es fundamental, por lo que los problemas que DevOps quiere resolver aparecen cuando los distintos equipos de un proyecto realizan su trabajo sin considerar el impacto en los demás. Se debe organizar al equipo de desarrollo y a los colaboradores alrededor del desarrollo, para establecer un modelo mixto y transversal, con el fin de repartir habilidades y estén disponibles donde sean necesarias.
Automatización. Automatizar y administrar con herramientas, tanto en la infraestructura como en la plataforma, esto permite minimizar los tiempos de despliegue del producto o servicio a desarrollar.
Mejora Continua. DevOps es un proceso sin fin, por lo que cada mejora devolverá más tiempo para seguir invirtiéndolo en innovación que podrás invertir en seguir innovando.
Monitoreo. Cada una de las implementaciones que se realizan deben ser cuantificadas y evaluadas, este monitoreo es esencial en el desarrollo de la Filosofía DEVOPS, se deben revisar mejoras, rendimientos y cualquier indicador que se pueda implementar en los procesos que se desarrollan.
Inteligencia Artificial. La Inteligencia Artificial es clave para el desarrollo de monitoreo no tradicional, donde las piezas a chequear de todo tipo de componentes están presentes en gran cantidad, el poder anticiparse a grandes contratiempos es fundamental en esta nueva era de los negocios.
El profesional DEVOPS no es solo para las áreas de desarrollo de software, sino lo aplicamos para cualquier ámbito en donde se desarrolla un producto y se deben integrar las áreas de creación y desarrollo de un producto con las áreas de producción.
DevOps: Colaboración
El trabajo en equipo puede parecer un hecho en muchas empresas de todos los rubros, después de todo, un departamento depende de otros para construir o implementar un producto entregable.
Sin embargo, cuando hay límites estrictos entre los departamentos, como los que dividen los departamentos de Desarrollo y Operaciones, este trabajo en equipo se transforma más como pasar el testigo, que una colaboración legítima; cualquier esfuerzo para ser más ágil será difícil, si no imposible, mientras que los límites permanecen.
El término DEVOPS en sí mismo es el trabajo en equipo que es necesario para la implementación de software ágil, pero a menos que la empresa está dispuesta a desafiar a su propio status quo, no habrá beneficios reales.
DevOps potencialmente podrían permitir una velocidad mayor al mercado y un sistema de administración continua que hace que la estrategia de construir y desplegar sea posible; cuando los problemas se abordan y son reparados más rápidamente, los clientes tienen menos problemas y el potencial de aumento de lealtad a la marca crece.
A pesar de todas las metodologías que tenemos en TI, entregar un sistema a producción todavía es un acontecimiento de cuidado.
Los desarrolladores se ponen nerviosos porque tienen la presión de entregar funcionalidad nueva lo antes posible.
Por el otro lado, el equipo de operaciones, cuya responsabilidad es mantener los sistemas operando en producción se opone a los cambios porque sabe que estos pueden traer inestabilidad y tirar los sistemas.
Así que cuando hay problemas, comienza la asignación de culpas: es un problema de desarrollo; no, es un problema de operaciones, esta escena se repite con frecuencia en la mayoría de las organizaciones.
El problema es amplificado por dos tendencias en la industria: el Desarrollo Ágil y Cloud Computing. Por naturaleza, el desarrollo ágil acoge el cambio y fomenta liberaciones pequeñas y frecuentes piezas a producción; esta mayor frecuencia agrega presión al equipo de operaciones, convirtiéndolo en un cuello de botella, lo curioso es que aun cuando el desarrollo ágil fomenta la colaboración entre los interesados, la mayoría de los equipos ágiles no colaboran con el personal de operaciones. Los equipos de integración y pruebas, que tradicionalmente han funcionado como intermediarios entre desarrollo y operaciones, también están sintiendo la presión.
A su vez, Cloud Computing ha obligado a los equipos de operaciones a cambiar la forma en que gestionan la infraestructura. Las labores manuales ya no son posibles cuando están lidiando con miles de máquinas.
Si se va a estar liberando frecuentemente a producción, se requieren herramientas para soportarlo, la virtualización facilita y acelera la creación de ambientes, y la nube elimina el problema de los recursos computacionales; lo que hace las cosas distintas es la capacidad de administrar la infraestructura y la gestión de configuración por medio de código; la infraestructura como código es el resultado de la infraestructura y plataformas como servicio, IaaS y Paas.
Estos conceptos habilitan a los equipos de operaciones para automatizar gran parte de su trabajo, no solo el aprovisionamiento inicial de infraestructura, sino todo el ciclo de vida.
DevOps busca eliminar las barreras entre desarrollo y operaciones, considerándolo que es una continuación del desarrollo ágil, ya que a fin de cuentas el producto no genera valor si no está en producción.
El equipo de operaciones es un miembro valioso del proceso de construcción de software, lo que permite que los requerimientos no funcionales tales como seguridad, rendimiento, estabilidad o respaldo sean discutidos al mismo tiempo que los requerimientos funcionales; esto muestra que los equipos de desarrollo y operaciones se colaboran para lograr desde un inicio los objetivos del producto y no cuando el sistema ya está terminado.
Conforme sean más frecuentes las puestas en producción, las actividades se van impregnando en los profesionales; cuando algo es difícil, hazlo con mayor frecuencia; la práctica hace al maestro; liberar frecuentemente a distintos ambientes (desarrollo, pruebas, preproducción, producción) y utilizando el mismo conjunto de modelos de gestión de la configuración, ayuda a generar resultados predecibles y repetibles, bajando considerablemente el riesgo de fallas o errores de despliegue de las soluciones.
Por lo tanto, parte de los entregables de un sistema de software, debe, necesariamente, ser el proceso automatizado para liberar dicho software a distintos ambientes, todos los cambios a un ambiente deben seguir el mismo proceso, independientemente de si lo que se está cambiando es código, infraestructura, o datos; este concepto es lo que se conoce como el deployment pipeline y es la base de la entrega continua.
Las personas y los procesos no se pueden cambiar de la noche a la mañana, un patrón común en la adopción de DevOps, en que los cambios organizacionales van de la mano de la introducción de nuevas herramientas. Una herramienta por sí sola no cambiará nada, lo primero que se necesita es un cambio de visión gestión y en el comportamiento, lo que genera un cambio de cultural.
Las empresas tradicionales son las que tienen mayor necesidad de colaboración, y DevOps es a fin de cuentas, tan solo una etiqueta para invitarnos a mejorar la colaboración. Es perfectamente posible adoptar prácticas de DevOps en contextos de ITIL y CMMI, y de hecho es recomendable ya que brinda una alineación natural entre TI y el negocio.
Filosofía Devops
La Implementación de la filosofía DevOps, es un cambio que supone un cambio cultural, requiere colaboración, discusión y es transversal a toda la organización, para esto se definen cuatro conceptos sobre los que descansan el resto de patrones y acciones a tomar para una transformación DevOps.
Cultura Organizacional
Pensamiento sistémico: El buen funcionamiento de la organización al completamente y no en segmentos independientes. Los equipos de Desarrollo y de Operaciones de sistemas deben participan conjuntamente en todo el ciclo de vida de construcción de un producto, cuando se definen las funcionalidades, generan los requerimientos, el desarrollo y acabando en la entrega a operaciones para ofrecer el resultado como un servicio seguro, fiable, eficiente en rendimiento, costo y soporte.
El concepto incluye que no se pierde efectividad en la cadena hacia operaciones, no permitir mejoras locales que supongan degradación del flujo completo de valor de la organización y persigue un profundo conocimiento del sistema en la organización. Todos deben conocer el producto y su escala de valor.
Amplificación de ciclos de feedback: El objetivo de las iniciativas de mejora de procesos se implementa para que las mejoras continuas puedan ser realizadas dónde corresponda. Este concepto conlleva el entendimiento de los clientes, internos y externos, acelerando y amplificando el ciclo de feedback para abarcar a todos los actores del flujo de producción de valor de la organización.
Experimentación continua y aprendizaje: Se debe generar una organización que respalde la creación de una cultura que promueva la experimentación y el aprendizaje del fallo, repetición y práctica ya que llevan a la perfección de los equipos; esto permite garantizar la posibilidad de la mejora continua en la organización; además, ayuda a aprender a salir de la zona de peligro si durante la experimentación se ha ido muy lejos.
Esto conlleva obtener tiempo para mejora en el trabajo del día a día y recompensar a los equipos por haber innovado y asumido riesgos.
Personas
DevOps es por definición cultura y personas. Los equipos crecen y tienden a construir arquitecturas complejas lo más rápido posible y todos intentan hacer todo simple, esto no es sostenible. Adoptar DevOps en los equipos no es inmediato ya que es necesario desterrar viejas costumbres que suelen estar muy arraigadas y el cambio es progresivo, son aspecto sobre el que se debe trabajar.
Temores como que la automatización ponga en peligro la empleabilidad del personal de sistemas o que la organización no encaja en la cultura DevOps son barreras que se deben superar. La creatividad y soluciones inteligentes en los procesos de automatización se deben destacar y recompensar con ascenso profesionales y nuevas responsabilidades en la organización.
No desaparece la necesidad de realizar actividades de operación, solo se produce una transformación en la gestión de la infraestructura y se hace foco en el valor que proporciona el departamento de operaciones a lo largo de la cadena de producción de la organización.
Procesos
Toda la cadena de producción debe ser definida y puesto en valor. Los miembros de la organización deben conocerlo. Conocer el negocio, en qué puntos la gestión de sistemas TI aporta valor y cómo, detecta cuello de botella, se debe obtener el feedback y mejóralo. Se debe incorporar a personas de cada departamento para participar en la creación de dicho proceso.
Esto es aplicable a todo tipo de procesos de gestión de proyectos, independientemente de la metodología utilizada, aunque metodologías ágiles lo favorecen.
Tecnología
La tecnología puede ser de gran ayuda, se utiliza como elemento acelerador que aporta características indispensables al proceso como son repetitividad y fiabilidad. Ambos aspectos impactan directamente sobre la calidad y la predictibilidad de los equipos, la empresa y por lo tanto mejora la relación con el cliente.
Existen numerosas herramientas que pueden ayudar a mejorar puntos diferentes del proceso. Versionado de código, infraestructura como código, integración continua, entrega continua y gestión de la configuración son algunas de las áreas clave en las que la tecnología ofrece mejoras considerables.
Habilidades DevOps necesarias para el despliegue continuo
Un DevOps debe tener habilidades técnicas duras en las áreas en donde se desarrolla la empresa, así como habilidades blandas tales como la empatía, colaboración, comunicación eficaz y oportuna. Se debe tener en consideración que DEVOPS, es un profesional que no solo está presente en el desarrollo de software, sino, en el desarrollo de cualquier tipo de producto.
Las empresas con desarrollos Ágiles al requerir despliegues de sus productos en forma repetitiva y que los productos aporten un incremento de valor real para los clientes, exigen orientación de alto nivel para la convergencia exitosa de los desarrollos, pruebas y operaciones como parte de una iniciativa de entrega continua.
En un entorno Agile, alguien con habilidades específicas, incluyendo un conocimiento integral de las prácticas de colaboración y de negocios, es necesario para mantener la dinámica y lograr los mejores resultados de negocio; esto ha dado lugar a la aparición de los profesionales DevOps. Estos profesionales deben poseer habilidades bases muy extensas; sin embargo, no hay una carrera formal para convertirse en un ingeniero DevOps.
Existe una amplia combinación de sistemas imperantes, servicios y conjuntos de herramientas asociadas para desarrollar, implementar y dar soporte productos. A menudo existe cierta superposición o entrenamiento cruzado; pero los DevOps más exitosos y efectivos tienen la experiencia más profunda en administrar las instalaciones que la empresa utiliza actualmente o planea utilizar.
Las habilidades de los DevOps incluyen construir, desplegar y operar, así como la gestión de la instalación. También deben construir una amplia experiencia con muchas herramientas específicas y adoptar las mejores prácticas. DevOps puede tener diferentes significados para diferentes organizaciones.
El producto siempre está cambiando, y se necesita sólidas habilidades de colaboración y de gestión de versiones para integrar los componentes correctos y crear una versión que funcione.
Los DevOps no solo revisan el producto a través del desarrollo del mismo; también proporcionan las indicaciones necesarias para facilitar esos nuevos lanzamientos en el lado de las operaciones.
Los DevOps extienden sus conocimientos desde los propios d cada negocio, hasta las infraestructuras, servidores y almacenamiento, redes y sistemas operativos. Debido a sus conocimientos, puede guiar el aprovisionamiento y la implementación de cada nuevo despliegues de cada producto o servicio, que por lo general se extiende a la creación y mantenimiento de servicios fiables y disponibles.
Un DevOps evalúa objetivamente el desempeño de cada nueva versión, realiza ajustes en los recursos y plataformas provisionados según sea necesario.
Las habilidades del DevOps no terminan con el conocimiento técnico y un conjunto de herramientas de gestión. El éxito en este papel también depende de las habilidades blandas que se encuentran en los líderes y gerentes de negocios.
Un DevOps representa un papel de alto nivel que se extiende por varios equipos dentro de una organización. Un DevOps funciona entre diferentes disciplinas, interactuando con los desarrolladores de productos o servicios, personal técnico y líderes de negocios con el mismo aplomo. Esto significa que las habilidades de un DevOps incluyen ser un comunicador experto, que es también un administrador capaz, que puede hablar el idioma, hacer la caminata y ver el punto de cada equipo, y luego reunir a esos profesionales dispares de una manera productiva para garantizar desarrollo continuo rápido que les permita lograr los mejores resultados de negocio.
Con tantas personas y distintos intereses participando en el proceso, hay un sinnúmero de problemas técnicos y profesionales que inevitablemente surgirán con el tiempo, entre ellos se incluyen los conflictos interpersonales, roles y responsabilidades cambiantes dentro de la organización, y procesos de negocio rotos, un DevOps debe evaluar estas situaciones y buscar soluciones constructivas que permitan lograr los objetivos. Por ejemplo, si un ciclo de lanzamiento se ha retrasado por pasos manuales ineficientes, un DevOps puede hacer un caso técnico y de negocio para invertir en automatización.
Los DevOps a menudo tienen uno de los papeles más desafiantes técnicamente y profesionalmente en los negocios modernos. Las personas que se enfrentan a los retos reconocen las recompensas que se extienden más allá del cheque de pago. Para algunos DevOps, hay una emoción innegable en participar en todo el ciclo de entrega de productos. Otros disfrutan de romper las barreras tradicionales y fusionar los silos de desarrollo y operaciones. Otros más tienen una habilidad especial para la racionalización de los procesos y la optimización de cómo las aplicaciones se implementan y ejecutan. En última instancia, el verdadero reto de ser un DevOps es llegar allí en primer lugar. Actualmente no existe una ruta formal de la carrera y la lista de habilidades es larga. Un DevOps no está hecho; tal persona evoluciona y crece dentro del DEVOPS.
Los DevOps no solo adoptan las nuevas habilidades de generación de productos, las herramientas de automatización o las tácticas de aprovisionamiento; ellos colaboran entre equipos, escuchan las ideas y preocupaciones de los compañeros, y buscan maneras de mejorar los procesos y métodos para hacer las cosas. No es solo el software, sino más bien el proceso de generación de un producto, que mueve el negocio hacia adelante y proporciona un beneficio estratégico.
Comments