Como uma empresa deve escolher ferramentas para engenheiros de dados e não transformar tudo em um zoológico de tecnologia: a experiência do PROFI.RU

O editor da Netology conversou com o líder da equipe de BI da Profi.ru Pavel Sayapin sobre as tarefas que os engenheiros de dados resolvem em sua equipe, que tipo de ferramentas eles usam para isso e como escolher a ferramenta certa para resolver problemas de dados. incluindo atípico. Pavel é professor do curso de Engenharia de Dados



- Profi.ru



Profi.ru é um serviço que ajuda clientes e especialistas de diversas áreas a se encontrarem. A base de dados de serviços contém mais de 900 mil especialistas em 700 tipos de serviços: tutores, reparadores, treinadores, mestres da beleza, artistas e outros. Mais de 10 mil novos pedidos são registrados todos os dias - tudo isso dá cerca de 100 milhões de eventos por dia. Manter essa quantidade de dados em ordem é impossível sem engenheiros de dados profissionais.  



Idealmente, um engenheiro de dados desenvolve uma cultura de dados que pode ajudar uma empresa a gerar receita adicional ou reduzir custos. Ele agrega valor ao negócio, trabalhando em equipe e atuando como um importante elo entre vários participantes - de desenvolvedores a consumidores empresariais de relatórios. Mas em cada empresa as tarefas podem ser diferentes, por isso vamos considerá-las usando o exemplo de Profi.ru.



— -, -,  



Os dados devem ser claros para a tomada de decisão e fáceis de usar. Você não precisa se esforçar para encontrar uma descrição ou escrever uma consulta SQL complexa que leve em consideração muitos fatores diferentes. Imagem ideal - o usuário olha para o painel e fica satisfeito com tudo. E se não houver dados suficientes em algum aspecto, ele vai para o banco de dados e com a ajuda de uma consulta SQL simples obtém o que precisa.





Lugar do processo de Qualidade de Dados na estrutura geral do data warehouse A



documentação explicativa sobre como trabalhar com dados é de grande importância. Isso simplifica o trabalho do engenheiro de dados (não se distrai com perguntas) e do usuário de dados (ele mesmo pode encontrar as respostas para suas perguntas). Em Profi.ru, esses documentos são coletados no fórum interno.



A conveniência inclui a velocidade de recuperação de dados. Velocidade = disponibilidade em uma etapa, clique - painel. Mas, na prática, tudo é mais complicado. 



Do ponto de vista do usuário final do painel, o mesmo Tableau não permite a exibição de todas as dimensões possíveis. O usuário está satisfeito com os filtros que o desenvolvedor do painel fez. Isso cria dois cenários: 



  • O desenvolvedor faz muitos cortes no painel ⟶ o número de páginas aumenta muito. Isso reduz a disponibilidade de dados: torna-se difícil entender onde está. 
  • O desenvolvedor cria apenas cortes chave. É mais fácil encontrar informações, mas para um corte um pouco menos padronizado, você ainda precisa ir ao banco de dados ou aos analistas. O que também é ruim para acessibilidade. 


Acessibilidade é um conceito amplo. Trata-se da disponibilização de dados na forma adequada e da capacidade de obter informações em dashboards, bem como do corte de dados necessário.


Acumule dados de todas as fontes em um só lugar



As fontes de dados podem ser internas ou externas. Por exemplo, o negócio de alguém depende de relatórios meteorológicos a serem coletados e armazenados - de fontes externas. 



É necessário armazenar informações com indicação da fonte e também para que os dados sejam facilmente encontrados. Profi.ru resolve esse problema com a ajuda de documentação automatizada. Os arquivos YML são usados ​​como documentação sobre fontes de dados internas.



Faça painéis



A visualização de dados é melhor realizada em uma ferramenta profissional como o Tableau. 



A maioria toma decisões emocionalmente - visibilidade e estética são importantes. O mesmo Excel para visualização, aliás, não é muito adequado: não atende todas as necessidades dos usuários de dados. Por exemplo, um gerente de produto gosta de se aprofundar nos números, mas de uma forma que seja conveniente. Isso permite que ele resolva seus problemas e não pense em como obter informações e coletar métricas.



A visualização de dados de alta qualidade torna as decisões mais fáceis e rápidas.
 

Quanto mais alto uma pessoa está na posição, mais urgente é a necessidade de ter dados agregados em mãos, no telefone. Os altos gerentes não precisam de detalhes - é importante controlar a situação como um todo, e o BI é uma boa ferramenta para isso.





Um exemplo de painel do produto Profi.ru (uma das planilhas). Para a confidencialidade das informações, os nomes das métricas e eixos são ocultados



Exemplos de tarefas reais 



Tarefa 1 - transferir dados dos sistemas de origem (operacionais) para um data warehouse ou ETL



