Solução de Streaming Analytics do Grupo Boticário

Rafael Christofano
gb.tech
Published in
3 min readOct 31, 2022
A ilustração representa um fluxo de dados em cor azul
A ilustração representa um fluxo de dados em cor azul | Foto de Conny Schneider na Unsplash

Com a crescente evolução no modelo Data Driven, as áreas de negócio estão tendo a necessidade de obter repostas para suas perguntas por meio de dados atualizados, onde a análise batch já não satisfaz mais, havendo necessidade da evolução para um modelo real time, entregando a informação mais rápido possível na ponta para o consumo.

Primeiramente, para entender como podemos ajudar as áreas de negócio, precisamos definir o que é real time. Buscando a definição no dicionário inglês veremos que real time é: “communicated, shown, presented, etc. at the same time as events actually happen” — Fonte: https://dictionary.cambridge.org/

A partir dessa definição, é importante capturar do projeto qual é esse “momento que o evento acontece”. Há cenários em que o usuário deseja obter insights sobre os dados nos últimos segundos, minutos, horas, etc… Nesses cenários, é necessário aguardar pelo tempo desejado para fazer a análise de um grupo de dados que chegam por streaming, para que seja possível fazer a análise dos dados e obter a reposta sobre um evento em um período de tempo. A fim de suprir essa demanda, uma arquitetura próxima ao tempo real (Near Real Time) atenderá os requisitos. Essa arquitetura é considerada Near Real Time, pois ela “aguarda os dados chegarem” em um intervalos de tempo para fazer a análise, mesmo que isso leve alguns segundos.

Há outros cenários em que há a necessidade de obter a informação no momento em que o evento acontece e não está relacionada a um intervalo de tempo específico, e sim ao evento em si, por exemplo: uma venda, um clique, um log, atingir um threshold, etc… Nesses casos consideramos o cenário de tratamento do dado como um evento streaming, em que o dado chega e precisa de uma ação, que pode ser o enriquecimento com outros dados já persistidos previamente na plataforma de dados.

Para atender ambos os cenários o Grupo Boticário desenvolveu a arquitetura de Streaming Analytics, onde o engenheiro de dados pode entregar a reposta que o usuário precisa no exato momento que ela acontece, seja ela relacionada a um período de tempo (NRT) ou a um evento (streaming).

O fluxo de dados chegando a plataforma de dados: todo o processo analítico e a entrega são mostrados na imagem e detalhado logo em seguida.

Fluxo de streaming de dados projetado pelo time de arquitetura de dados que permite entregar dados em real time ou near real time.
Fluxo de streaming de dados projetado pelo time de arquitetura de dados que permite entregar dados em real time ou near real time.

1 — Dados oriundos de diferentes fontes são recebidos por um gerenciador de mensagem, no caso um tópico do Pub/Sub, e ficam disponíveis para que as ferramentas de análise e armazenamento possam utilizar esse dado.

2 — Os dados são persistidos no BigQuery, através da feature Pub/Sub Subscription, que escreve o dado via streaming em uma camada destinado a dados brutos (raw) .

3 — Paralelamente, uma cópia do dado bruto é enviada ao DataFlow, assim o dado streaming pode se manipulado e enriquecido com outros dados previamente persistidos nas camadas produtivas. Para a manipulação e o enriquecimento do dado, o Dataflow disponibiliza ferramentas como o Apache Beam ou SQL Workspace.

4 — O dado já preparado e enriquecido é gravado no BigQuery em uma camada de dados confiável (trusted).

5 — Com os dados persistidos em real time, um ETL pode ser agendado via composer para refinamento do dado e armazenado na camada refined ou, se necessária uma latência menor, uma View ou Materialized View pode ser criado na camada refined, trazendo dados refinados da trusted.

6 —Os dados já estão disponíveis para serem consumidos, por exemplo via dashboards.

O desenho da arquitetura pode parecer complexo, mas seu desenvolvimento e implantação são relativamente simples. É possível usar a linguagem SQL para manipulação dos dados em streaming no Dataflow, o que torna ainda mais simples. Para soluções que exigem maior complexidade na manipulação dos nos dados, o Apache Beam com SDK do Python pode ser usado, mas isso é um tema para um próximo artigo :).

Referências

O que é Streaming Analytics?

Dados em Streaming: Publicação e Ingestão

Apache Beam

Como unir dados de streaming com o Dataflow SQL

Crédito das Imagens

https://www.cartelis.com/blog/data-streaming/

--

--