Datalake API

https://github.com/chaordic/datalake-api

O Datalake API é o ponto de entrada de parte dos dados que são recebidos. Dentro dele está localizado a api e a sua documentação (docs-v2.datalake.chaordicsystems.com/).

Exemplo: https://github.com/chaordic/datalake-api/commit/e49ea3603e6bc6ab71153e13dbfbb38f9eee0468

Adicionada rota /v2/status

É uma API escrita em Scala, sua principal função é receber os dados de diferentes sistemas (verticais) da Linx, tanto ERPs quanto PDVs, e de diversas naturezas: vendas, clientes, produtos, lojas são alguns exemplos. 

O DL API roda em instâncias auto-scaling do tipo T3a que funcionam 24/7 , por elas que recebemos a maior parte dos dados. Os dados recebidos são armazenados em buckets do S3 (API data), e paralelamente os metadados são enviados para o Kinesis >> Logstash >> Elasticsearch para serem indexados. Este fluxo controla o processamento evitando muitos requests simultâneos no elasticsearch. 

LISTA DE TERMOS 

Vortex 

É um programa que roda em uma máquina reservada, o qual pega os logs de execução em tempo real das máquinas que rodam a API e salvam eles em um bucket do s3 chamado linx-datalake-logs. Isso é necessário pois se as máquinas da API (que funcionam sob demanda) caem, os logs que não foram passados para o vortex são perdidos. 

Pond 

São fontes de dados (entidades) que compõem o datalake, como product, customer, solditems, store, foot-traffic, fullfilments, product-inventory. Os dados enviados para o datalake podem ser, ou com schema (campo previamente combinados, com contratos de campos obrigatórios e formatos bem definidos), ou sem schema (documentos livres de formatação, imagem, áudio, vídeo, um arquivo de texto que não queremos parsear). 

Para tudo que tem schema, foi criado uma entidade, um pond que é o contrato que define a entidade, por exemplo existe o pond da customers-v1, existe o pond da products-v1. 

Kinesis 

é um sistema pub-sub (publisher-subscriber) que permite desacoplar os produtores de dados dos consumidores de dados por meio de um serviço distribuído de mensagens. De forma simplificada, existem várias máquinas produzindo eventos e várias máquinas consumindo eventos de diversos tópicos gerenciados pelo Kinesis. Os eventos não são apagados após o consumo. 

Em nossa arquitetura é usado para coletar dados da api e distribuí-los para o logstash 

Logstash 

Logstash, iniciou como um manipulador de logs para enviar e armazenar no elasticsearch, mas com o tempo se transformou em um coletor de dados em tempo real. Ele pega dados de diversas fontes juntos, coloca em um esteira de dados (pipeline), normaliza e transforma dados, e depois envia para múltiplas fontes, inclusive elasticsearch.