O Badoo é uma rede social para solteiros que atualmente lida com bilhões de eventos por dia, explica Vladimir Kazanov, líder de engenharia de plataforma de dados. Na Skills Matter, Kazanov falou sobre alguns dos desafios de operar nessa escala e quais ferramentas o Badoo usa para processar e relatar esses dados.
O objetivo do departamento de inteligência de negócios do Badoo é coletar informações sobre os eventos do usuário, processá-lo e reportá-lo para criar insights. São esses insights que ajudam a empresa a tomar decisões. Kazanov explica que esses eventos integrais passam por um ciclo de vida:
- Receber: Usando o Protobuf, várias bibliotecas de clientes são geradas para produzir eventos. Que são então transmitidos por meio do LSD, um daemon de streaming de código aberto, que é usado para filtrar e rotear os eventos;
- Armazenamento: os dados são armazenados em um data lake HDFS no formato de arquivo ORC. Eventos com esquemas são armazenados no Exasol, um banco de dados analítico distribuído em colunas;
- Processamento: os dados são processados usando o Spark, uma estrutura de computação distribuída baseada em Java que permite que os dados sejam consultados em um cluster;
- Relatório: uma ferramenta de relatório chamada microstrategy é usada para permitir que o Exasol seja consultado usando painéis e relatórios. Além disso, uma ferramenta personalizada chamada CubeDB é usada, projetada para executar consultas mais rapidamente para relatórios técnicos.
Para criar um novo evento, primeiro, um analista de negócios cria um esquema. A partir desse esquema, as bibliotecas do cliente Protobuf são geradas para várias plataformas. Kazanov entende esse suporte multi-plataforma como uma de principais vantagens, já que torna fácil para as aplicações móveis e web publicar estes novos eventos.
Ao transmitir eventos por meio do LSD, o Badoo emite os dados por hora, em vez de fazê-lo em tempo real. Isso ocorre porque, em caso de falha, Kazanov acredita que o carregamento de um lote é mais fácil, já que é simples comparar com o banco de dados de destino para ver se foi escrito de maneira correta.
Kazanov também acredita que o armazenamento de dados no ORC é particularmente útil, tanto que lista algumas das razões para ser orientado por colunas, ter propriedades de compactação fortes e ser suportado por vários aplicativos, além de também poder ser facilmente consultado usando o Hive, um banco de dados baseado no Hadoop com uma linguagem de consulta semelhante a SQL.
Ao falar sobre a consulta de dados, Kazanov explica que uma das vantagens do Exasol é a utilização de SQL. Porque possui uma curva de aprendizado baixa para os desenvolvedores, que não precisam aprender uma nova linguagem de consulta. Além disso, vê o benefício principal como desempenho:
O Exasol nos permite armazenar terabytes de dados no cluster e fazer consultas realmente eficientes. Estou falando de minutos, enquanto sistemas comparáveis não chegam nem perto.
A palestra completa pode ser assistida online, com ferramentas de código aberto do Badoo, como CubeDB, que aceita contribuições da comunidade.