7 Pilares Essenciais na Construção de Pipelines de Dados: Do Básico ao “Production-Ready”

VictorGomess
Data Hackers
Published in
7 min readFeb 28, 2024

Como diferenciar pipelines de dados production-ready de um pipeline “amador”?

Em um mundo onde os dados são parte essencial de boa parte das empresas modernas, a eficácia dos pipelines de dados torna-se uma linha divisória entre o sucesso e o fracasso tecnológico. Esta reflexão me veio ao encontrar uma discussão no subreddit r/dataengineering: o que realmente separa um pipeline de dados “production-ready” de um amador? Este assunto ressoa profundamente com meus primeiros meses como um Engenheiro de Dados que também foi em um momento de reestruturação intensa dos pipelines de onde eu trabalhava.

Este artigo visa desvendar os conceitos que distinguem um pipeline de dados maduro de um iniciante, explorando práticas, ferramentas e estratégias essenciais para a integridade, segurança e escalabilidade dos dados. Para isso iremos a 7 conceitos essenciais que devem ser levados em conta na construção de pipelines de dados:

  1. Manuseio de Dados Atrasados
  2. Conservação de Dados Originais
  3. Administração de Picos de Demanda
  4. Monitoramento, Alertas e Indicadores de Desempenho
  5. Gestão de Despesas nos ambientes da Nuvem
  6. Idempotência
  7. Elaboração de Dicionários e Documentação de Dados

1. Manuseio de Dados Atrasados

Dados que chegam fora do tempo esperado é algo que infelizmente é extremamente comum e é algo que parece muito difícil no começo, porém é crucial para preservar a integridade e relevância dos dados em análises futuras.

Uma possível solução é implementar janelas de processamento de dados flexíveis, pipelines que são disparados com base em eventos e mecanismos de reprocessamento que podem acomodar dados que chegam fora de ordem ou atrasados, garantindo que eles sejam incorporados corretamente nas análises.

Ferramentas como Apache Airflow permitem definir workflows que podem ajustar-se automaticamente para processar dados atrasados sem comprometer a integridade dos dados.

No meu caso, esse processo era manual. Tinhamos uma tabela que rastreava a chegada dos arquivos todos os dias, e se algum arquivo não chegava na sua data de recebimento correta, recebíamos um aviso no SNS do Slack, para daí então fazermos o reprocessamento manual pelo Airflow.

2. Conservação de Dados Originais

A conservação de dados originais é um pilar fundamental para a integridade, confiabilidade e versatilidade dos sistemas de dados em qualquer organização. Esta prática não apenas serve como uma salvaguarda para a auditabilidade e conformidade regulatória, mas também assegura que a empresa mantenha a capacidade de reavaliar e reprocessar informações à luz de novas descobertas, tecnologias ou necessidades de negócio.

A subestimação da conservação de dados não processados para futuros reprocessamentos é algo bem comum. Essa prática permite ajustes e aprimoramentos sem perda de informações preciosas.

Uma possível solução é utilizar sistemas de armazenamento de dados que suportem a versionamento e a imutabilidade dos dados brutos, permitindo reprocessamentos e análises retrospectivas sem perda de informação original.

Na minha abordagem, adotamos a arquitetura de medalhão em nosso Delta Lake, nos inspirando bastante no modelo do Databricks, garantindo que os dados originais estivessem sempre disponíveis na camada Bronze. Essa organização nos permitia acessar rapidamente essas informações primárias sempre que necessário.

3. Administração de Picos de Demanda

Gerenciar picos de demanda é um desafio em ambientes de processamento de dados intensivos, marcados por grandes volumes de informação, aplicações que exigem respostas em tempo real e infraestruturas de TI que precisam ser flexíveis e escaláveis.

A habilidade para lidar com essas oscilações de demanda de forma eficiente é importante para assegurar a estabilidade, o desempenho e a disponibilidade dos sistemas.

Picos inesperados de processamento, reprocessamento e backfilling podem desestabilizar sistemas mal projetados, enfatizando a importância de uma arquitetura escalável e robusta.

Possível solução: A utilização de arquiteturas escaláveis, como o AWS Glue, permite que os sistemas ajustem seus recursos dinamicamente. Isso é essencial para manter a estabilidade e performance mesmo sob cargas elevadas de processamento.

No meu caso, nossos jobs eram feitos pelo AWS Glue, com auto-scaling¹ habilitado, designado para jobs de processamentos pesados.

4. Monitoramento, Alertas e Indicadores de Desempenho

Uma validação da integridade de um certo dado, através da UI interativa do Great Expectations.

A vigilância do desempenho por meio de monitoramento, alertas e KPIs é crucial para uma manutenção proativa, muitas vezes ignorada por principiantes.

A falta de monitoramento pode atrasar a detecção de problemas, afetando a qualidade dos dados e a confiança nos resultados.

Possível solução: Ferramentas como Prometheus para monitoramento de infraestrutura e Great Expectations para validação de dados oferecem meios para acompanhar a saúde do pipeline em tempo real. Isso permite identificar e resolver rapidamente problemas, mantendo a qualidade e a integridade dos dados processados.

