En este artículo vamos a hablar de la monitorización end-to-end, un maravilloso concepto que apoyado por todos los fundamentos de la observabilidad le brindará a las actividades primarias y secundarias de una organización una fuente de datos con un increíble valor añadido.
Con IOMetrics de DataDope la implementación de este tipo de monitorización se adapta a la mayoría de necesidades de cualquier proceso de negocio, siempre y cuando en la organización existan fuentes de datos explotables (con una buena definición y estudio siempre existen).
End to end, de extremo a extremo
Como bien describe el título, lo primero es comenzar con el significado de las palabras; “End to end” significa “De extremo a extremo”, por lo que si hablamos de monitorización end-to-end nos referimos a supervisar o controlar que todos los procesos y transacciones que acontecen dentro de un flujo de trabajo de principio a fin entre todos sus componentes y en cualquiera de sus fases se estén cumpliendo sin excepciones para garantizar la máxima disponibilidad, integridad y calidad de su funcionamiento.
Si lo aplicamos a un proceso de negocio empresarial, permite facilitar la detección de valores, fortalezas o debilidades en el desempeño del mismo y otorgarle a la organización monitorizada una fuente de datos que analizados y utilizados correctamente tendrán un impacto muy positivo en el desempeño de la actividad.
En este artículo vamos a hablar de la monitorización end-to-end, un maravilloso concepto que apoyado por todos los fundamentos de la observabilidad le brindará a las actividades primarias y secundarias de una organización una fuente de datos con un increíble valor añadido. Con IOMetrics de DataDope la implementación de este tipo de monitorización se adapta a la mayoría de necesidades de cualquier proceso de negocio, siempre y cuando en la organización existan fuentes de datos explotables (con una buena definición y estudio siempre existen). End to end, de extremo a extremo Como bien describe el título, lo primero es comenzar con el significado de las palabras; “End to end” significa “De extremo a extremo”, por lo que si hablamos de monitorización end-to-end nos referimos a supervisar o controlar que todos los procesos y transacciones que acontecen dentro de un flujo de trabajo de principio a fin entre todos sus componentes y en cualquiera de sus fases se estén cumpliendo sin excepciones para garantizar la máxima disponibilidad, integridad y calidad de su funcionamiento. Si lo aplicamos a un proceso de negocio empresarial, permite facilitar la detección de valores, fortalezas o debilidades en el desempeño del mismo y otorgarle a la organización monitorizada una fuente de datos que analizados y utilizados correctamente tendrán un impacto muy positivo en el desempeño de la actividad.
En la observabilidad
Hablando en términos generales de la observabilidad, noción cada vez más aceptada y aprobada por las grandes compañías digitalmente maduras, nos indica qué tipos datos se deben de observar en una organización que sigue una filosofía data-driven (dirigida por datos) para conseguir la máxima visibilidad de todo lo que ocurre entre los sistemas informáticos en los cuales se pueden extraer una increíble cantidad de datos que extraídos y almacenados en plataformas de monitorización y buenas definiciones de procesos de ETL (Extract, Transform and Load) nos brindan información de gran relevancia sobre el estado del negocio.
Es necesario elegir las herramientas adecuadas para guardar y estructurar los datos para a posteriori poder buscarlos y representarlos de manera lógica y ordenada.
En este contexto, la observabilidad está compuesta por 3 pilares fundamentales:
- Métricas: Son datos (generalmente numéricos) que nos permiten medir rendimiento acerca de cómo se encontraba un activo en un determinado momento.
ej: la aplicación X estaba consumiendo 20% de CPU a las 23:59 el dia 01/10/2021.
- Logs y eventos: Son eventos que suceden dentro de un programa y que se registran en ficheros de texto plano o en búferes posteriormente legibles, generalmente siguen una estructura estándar para facilitar la interpretación de su información.
ej: 0.185.248.71 – – [01/Oct/2021:20:12:07 +0000] 808890 «GET /inventoryService/inventory/purchaseItem?userId=20253471&itemId=23434300 HTTP/1.1» 500 17 «-» «Apache-HttpClient/4.2.6 (java 1.5)»
En general, con las métricas y los eventos obtenemos una buena base para comprender el rendimiento y el comportamiento de un sistema individual, aunque no contamos con la capacidad para ver el ciclo de vida de una solicitud o una petición que se mueve dentro de uno o distintos componentes.
- Rastreo: El rastreo nos permite conocer el viaje de cada traza (una acción o una transacción) a través de todos los nodos de un sistema. A su paso, tiene que permitirnos recoger duraciones, estados, acciones que se realizan a alto y bajo nivel, etc. Esto es muy útil para detectar problemas de rendimiento, buscar la causa raíz de un problema, detectar un cuello de botella, asegurarnos de la integridad de todas las operaciones, etc. Actualmente existen modelos para poder estructurar estos datos de forma lógica y ordenada como puede ser opentelemetry, opentracing o Elasticsearch APM.
Cuando hablamos de monitorización end-to-end nos ubicamos en esta última sección, aunque correlando y aunando correctamente los datos entre todos los tipos podemos conseguir resultados muy satisfactorios.
¿Qué podemos conseguir con end-to-end?
Tomando esta imagen de ejemplo podemos imaginar un escenario de un proceso de negocio que realiza ventas online el cual está compuesto por distintos componentes que, tras análisis de cada sistema, se encuentra la forma de recuperar la información de cada sistema.
La traza comienza cuando el usuario realice una venta online y finaliza cuando le llegue el producto a casa.
Además, se puede realizar tracking y correlar la traza en cada componente puesto que se comparte el ID de venta entre todos.
Observando el diagrama, vemos que el proceso de negocio está seccionado por 4 componentes. Para cada uno de ellos y para cada transacción podemos conseguir el estado (OK o KO), la duración (el tiempo que la transacción ha tardado dentro del propio componente), la volumetría (cuantas transacciones ha procesado), y el modo del componente (si es un componente inicial, un componente intermediario o un componente final)
- El primer componente simula un servidor web con un eCommerce para realizar ventas. Es el punto de entrada, por lo que a cada compra se iniciará una traza y no finalizará hasta que llegue al último componente.
- El segundo componente es intermediario, por lo que su función a nivel de end-to-end es sumar a la traza existente todas sus métricas. Es una base de datos, por lo que se controla que la transacción se haya escrito correctamente entre otros.
- El tercer sistema también es intermediario por lo que sigue sumando. Simula ser un almacén consultable por API, por lo que se puede integrar sin problemas a esta monitorización.
- Y terminando con el cuarto es el que finaliza la traza, por lo que realiza cálculos entre las trazas del primero y las suyas para definir los valores más exactos que llevará la traza recién completada.
¿Qué datos podemos conseguir realizando esta monitorización?
- ¿Cuántas ventas se han realizado en total?
- ¿Cuántas ventas están en curso vs cuántas han finalizado?
- ¿Cuántas ventas se han realizado correctamente vs falladas entre alguno de los sistemas?
- ¿Cuántas ventas han recibido algún arreglo para que pudiera continuar con su flujo?
- Duración total desde que el usuario realiza el pedido hasta que le llega a casa
- Cuánto ha durado en cada componente y por qué
- Latencia de tiempo entre componentes
- Recuperación de errores: causa, responsable, descripción, etc.
Pero además:
- Visualización en un timeline de todos los sucesos
- Una fuente de datos explotable y correctamente estructurada
- Potenciación y previsión de ventas, errores, con Machine Learning