A Uber anunciou o lançamento do IngestionNext, uma plataforma de ingestão de dados com abordagem streaming-first para seu data lake, que representa um avanço significativo na redução da latência e do consumo de recursos computacionais. Desenvolvida para substituir os tradicionais jobs em batch, a nova arquitetura processa eventos em tempo real, diminuindo o atraso na disponibilidade dos dados de horas para minutos e otimizando o uso de infraestrutura em cerca de 25%.
\n\n
Desafios da ingestão tradicional e motivação para a mudança
\n
Historicamente, a Uber utilizava pipelines baseados em Apache Spark que executavam ingestões em batch programadas. Apesar da capacidade de processar grandes volumes, esse método introduzia atrasos consideráveis entre a geração dos dados e sua disponibilidade para análises, experimentos e modelos de machine learning. Essa latência impactava a agilidade das equipes e a qualidade dos insights gerados.
\n
Segundo Kai Waehner, Global Field CTO, a mudança para um sistema streaming-first tem como objetivo tratar a frescura dos dados como uma dimensão crucial da qualidade da informação, permitindo decisões mais rápidas e precisas.
\n\n
Arquitetura e componentes do IngestionNext
\n
O IngestionNext foi construído sobre tecnologias consolidadas no ecossistema de dados em streaming:
\n
- \n
- Apache Kafka: responsável pela ingestão contínua dos eventos;
- Apache Flink: processa os fluxos em tempo real, executando transformações e garantindo a consistência;
- Apache Hudi: gerencia o armazenamento dos dados no data lake, permitindo commits transacionais, rollbacks e suporte a time travel.
\n
\n
\n
\n
Essa combinação possibilita a ingestão de milhares de datasets com alto volume global, suportando dashboards analíticos, plataformas de experimentação e cargas de trabalho de machine learning com maior velocidade.
\n
Além disso, um plano de controle automatiza o ciclo de vida dos jobs, configurações e monitoramento da saúde dos processos, enquanto estratégias de failover regional garantem continuidade e evitam perda de dados em situações de falha.
\n\n
Principais desafios técnicos e soluções implementadas
\n
Adotar um modelo streaming-first trouxe desafios relevantes:
\n
- \n
- Granularidade dos arquivos: a geração de muitos arquivos pequenos no formato Parquet pode prejudicar o desempenho e a eficiência do armazenamento. Para mitigar isso, foram implementadas estratégias de mesclagem em nível de grupos de linhas e mecanismos de compactação contínua.
- Complexidade da evolução de esquema: o Apache Hudi foi aprimorado para suportar mesclagem de dados com esquemas diferentes usando técnicas de padding e masking, embora isso eleve a complexidade e o custo de manutenção.
- Gerenciamento de checkpoints e recuperação: o sistema rastreia offsets das streams upstream e coordena commits para assegurar a correção dos dados e permitir recuperação confiável em caso de falhas.
- Skew de partições: mecanismos específicos foram adotados para lidar com desequilíbrios na distribuição dos dados durante o processamento.
\n
\n
\n
\n
\n\n
Impactos e resultados obtidos
\n
A migração para o IngestionNext resultou em uma redução de latência de ingestão de dados de horas para poucos minutos, acelerando a disponibilidade para análises e experimentos. Além disso, a substituição de jobs batch por pipelines streaming contínuos permitiu uma redução de aproximadamente 25% no uso de recursos computacionais.
\n
Suqiang Song, coautor do blog de engenharia da Uber, destacou que a nova plataforma habilitou uma pilha de dados em tempo real, do processo de ingestão à transformação e análise.
\n\n
Limitações atuais e perspectivas futuras
\n
Embora a frescura dos dados brutos tenha melhorado substancialmente, os engenheiros reconhecem que as transformações e pipelines analíticos downstream ainda podem introduzir latências adicionais. O foco futuro será estender as capacidades streaming para essas etapas subsequentes, garantindo que as melhorias na ingestão se propaguem por toda a cadeia de processamento e análise.
\n\n
Links úteis
\n
