New Relic Now ¿Sueñas con innovar más? Comienza a vivir tu sueño en octubre.
Reservar plaza

Si has estado siguiendo esta serie de blogs, habrás notado que muchos de los temas comparten un enfoque común: observar la salud del software y/o la infraestructura que lo sustenta. Este artículo se centra en un caso de uso menos tradicional: la observabilidad de la pipeline de datos, y en cómo puedes utilizar plataformas como New Relic para mejorar tus prácticas de observabilidad de la pipeline de datos. 

Un poco de contexto

No cabe duda que en cualquier empresa digital los datos son fundamentales. Suelen ser el eje central del proceso de toma de decisiones. En New Relic, un subconjunto de nuestros datos es todavía más crucial, ya que constituye la base para las facturas que generamos. Esto se debe a que, en 2020, New Relic cambió de un modelo de compra basado en licencias a un modelo basado en el consumo. Aunque los precios basados en el consumo no constituyen un concepto nuevo, el cambio que realizamos sigue teniendo un gran impacto en nuestras propias prácticas de observabilidad de pipelines de datos.  Esto se aplica particularmente a nuestra pipeline de consumo, que rastrea el consumo facturable de cada cliente. Al observar los datos de consumo facturable, la precisión es crucial; es fundamental que facturemos a cada cliente de manera correcta. Dado que cada mes se emiten miles de facturas, no es posible verificar manualmente el consumo de cada una de ellas.  El siguiente esquema te ayudará a reflexionar sobre cómo realizar correctamente la observabilidad de las pipelines de datos.  Si bien los aspectos planteados se refieren a nuestro recorrido en este espacio, deberían ser aplicables a otros ámbitos. 

1. Conoce tus objetivos

Al abordar este aspecto, es aconsejable que comiences por preguntarte: ¿qué quiero lograr mediante la observabilidad de la pipeline de datos? Existen algunos objetivos generales que pueden aplicarse a la mayoría de las pipelines: monitorear el cumplimiento de los SLA, generar alertas ante errores, observar patrones de tráfico específicos o valores atípicos, entre otros.  Pero los objetivos también pueden estar relacionados con las necesidades específicas de tu empresa.  En nuestro caso, tenemos dos objetivos fundamentales:

  • Garantizar que registremos con precisión el consumo facturable y emitir facturas en función de ello.
  • Garantizar que la pipeline de consumo tenga verificaciones automáticas de la calidad de los datos.

2. Conoce tus datos

Aunque pueda parecer una recomendación evidente, entender a fondo tus datos es un paso que frecuentemente se ignora. Dedicar tiempo a este proceso puede ayudarte a identificar las áreas en las que debes invertir para alcanzar tus objetivos. Al profundizar en el análisis, algunas preguntas a considerar incluyen:

  • ¿Cómo es la estructura de los datos? ¿Cuál es su esquema? ¿Cuenta con todos los atributos necesarios para alcanzar tus objetivos? ¿O necesitas enriquecerlos con más fuentes de datos?
  • ¿Cuál es el volumen de datos? ¿Cuántos puntos de datos por segundo están procesando tus sistemas? ¿Existen picos en el volumen?

Si no sabes o no tienes respuestas claras a estas preguntas, una forma sencilla de comenzar es mediante el uso de eventos personalizados y/o métricas personalizadas para instrumentar tus pipelines de procesamiento de datos. Al hacerlo, podrás redactar fácilmente consultas en New Relic Query Language (NRQL) que te ayudarán a obtener respuestas de referencia a estas preguntas.

En nuestro caso, uno de los muchos elementos que rastreamos en nuestra pipeline es el número de eventos de consumo generados por los equipos de producto. Estos eventos representan el consumo 'bruto' que recopila un servicio o API individual, y constituyen el insumo principal de nuestra pipeline. Para facilitar la consistencia, creamos una biblioteca interna que todos los equipos de producto utilizan para generar estos eventos brutos. Esta biblioteca no solo estandariza la carga de los eventos de consumo, sino que también proporciona herramientas para generar informes de métricas personalizadas sobre los eventos generados. Estas métricas personalizadas nos permiten redactar consultas en NRQL como la siguiente:

