Se você vem seguindo esta série de publicações, você notará que muitos dos tópicos compartilham um tema comum sobre a observação da saúde do software e/ou da infraestrutura por trás dele. Este post se concentra em um caso de uso menos tradicional — a observabilidade do pipeline de dados —, e como você pode usar plataformas como a New Relic para aprimorar suas práticas desse tipo de observabilidade. 

Breve histórico

Não é segredo que, em um negócio digital moderno, os dados são a coisa mais importante. Eles estão geralmente no cerne do processo de tomada de decisão. Na New Relic, um subconjunto dos nossos dados ainda é mais vital porque é a base para as faturas que geramos. Isso porque, em 2020, a New Relic passou de um modelo de compra baseado em licenças para um modelo com base no consumo. Embora os preços baseados no consumo não sejam um conceito novo, a mudança que fizemos continua tendo um grande impacto nas nossas próprias práticas de observabilidade do pipeline de dados.  Isso é particularmente verdade para o nosso pipeline de uso, que rastreia o uso cobrável para cada cliente. Ao observar os dados com uso faturável, a precisão é fundamental; é essencial que enviemos faturas corretas a cada cliente. Visto que milhares de faturas são emitidas todo mês, simplesmente não é possível verificar manualmente o uso para cada uma delas.  Abaixo segue um framework para pensar sobre como aproveitar bem a observabilidade do pipeline de dados.  Embora sejam oriundos da nossa própria jornada neste âmbito, os pontos levantados devem ser aplicáveis a outros contextos. 

1. Conheça suas metas

Um ponto de partida ao abordar esse domínio é se perguntar: o que quero alcançar com a observabilidade do pipeline de dados? Há algumas metas gerais que podem ser aplicadas à maioria dos pipelines: monitoramento para realização de SLA, alerta de erros, observação de padrões de tráfego específicos ou outliers, e assim por diante.  Mas as metas podem também ser específicas para o seu negócio.  No nosso caso, temos duas metas principais:

  • Garantir que capturemos o uso faturável com precisão e cobremos com base nisso.
  • Garantir que o pipeline do uso tenha verificações automatizadas da qualidade dos dados.

2. Conheça seus dados

Isso pode parecer uma sugestão óbvia, mas entender bem os seus dados é um passo que geralmente passa despercebido. Ao dedicar um tempo para isso, é possível descobrir onde você precisa fazer investimentos a fim de alcançar suas metas. Algumas perguntas a serem exploradas à medida que você se aprofunda:

  • Qual é o formato dos dados? Qual é o esquema, e ele tem todos os atributos necessários para que suas metas sejam alcançadas? Ou você precisa enriquecê-lo com mais fontes de dados?
  • Qual é o volume de dados? Quantos pontos de dados por segundo seus sistemas estão processando? Há picos de volume?

Se você não sabe ou não tem boas respostas a essas perguntas, uma maneira fácil de começar é usando os eventos personalizados e/ou as métricas personalizadas para instrumentar os seus pipelines de processamento de dados. Ao fazer isso, você, então, pode facilmente fazer consultas com a New Relic Query Language (NRQL), o que lhe ajudará a obter respostas de base a essas perguntas.

No nosso caso, um dos muitos itens que rastreamos no nosso pipeline é o número de eventos de uso produzidos pelas equipes de produtos. Esses eventos representam a quantidade "bruta" de uso coletada por um serviço individual ou API, e serve como entrada principal no nosso pipeline. A fim de facilitar a consistência, construímos uma biblioteca interna que todas as equipes de produto usam para produzir esses eventos brutos. Essa biblioteca não só padroniza a carga do evento de uso, como também fornece funcionalidade para gerar relatórios com métricas personalizadas sobre os eventos produzidos. Essas métricas personalizadas nos permitem escrever consultas em NRQL como esta:

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

Esta consulta específica gerará um gráfico como o a seguir, nos dando insights sobre quaisquer desvios a nível macro na tendência (também configuramos condições de alerta sobre esses dados).

Outro uso para esse tipo de dado é o planejamento da capacidade. Hipoteticamente, se você sabe que X milhões de eventos/hora requerem um número Y de brokers Kafka, então você pode prever razoavelmente quantos brokers adicionais são necessários se a taxa de evento aumentar em certa quantidade.

3. Comece com passos pequenos

Se você está nas fases iniciais da criação de um novo pipeline de dados, a melhor coisa que você pode fazer é incorporar a observabilidade desde o início. No entanto, se você tem um pipeline estabelecido, então uma boa abordagem é começar com passos pequenos. 

Um pipeline de processamento de dados típico pode ter vários estágios entre a entrada e a saída.

Ao invés de tentar instrumentar o pipeline todo de uma vez, foque primeiro em áreas menores e de alto valor. Algumas coisas a considerar durante a priorização:

  • Áreas conhecidas de potencial instabilidade. Por exemplo, se você sabe que um estágio em particular tem o potencial de ser instável (devido ao código, infraestrutura etc.), considere instrumentá-lo primeiro.
  • Áreas de maior impacto nos negócios. Por exemplo, se um estágio específico está calculando uma métrica crítica ao negócio, esse pode ser um bom candidato a ser priorizado.

Uma vez que você identificou onde focar seus esforços, você pode usar os eventos personalizados/APIs de métricas acima, bem como quaisquer guias rápidos de observabilidade instantânea da New Relic para dar vida à sua observabilidade.

4. Busque ganhos rápidos

Embora existam técnicas avançadas de observabilidade do pipeline de dados (por exemplo, inteligência artificial [IA] e aprendizado de máquina [AM]), não subestime o valor da implementação de técnicas mais simples que podem gerar ganhos rápidos. Uma técnica que usamos internamente é enviar periodicamente dados de amostra por todo o pipeline de uso e depois verificar a saída transformada para correção. Abaixo está uma ilustração de como essa técnica funciona na prática.

Aprofundando no exemplo de pipeline acima, você pode criar um processo que produz uma entrada (X) em algum intervalo, depois usar a New Relic para comparar a saída efetiva em relação ao valor esperado (Y). Você pode ainda automatizar esse monitoramento criando condições de alerta que notificam vários canais quando a entrada X não resultou na saída Y.

Embora esse alerta não lhe diga onde há um problema dentro do pipeline, ele serve como um bom sinal de base para verificar se o pipeline está funcionando (ou não) normalmente. Na New Relic, temos uma dessas verificações de dados simples e holísticas para cada medição que cobramos. Se uma entrada não corresponde à saída esperada, a plataforma alerta imediatamente a(s) equipe(s) apropriada(s) para que haja investigação.

Conclusão

A observabilidade do pipeline de dados é um domínio grande com muitas complexidades. Embora cada pipeline traga consigo um conjunto único de requerimentos técnicos e empresariais, todos eles têm pelo menos um ponto em comum: precisam ser observados.  Esperamos que este post dê a você um framework e algumas dicas práticas para a implementação das suas próprias práticas de observabilidade.  Também esperamos que ele enfatize como plataformas como a New Relic permitem que você comece de forma rápida e fácil.