Uma das tarefas rotineiras de um engenheiro de dados. 



Para isso pode ser usado:



  • scripts auto-escritos executados por cron ou usando um orquestrador especial como Airflow ou Prefect; 
  • Soluções ETL de código aberto: Pentaho Data Integration, Talend Data Studio e outros;
  • soluções proprietárias: Informatica PowerCenter, SSIS e outros;
  • soluções em nuvem: Matillion, Panoply e outras. 


Em uma versão simples, a tarefa é resolvida escrevendo um arquivo YML de 20 linhas. Demora cerca de 5 minutos. 



No caso mais difícil, quando você precisa adicionar uma nova fonte - por exemplo, um novo banco de dados - pode levar vários dias. 



Na Profi, esta tarefa simples - com um processo simplificado - consiste nas seguintes etapas:



  • Descubra com o cliente quais dados são necessários e onde estão localizados.
  • Entenda se há acesso a esses dados.
  • Se não houver acesso, pergunte aos administradores.
  • Adicione um novo branch ao Git com o código do problema em Jira.
  • Crie uma migração para adicionar dados ao modelo de âncora por meio de um script Python interativo.
  • Adicione os arquivos de carregamento (arquivo YML que descreve de onde os dados são obtidos e em qual tabela eles são gravados).
  • Teste no estande.
  • Faça upload de dados para o repositório.
  • Crie uma solicitação pull.
  • Passe pela revisão do código.
  • Depois de passar na revisão do código, os dados são carregados para a ramificação mestre e automaticamente colocados em produção (CI / CD).


Tarefa 2 - coloque convenientemente os dados baixados



Outra tarefa comum é organizar os dados carregados de forma que o usuário final (ou ferramenta de BI) se sinta confortável para trabalhar com eles e não tenha que fazer movimentos desnecessários para a maioria das tarefas. Ou seja, crie ou atualize um Dimension Data Store (DDS). 



Para isso, podem ser aplicadas as soluções da 1ª tarefa, visto que este também é um processo ETL. Em sua forma mais simples, o DDS é atualizado usando scripts SQL.



Tarefa 3 - da categoria de tarefas atípicas



A análise de streaming nasce na Profi. Um grande número de eventos de equipes de produto é gerado - nós os gravamos no ClickHouse. Mas você não pode inserir registros um de cada vez em um grande número, então você deve combinar os registros em lotes. Ou seja, você não pode escrever diretamente - você precisa de um manipulador intermediário.



Usamos o motor baseado em Apache Flink. Até agora, o procedimento é o seguinte: o mecanismo processa o fluxo de entrada de eventos ⟶ adiciona-os em lotes no ClickHouse ⟶ em tempo real conta o número de eventos em 15 minutos ⟶ envia para o serviço, que determina se há anomalias - compara com valores para os mesmos 15 minutos com uma profundidade de 3 meses ⟶ se houver, ele envia uma notificação ao Slack.





Esquema de análise de front-end (parte de download)



A estrutura Apache Flink garante a entrega pelo menos uma vez. No entanto, há uma chance de duplicatas. No caso do RabbitMQ, isso pode ser resolvido usando o ID de Correlação. Então, uma única entrega ⟶ integridade de dados é garantida.



Contamos o número de eventos novamente usando o Apache Flink, exibindo-o por meio de um painel escrito em NodeJS, + front no ReactJS. Uma busca rápida não resultou em soluções semelhantes. E o código em si acabou sendo simples - não demorou muito para ser escrito.



O monitoramento é bastante técnico. Observamos as anomalias para evitar problemas nas fases iniciais. Algumas métricas globais significativas da empresa ainda não estão incluídas no monitoramento, uma vez que a direção do streaming analytics está em fase de formação.



Ferramentas essenciais para engenheiros de dados



Com as tarefas dos engenheiros de dados, fica mais ou menos claro, agora um pouco sobre as ferramentas que são utilizadas para resolvê-las. Claro, as ferramentas em diferentes empresas podem (e devem) ser diferentes - tudo depende do volume de dados, sua velocidade de recebimento e heterogeneidade. Também pode depender do preconceito do especialista em relação a um determinado instrumento, só porque ele trabalhou com ele e o conhece bem. Profi.ru decidiu por essas opções →



Para visualização de dados - Tableau, Metabase



O Tableau foi escolhido há muito tempo. Este sistema permite que você analise rapidamente grandes quantidades de dados, sem exigir uma implementação cara. Para nós, é conveniente, bonito e familiar - muitas vezes trabalhamos nisso.



Poucas pessoas sabem sobre Metabase, entretanto é muito bom para prototipagem. 



Nas ferramentas de visualização, você também pode falar sobre o Superset do Airbnb. Sua característica especial são muitas conexões de banco de dados e recursos de visualização. No entanto, para um usuário comum, é menos conveniente do que o Metabase - você não pode juntar tabelas nele, para isso você precisa criar visualizações separadas. 



