Close

Supervisión de DevOps

Aumentar el conocimiento durante todas las etapas de la canalización de entrega

Fotografía de primer plano de Krishna Sai
Krishna Sai

Responsable de ingeniería de soluciones de TI


Con DevOps, la expectativa es desarrollar más rápido, realizar pruebas periódicas y publicar con mayor frecuencia, al mismo tiempo que se mejora la calidad y se reducen los costes. Para lograrlo, las herramientas de supervisión de DevOps proporcionan automatización y una mayor medición y visibilidad durante todo el ciclo de vida del desarrollo, desde la planificación, el desarrollo, la integración y las pruebas a la implementación y las operaciones.

El ciclo de vida de desarrollo de software moderno es más rápido que nunca, con varias etapas de desarrollo y pruebas simultáneas. Esto ha dado lugar a DevOps, un cambio de enfoque en el que se ha pasado de equipos aislados que realizan funciones de desarrollo, pruebas y operaciones a un equipo unificado que realiza todas las funciones según el concepto "you build it, you run it" (tú lo creas, tú lo gestionas) o YBIYRI.

Ahora que los cambios frecuentes en el código son habituales, los equipos de desarrollo necesitan la supervisión de DevOps, que proporciona una visión completa y en tiempo real del entorno de producción.

¿Qué es la supervisión de DevOps?


Diagrama de supervisión y observabilidad

La supervisión de DevOps implica monitorizar todo el proceso de desarrollo, desde la planificación, el desarrollo, la integración y las pruebas a la implementación y las operaciones. Supone una visión completa y en tiempo real del estado de las aplicaciones, los servicios y la infraestructura en el entorno de producción. Las funciones como la transmisión en tiempo real, la reproducción histórica y las visualizaciones son componentes esenciales de la supervisión de aplicaciones y servicios.

Icono de anillos entrelazados
Ver la solución

Optimiza la gestión de incidentes y la respuesta a estos

Icono de herramientas
Material relacionado

Más información sobre las herramientas de DevOps

Con la supervisión de DevOps, los equipos pueden responder a cualquier problema en la experiencia del cliente de forma rápida y automática. Lo que es más importante, permite adoptar el enfoque "Shift Left" hacia etapas más tempranas del desarrollo y reducir las interrupciones en los cambios de producción. Un ejemplo es una mejor instrumentación del software para detectar y responder a los errores, tanto manualmente a través de guardias como automáticamente siempre que sea posible.

¿Observabilidad o supervisión de DevOps?


Si imaginas que el lado izquierdo del símbolo de infinito es el lado del producto y el derecho, el de las operaciones, al gestor de productos que envía una nueva función a producción le interesa ver cómo el proyecto se divide en tareas e historias de usuario. El desarrollador del lado izquierdo del proyecto necesita ver cómo mover la función a producción, incluyendo tickets del proyecto, historias de usuario y dependencias. Además, si los desarrolladores se adhieren al principio de DevOps de "tú lo creas, tú lo gestionas", también tendrán interés por la corrección de incidentes.

Pasando al lado de las operaciones del ciclo de vida, el ingeniero de fiabilidad del sitio debe conocer los servicios que se pueden medir y supervisar para poder resolver cualquier problema que pueda surgir. Sin una cadena de herramientas de DevOps que relacione todos estos procesos, el resultado es un entorno caótico, desordenado y sin correlación. Con una cadena de herramientas bien integrada, se puede tener un mejor contexto de lo que está sucediendo.

Imagen del bucle de DevOps

La importancia de la supervisión de DevOps


Un enfoque de DevOps amplía la supervisión continua a los entornos de ensayo, pruebas e incluso desarrollo. Hay razones más que de sobra.

Los cambios frecuentes de código exigen visibilidad

Los frecuentes cambios de código impulsados por la integración y la implementación continuas han aumentado el ritmo de los cambios y han hecho que los entornos de producción sean cada vez más complejos. Con la llegada de los microservicios y los microfront-ends en los entornos nativos de la nube modernos, existen cientos y, a veces, miles de cargas de trabajo diferentes que operan en producción, cada una con diferentes requisitos operativos en materia de escalabilidad, latencia, redundancia y seguridad.

Esto ha impulsado la necesidad de una mayor visibilidad. Los equipos no solo deben detectar y responder si se produce una degradación de la experiencia del cliente, sino que hacerlo sin perder ni un segundo.

Colaboración automática

DevOps requiere implícitamente posibilitar una mayor colaboración entre las funciones empresariales, de desarrollo y de operaciones de los equipos. Sin embargo, una de las conclusiones clave de la encuesta sobre DevOps de Atlassian fue que esta colaboración puede verse obstaculizada por la falta de integración entre las herramientas, lo que supone un desafío para la coordinación de diferentes equipos.

