Métodos para monitorar e alertar problemas de dados ao lidar com dependências complexas

1

Neste exemplo hipotético, temos um fluxo de dados em várias equipes de engenharia em uma empresa de comércio eletrônico. Essas equipes fornecem serviços, produzem dados e consomem dados em diferentes pontos do fluxo.

Por exemplo:

  • 'Pedidos de equipe' mantém o banco de dados e as interfaces de pedidos
  • 'Tráfego de equipe' gera dados de tráfego da web
  • 'Team Warehouse' mantém o data warehouse
  • 'Tráfego da equipe' depende do serviço da 'Ordem da equipe' para recuperar dados de pedidos e associá-los ao tráfego da web
  • 'Team Warehouse' depende dos dados do 'Team Traffic' para criar tabelas DW

Imagine que 'Pedidos de equipe' atinge um problema de banco de dados (carga, latência, qualquer coisa) - Seu sistema de monitoramento alerta um engenheiro que começa a investigar o problema do banco de dados.

Nesse meio tempo, o 'Team Traffic' também foi alertado, já que eles observam um aumento nas respostas ruins. Eles começam a investigar e percebem rapidamente que o problema é com o serviço de "Pedidos da equipe" e cobram um ingresso para "Pedido da equipe"

A jusante de tudo isso, 'Team Warehouse' está recebendo dados incorretos. O monitoramento de DW os alerta para essa variação, então eles começam a procurar por causa raiz.

O problema é que agora temos pelo menos três engenheiros investigando o mesmo problema, e eles podem até não estar cientes de que outras equipes estão fazendo a mesma coisa.

Um ponto importante é que todas as três equipes estão usando diferentes sistemas de monitoramento e alerta; O Team Orders está monitorando problemas do servidor db, enquanto o Team Warehouse está procurando por variações no número de registros.

Existem outras abordagens; alerta apenas no topo do pipeline (bloqueando escalonamentos downstream) ou alertando na parte inferior do pipeline para sistemas upstream.

Há alguma prática recomendada, white papers ou soluções de engenharia que eu possa pesquisar para entender as diferentes maneiras de alertar e escalar problemas de dados em várias equipes de suporte / eng?

    
por John Honan 29.03.2016 / 16:38

1 resposta

0

Recomendamos altamente a prática da administração do sistema em nuvem, explicando isso em detalhes. Aqui temos 3 níveis de monitoramento

  1. End to End (ah, porcaria, algo está errado)
  2. Por serviço / API (o membro crap do cluster SQL está inativo, a API está respondendo lentamente ou com algo diferente de um código HTTP 200/300 etc)
  3. APM - Que pedaço de código, etc, é lento, taxas de erro para serviços específicos, etc.

Estes + os logs nos dão mais do que precisamos saber o que está acontecendo, geralmente temos uma única pessoa responsável por ver que o problema é fixo - a coordenada é a correção, mas eles NÃO fazem o trabalho técnico, que é destinado a outros. O trabalho do coordenador é garantir que não pise no pé um do outro, resolvendo o problema.

    
por 30.03.2016 / 22:46