Na mesma Metabase, você pode juntar tabelas, além disso, o serviço o faz sozinho, levando em consideração o esquema do banco de dados. E a interface do Metabase é mais simples e agradável.



Existem muitas ferramentas - basta encontrar a sua.



Para armazenamento de dados - ClickHouse, Vertica



ClickHouse é uma ferramenta rápida e gratuita para armazenar eventos de mercearia. Nele, os próprios analistas fazem análises separadas (se tiverem dados suficientes) ou os engenheiros de dados pegam os agregados e os reenviam para o Vertica para construir vitrines.



Vertica é um produto amigável e legal para exibição em loja. 



Para controle de fluxo de dados e computação - Airflow



Carregamos dados por meio de ferramentas de console. Por exemplo, por meio de um cliente que vem com o MySQL, fica mais rápido. 



A vantagem das ferramentas do console é a velocidade. Os dados não são bombeados pela memória do mesmo processo Python. Das desvantagens, há menos controle sobre os dados que transitam de um banco de dados para outro.



A principal linguagem de programação é Python



Python tem um limite de entrada muito mais baixo + a empresa tem competência neste idioma. Outro motivo é que, no Airflow, os DAGs são escritos em Python. Esses scripts são apenas um invólucro em torno dos downloads, a maior parte do trabalho é feito por meio de scripts de console. 



Usamos Java para desenvolvimento de análises em tempo real.



Uma abordagem para escolher ferramentas de dados - o que fazer para não criar um zoológico de tecnologia



Existem muitas ferramentas no mercado para trabalhar com dados em todas as fases: desde sua aparência até a saída de um painel para o conselho de administração. Não surpreendentemente, algumas empresas podem ter uma série de soluções não relacionadas - o chamado zoológico de tecnologia.



O zoológico de tecnologia são ferramentas que fazem a mesma coisa. Por exemplo, Kafka e RabbitMQ para mensagens ou Grafana e Zeppelin para visualização. 





Mapa de tecnologias e empresas na área de dados e IA - você pode ver quantas soluções duplicadas podem ser



Além disso, muitos para fins pessoais podem usar diferentes ferramentas ETL. Na Profi, essa é exatamente a situação. O ETL principal está no Airflow, mas alguém usa o Pentaho para uploads pessoais. Eles testam hipóteses e não precisam passar esses dados por engenheiros. Basicamente, as ferramentas de autoatendimento são usadas por especialistas razoavelmente experientes que estão engajados em atividades de pesquisa - explorando novas formas de desenvolvimento de produtos. O conjunto de seus dados para análise interessa principalmente a eles, além disso, está em constante mudança. Conseqüentemente, não faz sentido adicionar essas cargas à plataforma principal. 



Voltando ao zoológico. Freqüentemente, o uso de tecnologias duplicadas está associado a um fator humano. Equipes internas separadas estão acostumadas a trabalhar com uma ou outra ferramenta que outra equipe não pode usar. E às vezes a autonomia é a única maneira de resolver problemas especiais. Por exemplo, a equipe de P&D precisa testar algo com uma determinada ferramenta - é apenas conveniente, alguém da equipe já a usou ou há outro motivo. É muito tempo esperar que o recurso dos administradores de sistema instale e configure esta ferramenta. Ao mesmo tempo, administradores atenciosos e meticulosos ainda precisam provar que isso é realmente necessário. Portanto, a equipe instala a ferramenta em suas máquinas virtuais e resolve suas tarefas específicas.



, . , . 


Outra razão comum para o surgimento de novas ferramentas é o desejo de experimentar um produto desconhecido em uma área relativamente nova, onde os padrões ainda não foram formados ou onde não há diretrizes comprovadas. Um engenheiro de dados, como um desenvolvedor, deve sempre pesquisar novas ferramentas na esperança de encontrar a melhor solução para os problemas atuais ou para se manter atualizado sobre o que o mercado tem a oferecer.



A tentação de experimentar novas ferramentas é muito grande. Mas, para fazer a escolha certa, você precisa antes de tudo de autodisciplina. Isso o ajudará não a se entregar totalmente a impulsos de pesquisa, mas a levar em conta a capacidade da empresa em dar suporte à infraestrutura da nova ferramenta. 

Não use a tecnologia pela tecnologia. É melhor abordar a questão de forma pragmática: uma tarefa é um conjunto de ferramentas que podem resolver essa tarefa.
 E então avalie cada um deles e escolha o melhor. Por exemplo, essa ferramenta pode resolver um problema com mais eficiência, mas não há competências para ela, e essa é um pouco menos eficaz, mas a empresa tem gente que sabe trabalhar com ela. Essa ferramenta é paga, mas fácil de manter e usar, e é um código aberto da moda, mas precisa de uma equipe de administradores para apoiá-la. Surgem essas dicotomias que exigem uma cabeça fria para serem resolvidas.

