DevOps Adopción.
El enfoque incremental se centra en la idea de minimizar el riesgo y el costo de una adopción de DevOps, al tiempo que se construyen las habilidades necesarias y el impulso necesario para lograr una implementación exitosa en toda la empresa.
Los «Principios de tres maneras» de Gene Kim establecen esencialmente diferentes formas de adopción incremental de DevOps:
La primera manera: Pensamiento de sistemas.
La segunda manera: Amplificar bucles de retroalimentación.
La tercera manera: La cultura de la experimentación continua y el aprendizaje.
Algunos modelos planteados.
- DevOps Implementation Framework (DIF).
La siguiente figura ofrece una descripción general de la relación entre el proceso DevOps y el marco DevOps como se describe en el artículo de DevOps:
Programa: El plan incluye todas las actividades de DevOps, tanto la inicial como la última entrega incremental del servicio.
Código: Agile Development cubre principalmente los aspectos que se nombran en el proceso del código.
Contextura: La integración continua incluye principalmente el proceso de construcción. Dentro de la unidad también se están realizando pruebas.
Prueba: Las pruebas continuas son más que el proceso de prueba, porque cubren todo el ciclo de vida de todos los tipos de prueba, como los casos de pruebas unitarias del proceso de compilación.
Prensa: Entrega Continua es más que un lanzamiento de lanzamiento. Incluye todo el pipeline de deployment que ya está en Agile Development con la definición de caso de prueba ejecutable.
Funcionar: Los procesos ágiles realmente incluyen todos los procesos de DevOps y no solo el proceso de operaciones. Todo el proceso de DevOps es un proceso Ágil.
Monitor: El monitoreo continuo incluye no solo la fase de producción sino todo el proceso de DevOps.
- DevOps Roadmap.
Esta plantilla de ejemplo de un mapa de flujo de valor (DevOps) puede ayudarte a lograr lo siguiente:
• Ilustrar, analizar y mejorar los pasos necesarios y las plataformas empleadas para la prestación de servicios.
• Analizar y mejorar el proceso identificando las oportunidades para eliminar el desperdicio.
• Hacer un seguimiento de un elemento durante todo el proceso de desarrollo y compilar mediciones en cada paso.
- DevOps Journey.
Para resolver estos retos, lo primero que se intenta es actuar sobre la agilidad y la calidad, dos de los puntos que la metodología DevOps promete mejorar. De esta forma, al inicio de este camino es muy importante revisar cuáles son las debilidades de los procesos y su nivel de madurez:
• El tiempo de entrega del producto es demasiado alto.
• La calidad no es la adecuada.
• Se demandan continuos cambios por integraciones erróneas debido a la falta de comunicación entre equipos.
• El producto no se adapta a las necesidades reales.
Una vez identificados los problemas, hay que aplicar los cambios necesarios para subsanarlos, y aquí es donde entra la metodología DevOps. Hay que tener en cuenta que se trata de un proceso iterativo, y que no se puede llegar a la implementación total de la noche al día.
La madurez del proceso actual se toma como pilar fundamental del tránsito hacia la nueva metodología. Si ya se siguen una serie de políticas —como el mantenimiento del código fuente (SCM), revisión de buenas prácticas, gestión de despliegues, etc.—, el camino será mucho más corto y menos accidentado. En cualquier caso, no resulta fácil contar con un grado de madurez lo suficientemente alto como para poder adoptar este tipo de metodologías sin realizar un esfuerzo importante. Teniendo en cuenta todo esto, lo ideal es abordarlo siguiendo una serie de fases.
MEJORA DEL PROCESO
Lo más recomendable es establecer proyectos piloto muy acotados, que empiecen a utilizar los principios que queremos adoptar. Esta fase es conocida como crawl, empezamos gateando:
• Gestión de tareas (kanban para DevOps). Permite conocer qué se está haciendo, el estado en el que se encuentra el proyecto y las interacciones con otros elementos del equipo. Facilita la agilidad del proceso.
• Automatizar tareas. En este primer estadio se busca automatizar las tareas más sencillas que se suelen realizar durante el proceso de desarrollo del software. Estas tareas se reutilizarán y mejorarán en fases posteriores.
• Medir los procesos. Es vital conocer el estado de todos los elementos que intervienen dentro del desarrollo de software, para iterar y poder mejorarlo.
• Coordinación de equipos. Todos los equipos involucrados deben estar alineados en cuanto al modo en el que se va a ejecutar el proceso. Es necesario definir los roles y responsabilidades de cada uno, aclarando qué tareas va a ejecutar. También es muy importante definir las interfaces de los equipos de trabajo, con el fin de ayudar a que la interacción entre equipos sea mucho más fluida.
Estos cuatro puntos deben establecerse de forma muy sólida, ya que son los pilares sobre los que se va a construir el nuevo edificio. A partir de aquí, los pasos para empezar a “gatear” son los siguientes:
• Onboarding. Es necesario que los equipos de proyecto conozcan la forma de trabajo dentro de la organización. Aunque pueda parecer obvio, en la práctica esto suele generar ineficiencias.
• Estandarizar la gestión del código fuente. Es habitual que, dentro de la misma organización, cada grupo gestione el código de las aplicaciones de forma muy diversa. ¿Por qué gastar esfuerzo en varios procesos que realizan la misma tarea?
• Estrategia de ramas. Es necesario hacer un estudio de las distintas tecnologías e implementar una estrategia de ramas adecuada para cada caso. Sobre ella se construirán los pipelines de despliegue.
• Documentar el error. Dado que no se van a poder evitar los errores, es necesario utilizar herramientas para saber quién está haciendo qué. Esto permite optimizar el proceso, pues disminuye la posibilidad de que se cometa el mismo error en las siguientes etapas, y facilita la automatización de tareas.
• Pruebas, pruebas y pruebas. Es fundamental definir la estrategia de pruebas automáticas, ya que ello agilizará el chequeo de modificaciones en el futuro. Además, esta herramienta asegura que lo que se va a desplegar está probado.
• Chequeo de la calidad de código. Si se utilizan las mejores prácticas y estándares de desarrollo, se estará ganando en agilidad y eficiencia. Es posible automatizar estos chequeos estableciendo un histórico de evolución del código, asegurando que el producto que se entrega cumple con la calidad que espera el cliente.
• Monitorización. La potencia sin control no sirve de nada. Es muy importante establecer mecanismos de revisión, tanto de la plataforma como del producto que vamos a realizar.
- DevOps Process.
La figura muestra una imagen de un proceso DevOps. No es una definición formal del proceso DevOps. Es una representación de lo que se puede lograr para realizar un servicio.
Las flechas azules representan el proceso de desarrollo y las flechas anaranjadas el proceso operativo. Estos dos procesos forman el núcleo metódico del enfoque DevOps. Este artículo no trata los recursos (aplicaciones, infraestructura y herramientas) y las personas (funciones, roles y cultura). Estos aparecen en arte de seguimiento por separado
La razón para considerar no es formalizar DevOps (lo cual es imposible de lograr), sino más bien clasificar e intercambiar historias y mejores prácticas de una manera más estructurada. Además, la construcción DevOps se vuelve más definible y, por lo tanto, más interpretable.
Cada uno de estos dos procesos se puede considerar como un conjunto de fases, procedimientos o mejor aún otro conjunto de procesos. Siempre son pasos recurrentes para lograr los mismos resultados con un propósito definido.
Además, es importante reconocer que estos procesos se dibujan secuencialmente, pero también tienen ciclos de retroalimentación. Por ejemplo, durante el proceso de prueba, el proceso de código puede activarse para resolver defectos, que es un desperdicio en el proceso que debe evitarse tanto como sea posible. Además, los procesos a menudo son más amplios que el alcance indicado. Por lo tanto, el proceso del monitor también incluye la supervisión de todo el proceso de DevOps.
© Scaled Agile, Inc.
DevOps – Scaled Agile Framework