FROM Metric SELECT sum(usageClient.eventsEmitted) where environment = 'production' since 30 days ago TIMESERIES limit max

Esta consulta específica generará un gráfico como el que se muestra a continuación, lo que nos permitirá detectar cualquier desviación a nivel macro en la tendencia (además, configuramos condiciones de alerta sobre estos datos).

Este tipo de datos también se utiliza para la planificación de capacidad. Suponiendo que sepas que X millones de eventos/hora requieren Y cantidad de brokers de Kafka, entonces podrás prever razonablemente cuántos brokers adicionales se necesitan si la tasa de eventos aumenta en una cantidad determinada.

3. Comienza poco a poco

Si estás en las fases iniciales de la creación de una nueva pipeline de datos, lo mejor que puedes hacer es incorporar la capacidad de observabilidad desde el principio. No obstante, si ya cuentas con una pipeline establecida, un buen enfoque es comenzar de manera gradual. 

Una pipeline típica de procesamiento de datos puede tener varias etapas entre la entrada y la salida.

En lugar de intentar instrumentar todo de una sola vez, enfócate primero en áreas más pequeñas y de alto valor. Algunos aspectos a considerar durante la priorización incluyen:

  • Áreas identificadas como potencialmente inestables. Por ejemplo, si sabes que una etapa en particular tiene el potencial de ser inestable (debido al código, la infraestructura, etc.), considera instrumentar esas áreas primero.
  • Áreas de mayor impacto empresarial. Por ejemplo, si una etapa determinada está calculando una métrica clave para el negocio, esa podría ser una buena opción a priorizar.

Cuando hayas identificado dónde concentrar tus esfuerzos, puedes usar las API de eventos/métricas personalizadas que mencionamos antes, así como los quickstarts de observabilidad instantánea de New Relic, para materializar tu observabilidad.

4. Busca logros rápidos

Si bien existen técnicas avanzadas de observabilidad para pipelines de datos (como inteligencia artificial [IA] y aprendizaje automático [ML]), no subestimes el valor de implementar técnicas más simples que puedan generar logros rápidos. Una de las que utilizamos internamente consiste en enviar periódicamente datos de muestra a través de toda nuestra pipeline de consumo y, a continuación, comprobar la corrección de la salida transformada. La figura de abajo ilustra cómo puede ser esta técnica en la práctica.

A partir del diagrama de la pipeline de ejemplo presentado anteriormente, puedes crear un proceso que produzca una entrada (X) en un intervalo determinado y, a continuación, utilizar New Relic para comparar la salida real con el valor esperado (Y). Puedes automatizar todavía más esta supervisión creando condiciones de alerta que notifiquen a varios canales cuando la entrada X no tenga la salida Y.

Si bien esto no te muestra dónde se encuentra el problema dentro de la pipeline, sirve como una buena señal de referencia para verificar si la pipeline está funcionando (o no) de manera normal. En New Relic, aplicamos una de estas sencillas y holísticas comprobaciones de datos para cada medición que facturamos. Si una entrada no coincide con la salida esperada, la plataforma notifica de inmediato al equipo o equipos correspondientes para que investiguen.

Conclusión

La observabilidad en las pipelines de datos supone un amplio terreno lleno de complejidades. Si bien cada pipeline conlleva un conjunto único de requisitos técnicos y empresariales, todas comparten al menos un aspecto común: necesitan ser observadas.  Esperamos que este artículo te proporcione un marco de referencia y algunos consejos prácticos para implementar tus propias prácticas de observabilidad.  Asimismo, esperamos que destaque el hecho de que plataformas como New Relic te permiten empezar a trabajar rápida y fácilmente.