9 escenarios donde implementamos cultura DevOps

"El arte de DevOps" reconoce 9 escenarios en las que podemos implementar cultura DevOps:

1- Planificar
2- Codificar/Desarrollar
3- Construir (Building)
4- Probar/Testing
5- Liberar (Release)
6- Implementar
7- Operar
8- Monitorizar
9- Pipeline CI/CD

The Art of DevOps — The 9 Situations
Chapter 11 — Phases of the DevOps lifecycle

Original en Inglés por Greg Billington, traducido con el soporte de OpenAI

Planificar es el arte de describir la secuencia ideal de eventos y predecir la duración de esos eventos, de manera que el líder técnico (con cierta certeza) conozca la fecha de la fiesta de celebración una vez que el lanzamiento se haya realizado.

Codificar/Desarrollar es la etapa de crear los scripts del pipeline CI/CD para ensamblar y compilar el código de los desarrolladores en un servidor central. Esto también requiere agregar tantas herramientas de verificación y equilibrio como sea posible, como el famoso "lint" o sonarcloud.

La construcción es la fase en la que el ingeniero ejecuta los scripts y plantillas para configurar o instanciar un entorno construido a partir de infraestructura real o virtual.

La prueba es donde el ingeniero verifica que el script se haya ejecutado correctamente y haya creado todos los recursos y elementos deseados, y los haya conectado mediante una red apropiada para que exista un entorno completo y operativo.

La implementación es donde el pipeline CI/CD construye un entorno e implementa el software de la aplicación en él, con una alta probabilidad de que funcione como se ha probado anteriormente.

La operación es donde el entorno y la aplicación se ejecutan para realizar la función requerida. El sistema también debe realizar tareas ocultas durante esta fase en preparación para cualquier contraataque que requiera la intervención de los señores de la Continuidad del Negocio o la Recuperación ante Desastres.

La monitorización es donde se observa el entorno y la aplicación para asegurarse de que estén funcionando dentro de límites aceptables; de lo contrario, se generará una alerta y se notificará al ingeniero de DevOps del evento de alarma. El ingeniero puede investigar más a través del uso de los registros del sistema operativo y de la aplicación, que son registros de una precisión y virtud incuestionables.

CI/CD no es una fase, sino un pegamento global significativo y magnífico llamado "el pipeline" que controla el flujo de los sistemas de construcción, prueba e implementación como el agua en un canal que solo tiene un camino a seguir. Esta es una tubería que se debe usar con frecuencia y cuanto más rápido fluya el agua a través de ella, mejor. Aquellos que no conocen la abreviatura CI/CD temblarán ante su gran poder e influencia.

Realiza incursiones para abastecer a tu equipo cuando haya terrenos fértiles en abundancia. Dales las mejores laptops, equipadas con montañas de memoria, discos rápidos y pantallas de sobra. Sus viejas y confiables armas pueden ser entregadas a otros que no estén en la vanguardia de la batalla y solo usen aplicaciones de oficina.

Los ingenieros, en momentos desesperados, pierden el sentido del miedo. Pueden estar abiertos a cambios repentinos y temerarios en los sistemas de producción, lo cual puede ayudar, pero debe usarse con precaución y solo si la situación es grave.

Prohíbe la interpretación de presagios y las dudas sobre el futuro; que no haya:

Ningún "TO-DO" (pendiente, por hacer sin completar en los scripts. Bloques de código comentados porque la función ha sido eliminada pero se han dejado como madera muerta para aquellos que siguen. Cualquier comentario que ponga en duda a aquellos ingenieros que codificaron esta monstruosidad en tiempos anteriores. Firewalls con puertos abiertos. Certificados autofirmados debido a la falta de cuidado o tiempo para obtener uno real. El principio para gestionar un equipo y construir un sistema es establecer un estándar que todos deben alcanzar.

Al construir tu solución:

Hazla frágil y susceptible de romperse y detenerse en cualquier oportunidad inesperada. Libera información sobre cualquier error y registra los registros con la máxima definición. Esto se conocerá como la "etapa de desarrollo".

Hazla resistente para la batalla, robusta para continuar cuando todo a su alrededor falle y flaque. Oculta al enemigo cualquier motivo de preocupación y continúa usando el mejor camino disponible; solo registra los errores más graves para que los registros no se llenen demasiado rápido. Esto se conocerá como "Producción".

Cuando viajes desde la tierra del Desarrollo a la Producción, puede haber otras tierras intermedias. Cuantas más tierras, mejor, ya que cada una tiene sus propiedades que facilitan su recorrido. Estas tierras pueden incluir entornos de Prueba de Características, Prueba de Sistema, Prueba Unitaria, Demostración al Cliente, Prueba de Aceptación del Cliente, Preproducción, Producción.

Prueba de Características: debe centrarse en una sola cosa.

Prueba de Sistema: debe asegurarse de que todas las partes del producto funcionen correctamente según la ley moral.

Prueba Unitaria: debe comprobar que un solo método cumpla con sus obligaciones.

Demostración al Cliente: debe incluir conjuntos de datos de fácil uso para el cliente, tener la capacidad de mostrar todas las características (adornos y detalles llamativos) y tener un aspecto visualmente atractivo, llevando la marca del cliente para obtener puntos extra. Por encima de todo, esto debe funcionar cuando se le solicite.

Prueba de Aceptación del Cliente: esto debe funcionar sin problemas, ya que el pago de recompensas y hitos depende de ello.

Producción: este debe ser el entorno más rápido y robusto de todos, debe ser seguro, estar siempre en funcionamiento y protegido de intromisiones accidentales.

Los planes deben ser flexibles y adaptables, y el equipo debe agregar un panel de control a su herramienta de observabilidad. Comparte este panel de control (o una versión simplificada) con los maestros y las partes interesadas. El libro de ejecución es un almanaque del mago y debe ser protegido para que solo aquellos que entienden y creen puedan verlo.

Si el enemigo, que son los "errores", deja una puerta abierta, debes entrar rápidamente y solucionarlos.

Evita un lanzamiento defectuoso asegurándote de tener el control del cliente y adaptándote al problema hasta que puedas luchar con un nuevo lanzamiento decisivo; de lo contrario, implementa un parche rápido.

Nicolás Georger

Nicolás Georger

Self-taught IT professional driving innovation & social impact with cybernetics, open source (Linux, Kubernetes), AI & ML. Building a thriving SRE/DevOps community at SREDevOps.org. I specialize in simplifying solutions through cloud native technologies and DevOps practices.