Puedes automatizar la colaboración mediante prácticas tales como obtener una vista completa de la canalización de desarrollo dentro del editor. También puedes definir reglas de automatización que, a partir de las confirmaciones o solicitudes de incorporación de cambios, actualicen el estado de las incidencias relacionadas con Jira y envíen mensajes al canal de Slack del equipo. Además, puedes sacar provecho de los datos que aportan los análisis, las pruebas y los informes.

Captura de pantalla de colaboración automatizada

Experimentación

La necesidad de optimizar los productos para responder a las necesidades de los clientes, impulsada por la personalización y la optimización de los embudos de conversión, se traduce en una experimentación constante. Los entornos de producción pueden ejecutar cientos de experimentos y marcas de función, lo que dificulta que los sistemas de supervisión comuniquen la causa de una experiencia degradada.

La creciente demanda de servicios y aplicaciones con disponibilidad permanente, así como los estrictos compromisos de SLA, pueden sumar vulnerabilidad a las aplicaciones. Los equipos de desarrollo deben definir los objetivos de nivel de servicio (SLO) y los indicadores de nivel de servicio (SLI) que se supervisan y definen la actuación.

Gestión de los cambios

Dado que la mayoría de las interrupciones de la producción se deben a cambios, es esencial gestionar dichos cambios, especialmente para aplicaciones críticas, como las de los sectores financiero y sanitario. Es necesario determinar los riesgos asociados a los cambios y automatizar los flujos de aprobación en función del riesgo del cambio.

Para hacer frente a estas complejidades se requiere una estrategia de comprensión y supervisión integral. Esto implica definir y adoptar prácticas de supervisión y contar con un conjunto de herramientas de supervisión potentes, flexibles y avanzadas que son fundamentales para los procesos de desarrollo.

Supervisión de sistemas dependientes

Cada vez son más habituales los sistemas distribuidos, a menudo compuestos por muchos servicios pequeños a nivel de empresa. Ahora los equipos no solo deben supervisar los sistemas que compilan, sino también controlar y gestionar el rendimiento y la disponibilidad de los sistemas dependientes. Amazon Web Services (AWS) ofrece más de 175 productos y servicios que incluyen informática, almacenamiento, redes, bases de datos, análisis, implementación, gestión, dispositivos móviles y herramientas para desarrolladores. Si compilas tu aplicación en AWS, debes elegir el servicio adecuado para las necesidades de tu aplicación. También necesitas instrumentación y estrategias para rastrear errores de forma distribuida y gestionar los fallos de sistemas dependientes.

Funciones clave de la supervisión de DevOps


En consonancia con la tradición de DevOps, desarrollar e implementar una estrategia de supervisión también requiere prestar atención a las prácticas básicas y a un conjunto de herramientas.

Pruebas "Shift Left"

Las pruebas "Shift Left" que se realizan al principio del ciclo de vida sirven para aumentar la calidad, acortar los ciclos de prueba y reducir los errores. Para los equipos de DevOps, es importante ampliar las prácticas de pruebas "Shift Left" para supervisar el estado de los entornos de preproducción. Esto garantiza que la supervisión se implemente en etapas tempranas y con frecuencia para mantener la continuidad durante la producción y preservar la calidad de las alertas de supervisión. Las pruebas y la supervisión deben funcionar conjuntamente, y la supervisión temprana debe ayudar a evaluar el comportamiento de la aplicación a través de los recorridos y transacciones clave de los usuarios. Esto también contribuye a identificar las desviaciones de rendimiento y disponibilidad antes de la implementación de la producción.

Gestión de alertas e incidentes

En un entorno nativo en la nube, los incidentes son simplemente algo que pasa, como los errores en el código. Estos incidentes van desde fallos de hardware y red a errores de configuración, agotamiento de recursos, incoherencias de datos y errores de software. Los equipos de DevOps deben aceptar los incidentes y contar con monitores de gran calidad para darles respuesta.

Estas son algunas de las prácticas recomendadas relacionadas:

  • Crear una cultura de colaboración en la que se utilice la supervisión durante el desarrollo junto con pruebas de funciones/funcionalidad y pruebas automatizadas.
  • Crear alertas adecuadas y de alta calidad en el código durante el desarrollo para reducir el tiempo medio de detección (MTTD) y el tiempo medio de aislamiento (MTTI).
  • Crear monitores para garantizar que los servicios dependientes funcionan según lo previsto.
  • Dedicar tiempo a la creación de los paneles necesarios y formar a los miembros del equipo para que sepan usarlos.
  • Planificar simulaciones de crisis en el servicio para garantizar que los monitores funcionan como deben y detectar los que faltan.
  • Durante los sprints, planificar el cierre de acciones de revisiones de incidentes anteriores, especialmente acciones relacionadas con la creación de monitores faltantes y la automatización.
  • Crear detectores para seguridad (actualizaciones/parches/credenciales de despliegue).
  • Cultivar una mentalidad según el concepto "medirlo y supervisarlo todo" y recurrir a la automatización para determinar la respuesta a las alertas detectadas.