A escolha de um instrumento é meio um ato de fé, meio uma experiência pessoal. Não há certeza absoluta de que a ferramenta se encaixará.
Por exemplo, na Profi eles começaram com o Pentaho, porque eles tinham expertise nesse instrumento, mas no final acabou sendo uma decisão errada. O repositório interno do Pentaho tornou-se muito lento conforme o projeto crescia. A propósito, demorou um minuto para salvar os dados e, se houver o hábito de salvar trabalhos constantemente, o tempo simplesmente escapou dos meus dedos. A isso foi adicionado um lançamento complexo, tarefas agendadas - o computador travou. 



O sofrimento terminou depois de mudar para o Airflow, uma ferramenta popular com uma grande comunidade. 

A presença de um serviço comunitário, uma ferramenta importante para resolver problemas complexos - você pode pedir conselhos aos colegas.
Se a empresa estiver madura e tiver os recursos, faz sentido considerar a compra de suporte técnico. Isso o ajudará a solucionar problemas rapidamente e receber recomendações de uso do produto.



Se falarmos sobre a abordagem da escolha, então Profi adere aos seguintes princípios:



  • Não tome uma decisão sozinho . Quando uma pessoa escolhe algo, ela está automaticamente convencida de que está certa. Outra questão é convencer os outros quando há uma forte defesa a ser feita. Isso também ajuda a ver os pontos fracos do instrumento.
  • Procure orientação do Chief Data Officer (diálogo vertical) . Pode ser o Chief Data Engineer, o chefe da equipe de BI. Os tops veem a situação de forma mais ampla. 
  • Comunique-se com outras equipes (diálogo horizontal) . Quais ferramentas eles usam e quão bem. Talvez a ferramenta de um colega possa resolver seus problemas e você não precise arranjar um zoológico de soluções.


Competências internas como um substituto eficaz para um provedor de serviços externo



A abordagem para a escolha das ferramentas também pode ser considerada a utilização das competências internas da empresa. 



Muitas vezes, há situações em que uma empresa tem uma tarefa difícil, mas não há dinheiro para implementá-la. A tarefa é grande e importante e, no bom sentido, é melhor envolver um provedor de serviços externo que tenha experiência relevante. Mas como não existe essa oportunidade (dinheiro), uma equipe interna é designada para resolver o problema. Além disso, geralmente uma empresa confia mais em seus funcionários se eles já provaram sua eficácia.



Exemplos de tais tarefas, quando uma nova direção está sendo desenvolvida pelos funcionários, é realizar testes de carga e criar um data warehouse. Principalmente o data warehouse, pois é uma história única para cada negócio. O armazenamento não pode ser comprado, você só pode contratar especialistas externos que farão a construção com o apoio de uma equipe interna.  



A propósito, com o desenvolvimento da nova direção, a equipe pode perceber que a necessidade de um provedor de serviço externo desapareceu.



Na Profi, a implantação do BI foi interna. A principal dificuldade era que a empresa queria lançar o BI rapidamente. Mas demorou muito para construir tal projeto: desenvolver competências, preencher dados, construir um esquema de armazenamento conveniente, selecionar ferramentas e dominá-las.



A principal - quente - fase, quando tudo foi construído e cristalizado, durou cerca de um ano. E o projeto ainda está em desenvolvimento. 

Ao construir um data warehouse corporativo, é importante aderir a padrões elevados, defender sua posição e não fazer nada para agradar aos negócios. 



Foi com muita dor que refizemos a maior parte do projeto, que teve que ser feito rapidamente.
 Mas às vezes é aconselhável uma abordagem rápida. Portanto, no desenvolvimento de produtos, pode até ser o único correto. Você precisa avançar rapidamente, testar as hipóteses do produto e muito mais. Mas o armazenamento deve ser baseado em uma arquitetura sólida, caso contrário não será capaz de se adaptar rapidamente ao crescimento do negócio e o projeto morrerá.



Nesse difícil projeto, nosso líder ajudou muito, que defendeu o andamento da obra, explicou para a gerência o que estávamos fazendo, arrancou recursos e apenas nos defendeu. Sem esse apoio, não tenho certeza se teríamos conseguido lançar o projeto.



Nessas histórias, um papel importante é desempenhado pelos chamados early adopters - aqueles que estão prontos para experimentar coisas novas - entre os gerentes de topo, analistas, gerentes de produto. Para que um tópico bruto decole, precisamos de pioneiros que confirmem que tudo funciona e é conveniente de usar.



Se alguém quiser compartilhar a solução para o terceiro problema descrito acima - bem-vindo :-)



All Articles