No meu caso, usávamos o suite do Great Expectations para validar a consistência e qualidade dos nosso dados. Ele era executado após a etapa de transformação dos nosso Glue Jobs, sinalizando a qualidade dos dados que estavam ali sendo processados, de acordo com as métricas que definimos no suite, para assim os dados serem carregados ou não em nosso Lake.

Além do Great Expectations e do Prometheus, outras ferramentas que também pode ser utilizadas para garantir a qualidade dos dados incluem o dbt² (data build tool), que permite testes e documentação de dados, e o Deequ³, uma biblioteca da AWS para assertivas de qualidade em grandes volumes de dados. Estas ferramentas ajudam a manter a consistência e confiabilidade dos dados, fundamentais para análises precisas e tomadas de decisão baseadas em dados.

A qualidade dos dados não se limita à sua correção técnica; abrange também a conformidade com políticas de governança de dados. Implementar práticas de governança robustas assegura que os dados sejam não apenas precisos, mas também utilizados de maneira ética e responsável.

5. Gestão de Despesas nos ambientes da Nuvem

A habilidade para gerenciar custos de operações em nuvem frequentemente elude os menos experientes, tal gerenciamento ineficiente dos custos de operação na nuvem pode resultar em despesas desnecessárias.

Possível solução: Implementar práticas de gerenciamento de custos, como monitoramento de uso, otimização de recursos, e escolha de serviços de nuvem custo-efetivos, para manter o controle sobre os gastos operacionais

No meu caso, todas nossas instâncias e quaisquer produtos da nuvem, eram utilizadas Tags⁴ de acordo com sua categoria. Tinhámos também alarmes voltado para custo atual do serviço, se estava próximo de um determinado valor ou se tinha superado esse valor, esses alarmes recebíamos pelo SNS do CloudWatch na AWS.

Ferramentas como AWS Cost Explorer⁵ e práticas como a utilização de instâncias reservadas ou spot ajudam a otimizar os custos sem comprometer o desempenho.

6. Idempotência

A idempotência⁶ é de suma importância para manter a estabilidade e a precisão nos pipelines, garantindo que operações repetidas sobre os mesmos dados resultem sempre no mesmo estado final, sem duplicações ou inconsistências.

Possível solução: Utilizar controle de versão de dados e mecanismos de reconhecimento que identifiquem operações prévias, além de reforçar transações atômicas e técnicas de deduplicação.

No meu caso, todas nossas transformações seguiam um padrão de UPSERT, que pelo Delta Lake é usado no MERGE⁷. Eram definidas as chaves primárias e antes de completar a inserção dos dados, era checadas as linhas por essas chaves primárias para assim manter o pipeline sem duplicidade e também mantendo sua idempotência independente de quantas vezes rodar aquele pipeline.

7. Elaboração de Dicionários e Documentação de Dados

Facilmente a maneira mais simples e eficaz de diferenciar um pipeline production-ready de um pipeline amador.

A criação e a manutenção de dicionários de dados, catálogos e documentação detalhada facilita o entendimento, a governança e a colaboração do pipeline como um todo, porém é facilmente negligenciada por um engenheiro de dados amador.

A presença de dicionários de dados atualizados, catálogos bem estruturados e documentação completa é um indicador claro de um pipeline maduro e preparado para enfrentar os desafios de um ambiente de produção.

Conclusão

A evolução dos sistemas de gerenciamento de dados de suas fases iniciais para um patamar avançado é mais que a mera seleção de tecnologias sofisticadas. O verdadeiro avanço na maturação desses sistemas não se quantifica pela complexidade das ferramentas adotadas, mas sim pelo cultivo de um ambiente que prioriza o aperfeiçoamento constante, a responsabilidade no manejo dos dados e uma visão estratégica de longo prazo.

Nesse contexto, a transformação de pipelines de dados em um “pronto para produção” depende menos das capacidades técnicas específicas e mais de um compromisso com práticas e processos que garantam a qualidade e a confiabilidade dos dados. Enquanto soluções mais simples podem servir para necessidades menos complexas ou críticas, a excelência requer um olhar cuidadoso para os detalhes e a implementação de padrões elevados de operação.

Portanto, a transição para abordagens mais maduras e sofisticadas nos pipelines de dados não é apenas uma questão de habilidade técnica; é, fundamentalmente, uma mudança cultural e de mentalidade na forma como os dados são gerenciados. Ao enfocar na qualidade, na governança e na estratégia, as organizações podem elevar seus pipelines de dados a ativos estratégicos essenciais para decisões de negócios bem-informadas e um sucesso sustentável a longo prazo.

Como sua empresa aborda esses pontos críticos?

Meu LinkedIn

Referências

¹: Using auto scaling for AWS Glue

²: What, exactly, is dbt?

³: Test data quality at scale with Deequ

⁴: Tagging your AWS resources

⁵: Analyzing your costs with AWS Cost Explorer

⁶: How to make data pipelines idempotent

⁷:Upsert into a Delta Lake table using merge

--

--