Herramientas de supervisión de DevOps


En combinación con un conjunto de prácticas de supervisión saludables, son herramientas avanzadas que se corresponden con la cultura de DevOps y con el concepto "tú lo creas, tú lo gestionas" (o YBIYRI, por sus siglas en inglés). Para ello, es necesario identificar e implementar herramientas de supervisión, además de las herramientas para desarrolladores bien conocidas de repositorios de código, IDE, depuradores, seguimiento de defectos, herramientas de integración continua y herramientas de implementación.

Un único panel proporciona una visión completa de las distintas dependencias de aplicaciones, servicios e infraestructura, no solo en producción sino también en el entorno de ensayo. Esto permite aprovisionar, recibir, etiquetar, ver y analizar el estado de los entornos distribuidos complejos. Por ejemplo, la herramienta PaaS interna de Atlassian, Micros, incluye una herramienta denominada Microscope que proporciona toda la información sobre los servicios de forma concisa y fácil de encontrar.

Captura de pantalla de un panel único

La supervisión del rendimiento de las aplicaciones es esencial para garantizar que se supervisen indicadores de rendimiento específicos de la aplicación, como el tiempo de carga de una página, las latencias de los servicios en fases posteriores o las transiciones, además de métricas básicas del sistema, como la utilización de la CPU y la memoria. Herramientas como SignalFX y NewRelic son excelentes para observar datos de métricas en tiempo real.

Implementa diferentes tipos de monitores, incluidos errores, transacciones, sintéticos, heartbeats, alarmas, infraestructura, capacidad y seguridad durante el desarrollo. Asegúrate de que todos los miembros reciban formación sobre estas áreas. Estos monitores suelen ser específicos de la aplicación y deben implementarse en función de los requisitos de cada aplicación. Por ejemplo, nuestro equipo de desarrollo de Opsgenie implementa monitores sintéticos que crean una alerta o incidente y comprueban si el flujo de alertas se ejecuta según lo previsto (es decir, si las integraciones, el enrutamiento y las políticas funcionan correctamente). También implementamos monitores sintéticos para dependencias de infraestructura que verifican periódicamente la funcionalidad de diversos servicios de AWS.

Un sistema de gestión de incidentes y alertas que se integre perfectamente con las herramientas del equipo (por ejemplo, la gestión de registros o los informes de fallos) para que se adapte de forma natural a tu ritmo operativo y de desarrollo. La herramienta debe enviar alertas importantes a tus canales de notificación preferidos con las latencias más bajas. También debe ofrecer la posibilidad de agrupar las alertas para filtrarlas, especialmente cuando se generan varias alertas a partir de un solo error o fallo. En Atlassian, no solo ofrecemos Opsgenie como un producto que proporciona estas capacidades a nuestros clientes, sino que también lo utilizamos internamente para contar con un sistema de gestión de alertas e incidentes sólido, flexible y fiable integrado con nuestras prácticas de desarrollo.

En conclusión...


Al adoptar DevOps, es importante asegurarse de aplicar una supervisión según el concepto "Shift Left", además de pruebas, prácticas y herramientas, con el fin de cumplir con las expectativas de introducir cambios en la producción de forma rápida y con gran calidad.

Para obtener más información, consulta estos recursos adicionales de Atlassian sobre DevOps, gestión de incidentes y gestión de cambios.

Krishna Sai
Krishna Sai

Krishna Sai es responsable de ingeniería de Soluciones de TI en Atlassian. Tiene a sus espaldas más de dos décadas de liderazgo en ingeniería y tecnología en varias startups y empresas, como Atlassian, Groupon y Polycom. Vive en Bangalore (India) y le apasiona crear productos que mejoren la colaboración en equipo.


Compartir este artículo

Lecturas recomendadas

Consulta estos recursos para conocer los tipos de equipos de DevOps o para estar al tanto de las novedades sobre DevOps en Atlassian.

Ilustración de Devops

La comunidad de DevOps

Ilustración de Devops

Taller de simulación

Ilustración de un mapa

Pruébalo gratis

Suscríbete para recibir el boletín de DevOps

Thank you for signing up