O documento descreve a evolução da plataforma de dados do Nubank. Apresenta a infraestrutura de dados da empresa, incluindo o uso do Datomic e Kafka para armazenamento e processamento de dados. Também explica os processos de ingestão, análise e uso dos dados para tomada de decisões e modelos, além das ferramentas utilizadas como Databricks, Looker e Jupyter Notebooks.
9. Para que o Nubank usa
dados?
• Para tomar decisões de crédito
• Para melhor a experiência dos
clientes com produtos mais
inteligentes
• Para gerar controles e relatórios
para a empresa, seus acionistas e
reguladores
• Para ajudar os nubankers a
tomarem decisões melhores
10. • 250 microsserviços
• 30 modelos em
produção
• 70Tb de dados
processados por dia
• 1100 usuários
semanais nas
ferramentas de dados
11. Dados como uma plataforma
Aquisição
de Clientes
Atendimento
ao Cliente
Cartão de
Crédito
Plataforma de Dados
Empréstimos
Pessoais
Relatórios
Financeiros
....
12. Tribo de Dados !
Times de Dados
Acesso a Dados "Infra de Dados #
15. Datomic
e Entity Long
a Attribute String
v Value Any
t Transaction point in time Long
tx Transaction entity id Long
txInstant Transaction wall-clock time java.util.Date
op Operation (assertion / retraction) Boolean
• Imutabilidade
• Dados não são sobrescritos
• ACID
22. Ambos são necessários
AMBIENTE TRANSACIONAL AMBIENTE ANALÍTICO
Dificuldade na escritaDificuldade na leitura
Unificado, GlobalFragmentado, Local
Alta acessibilidade
SQL somente leitura com ACL
Baixa acessibilidade
Datalog, bancos de produção, segurança
25. Ingestão de Dados do Datomic
1. Descoberta
2. Alocação dos bancos
3. Extração dos Logs
4. Empacotamento para S3
26. Ingestão de Outros Dados via Kafka
Serviço que acumula as mensagens recebidas
salva no Data Lake
27. • Utilizamos Amazon S3
• Ambiente Isolado
• Gestão de Metadados
Nosso Data Lake
28. Serviço de Gestão de Metadados
• "Mapa" do ETL: contém
os metadados de cada
dataset, incluindo onde
eles estão armazenados
no S3
• Os serviços não tem
interferência direta nos
dados
30. Nossa engine de processamento de dados
• O “motor" do ETL; descreve
todas as transformações para
produzir os datasets
• Feito para processar grandes
quantidades de dados
• Em Scala, fácil de usar porque
abstrai as partes complexas
do Spark
• Declarativo
31. Organização dos Datasets
DB1 Log S0
DB1 Log S1
DB2 Log S0
Dataset Series
contract 1
contract 2
dataset 1
dataset 2
model
policy
32. Datasets
• Qualquer pessoa na empresa pode
criar um Dataset e contribuir com um
Pull Request em nosso monorepo
• As equipes são responsáveis por
escrever e manter seus Datasets
• Os Datasets são escritos em Scala;
DSLs são fornecidas
• Usamos Databricks para iterar
• Revisão de PRs são feitas por pares
para garantir qualidade e consistência
• 150 contribuidores fazendo 300+
contribuições por mês
36. Modelos em Batch
• São executados com o ETL
• Python
• Ferramentas que facilitam:
• Validar configuração
• Treinar e testar diferentes
parâmetros
• Simular comportamento
de produção localmente
• Enviar para Produção
Dados Modelos
Score / Prob.
Políticas
Decisões
38. Mandando dados de volta para produção
• Serviço na stack de dados
carrega as políticas em
um Dynamo DB
• Serviço na stack de
produção acessa o
mesmo banco e oferece
interfaces para o
consumo dessas políticas