¿Qué es DevOps?
DevOps es un proceso para desarrollar, entregar y operar software. Tan simple como eso, no debe subestimar la comprensión de lo que realmente es DevOps. Hay muchas definiciones de DevOps en los estantes de las librerías y en Internet que son de interés propio o, en el mejor de los casos, faltan y son confusas.
Algunas definiciones de DevOps impulsadas comercialmente combinan estrechamente DevOps con algunas herramientas de construcción y entrega o plataformas de infraestructura en la nube determinadas. Aunque estas herramientas y plataformas podrían ser realmente útiles para lograr sus objetivos organizativos y de TI con DevOps, en realidad no puede conectar otra herramienta (que normalmente no tiene mucho control sobre ella porque no la ha escrito) o no puede migrar sus aplicaciones de software a plataformas de computación en la nube y luego anunciar que usted y su organización ahora ofrecen DevOps. Como dice un viejo pero poco conocido dicho, los cuervos se reirían de esto.
Otra variante engañosa, pero aún mejor, para definir DevOps es ver DevOps como una intersección de trabajo y personas en una organización de TI que une a los desarrolladores de software, probadores de software e ingenieros de operaciones de producción de software. Habiendo dicho eso, una vez que llegue al final de esta carta, no podrá evitar ver cuán seca es esta definición.
El mejor enfoque para definir DevOps es parecerse a DevOps en el desarrollo de software ágil iterativo y marcos de mejora de procesos como Scrum, Lean, ITIL, IDEAL (Iniciar, Definir, Establecer, Actuar y Aprender) y Six Sigma DMAIC (Definir, Medir, Analizar, Mejorar y controlar).
Aunque Agile Scrum, Lean, ITIL, IDEAL y Six Sigma DMAIC pueden servir como habilitadores eficientes para DevOps, DevOps no debe verse como un superconjunto mejorado y combinado de estas metodologías y técnicas. El razonamiento muy simple detrás de este hecho es que ninguna de estas metodologías y marcos, excepto Agile Scrum, se han introducido para resolver específicamente los problemas y servir para la industria del software.
Muchas prácticas y principios de DevOps se han derivado de Lean Movement después de que se han adaptado, experimentado, validado y ajustado para el desarrollo, la entrega y las operaciones de software. Además, DevOps tomó prestadas y adaptó muchas técnicas y filosofías de Continuous Delivery Movement, Toyota Improvement Kata, Theory of Constraints, Agile Manifesto e Agile Infrastructure.
Movimiento Lean:
El movimiento esbelto se puede resumir en siete principios:
- Ves el todo y creas valor para el cliente con el pensamiento sistémico.
- Usted construye la calidad, crea flujo y tira (en lugar de empujar).
- Usted entrega lo más rápido posible (plazos de entrega cortos para convertir materias primas en productos terminados o en términos de software para convertir ideas en beneficios y características en ejecución en los sistemas de producción).
- Amplias el aprendizaje y abrazas el pensamiento científico.
- Empodera a su equipo, lidera con humildad y respeta a cada individuo.
- Elimina el desperdicio (herramientas, sistemas, lo más importante el tiempo que puede dedicar a actividades improductivas).
- Tú decides lo más tarde posible (das decisiones justo a tiempo).
Movimiento de entrega continuo:
Habilita la entrega continua a través de la canalización de implementación. La canalización de implementación tiene tres misiones importantes: visibilidad, retroalimentación e implementación continua.
Visibilidad: usted hace que todos los aspectos del sistema de entrega, incluida la construcción, implementación, prueba y lanzamiento, sean visibles para todos los miembros de su equipo y otros equipos, de modo que promueva la colaboración en su equipo y ofrezca transparencia a sus clientes y partes interesadas.
Comentarios: usted y los miembros de su equipo se enteran de los problemas tan pronto como ocurren para que pueda solucionarlos rápidamente antes de colocar otro ladrillo en un bloque ya colapsado.
Implementación continua: implementa y libera cualquier versión del software en cualquier entorno, incluidos los entornos de prueba y producción a través de un proceso totalmente automatizado.
Toyota Mejora Kata:
Utiliza el kata de mejora de Toyota como una rutina para pasar de la situación actual a una nueva situación de una manera creativa, dirigida y significativa. Se basa en un modelo de cuatro partes:
- En su consideración de una mayor visión o dirección mejorada ...
- Comprendes las condiciones actuales.
- Luego, define las siguientes condiciones objetivo.
- En última instancia, intenta avanzar de manera continua e iterativa hacia esa condición objetivo. A lo largo de esta ruta, descubres obstáculos en los que hay que trabajar y los solucionas.
A diferencia de otros enfoques de mejora en los que intentó predecir el camino y centrarse en la implementación, con el kata de mejora de Toyota aprende y se basa en el descubrimiento que se produce en el camino. Usted y sus equipos utilizan el kata de mejora de Toyota para aprender mientras se esfuerzan por alcanzar una condición objetivo, y se adaptan en función de lo que están aprendiendo.
Teoría de las Restricciones:
En una organización, incluida la suya, que ofrece cualquier tipo de software, siempre hay un conflicto continuo entre su TI y su empresa. Responder rápidamente a las necesidades del negocio sin dejar de garantizar entornos de producción estables y predecibles es un compromiso continuo que enfrenta su TI. Suponiendo que ya es plenamente consciente de que no existe un lanzamiento de producción de riesgo, en un sistema complejo como el suyo no puede ser lo suficientemente rápido si desea garantizar un lanzamiento de producción de bajo riesgo. Y no puede garantizar una publicación de bajo riesgo si desea publicar rápidamente su código en sus sistemas de producción.
Te enfrentas a este conflicto cuando:
- Divide su organización de TI en muchos equipos pequeños, autónomos, independientes, autosuficientes y altamente colaborativos (debería comenzar a ver a sus equipos como "unidades inteligentes" con misión).
- Reduce el tamaño de su lote (el tamaño de su trabajo en curso) que se le da a cada equipo.
- Reduce su tiempo de entrega (tiempo necesario para convertir ideas y requisitos en beneficios y funciones de ejecución en los sistemas de producción).
- Construye circuitos de retroalimentación más rápidos, confiables y continuos para garantizar la preparación para la implementación.
Manifiesto ágil:
- Con DevOps te adhieres a los pilares definidos por el manifiesto ágil:
- Respeta a las personas y las interacciones sobre los procesos y las herramientas.
- Respeta el software que funciona sobre la documentación completa.
- Respeta la colaboración del cliente sobre los términos del contrato y la negociación.
- Respetas responder al cambio en lugar de seguir un plan.
Infraestructura ágil:
Nuestras organizaciones, grandes y pequeñas, incluida probablemente la suya, se basan en infraestructuras de nube híbrida, que combinan la nube pública y privada con servidores dedicados. Por lo tanto, obtiene las recompensas de la seguridad de la colocación en combinación con la flexibilidad y escalabilidad de la nube pública.
Estos son algunos de los principales impulsores de por qué una infraestructura ágil es beneficiosa para DevOps:
- Paga por lo que usa con precios transparentes y simples.
- Puede aprovisionar y desaprovisionar rápidamente sus entornos de prueba y producción desde su base de código (IaC - Infraestructura como código).
- Tienes flexibilidad arquitectónica.
- Puede expandir fácilmente otras geografías.
- Probablemente tengas mejor seguridad.
- Cumple con las normas sin auditorías ni costos adicionales.
Resumen
Este articulo intenta explicar qué es DevOps y qué no es. Para usted, también he cubierto los principales movimientos y principios de los que se derivó DevOps.
Una pequeña advertencia: como desafortunadamente muchas compañías ágiles lo han estado haciendo desde hace años, no debes ceñirte a ninguna definición estricta de cómo debes establecer DevOps en tu organización, en tu producto o servicio y lo más importante, en tu equipo. Para utilizar DevOps, No existe una solución única para todos. Ni en ágil ni en DevOps.
Nunca olvides que se trata de aprendizaje, experimentación y adaptación. Como DevOps hará un gran trabajo por nosotros, es nuestro mayor deber como mentes humanas identificar nuestra versión y tono correctos de DevOps. Esto es lo que han estado haciendo todas y cada una de las organizaciones DevOps exitosas, incluidas Google, Amazon, Facebook, Netflix y Apple.