SlideShare uma empresa Scribd logo
1 de 37
Baixar para ler offline
Um sistema de
recomendação a partir de
um grande grafo sobre o
Cassandra
Arthur Grava
Tech Lead - Big Data
@arthur_grava
arthur@luizalabs.com
• 786 lojas
• 8 centros de distribuição
• +18k funcionários
• +40 milhões de clientes
• 16 milhões de visitantes únicos / mês
Recommender Systems
Prova de conceito
POC
POC
POC
POC
POC
POC
POC - Ambiente
Porque um grafo?
• Modelagem do schema intuitiva
• Abstração entre relação Cliente <> Produto
• Fácil de iterar por entidades e suas relações utilizando
Gremlin DSL
• Maneiras simples de calcular comportamentos comuns
• Sem cálculos complexos de matrizes
• Cassandra + Titan + Rexster + Python
Schema
Gremlin
Gremlin
Gremlin
Gremlin
Gremlin
Gremlin
SKU COUNT
tv_2 1
tv_3 2
tv_4 3
tv_5 1
Gremlin
SKU COUNT
tv_4 3
tv_3 2
tv_2 1
tv_5 1
Resultados
• Rodando em AB teste com a solução da época usando
recomendações wvav
30% aumento em vendas
Limitações
• Camada de python desnecessária
• Essa camada aumentava o tempo de resposta
significativamente
• Recomendações calculadas diretamente no grafo
• Custo computacional alto ao fazer muitos traversals
• Supernodes
• Dificuldade de adicionar tags e atributos sem
aumentar significativamente o tamanho do grafo
• Eventos coletados em comunicação server <> server
Crescimento
Produção
• Sem uso de proxies. Acesso direto ao grafo (com Java)
• Implementação do pixel no browser para coletar
informações diretamente
• Desenvolvimento do nosso sistema de analytics próprio
• Recomendações calculadas fora do grafo
Produção
• Sem uso de proxies. Acesso direto ao grafo (com Java)
• Implementação do pixel no browser para coletar
informações diretamente
• Desenvolvimento do nosso sistema de analytics próprio
• Recomendações calculadas fora do grafo
Produção
• Sem uso de proxies. Acesso direto ao grafo (com Java)
• Implementação do pixel no browser para coletar
informações diretamente
• Desenvolvimento do nosso sistema de analytics próprio
• Recomendações calculadas fora do grafo
Produção - Ambiente
• Tempo de resposta reduzido pela metade
• Load no cassandra reduzido, permitindo
• Recomendações centradas no usuário
• Emails e push notifications
Resultados
25% participação em emails
23.8% de recomendações como push
Problemas
• Muitas responsabilidades no nosso módulo de API
• Dificuldade de manutenção de código
• Problema acessando o disco muitas vezes para as
recomendações centradas no usuário
• Email e push notifications
API Fora nos momentos importantes
Problemas - layout de dados nas
tabelas do Cassandra
Escalando a aplicação
Microserviços
• Separando obrigações: Coleta de eventos e serviço de
recomendações
• Isolando comportamentos: Podemos servir
recomendações, mesmo não coletando eventos
• Código mais simples e menor, refatorações não
afetam o sistema como um todo e deploys não geram
grandes mudanças
• Maior velocidade em adicionar funcionalidades e
testar novos algoritmos
• Melhor profiling da aplicação
Microseriços
• Movendo recomendações do Cassandra para o
Elasticsearch
• Recomendações pré-calculadas sendo salvas no
elasticsearch, sendo fácil de reconstruir e realizar
buscas
• Tempo de resposta para recomendações
personalizadas caiu de 400ms para 50ms (importante
para conversão e evasão do cliente)
• Menos traversals no grafo e menor impacto no load
médio do sistema
Impacto de negócio
De 6% para 25% share de vendas
35% share em vendas de email
31.6% de recomendações como push
Microservições - ambiente
Perguntas?
Meetup Globo - Big Data | Um sistema de recomendação a partir de um grande grafo sobre o Cassandra

Mais conteúdo relacionado

Semelhante a Meetup Globo - Big Data | Um sistema de recomendação a partir de um grande grafo sobre o Cassandra

Liberte-se dos bancos de dados comerciais para economizar, crescer e inovar
Liberte-se dos bancos de dados comerciais para economizar, crescer e inovarLiberte-se dos bancos de dados comerciais para economizar, crescer e inovar
Liberte-se dos bancos de dados comerciais para economizar, crescer e inovarAmazon Web Services LATAM
 
Estratégias de escablabilidade para serviços online
Estratégias de escablabilidade para serviços onlineEstratégias de escablabilidade para serviços online
Estratégias de escablabilidade para serviços onlineGuto Xavier
 
O Livro Completo da Engenharia de Dados.pdf
O Livro Completo da Engenharia de Dados.pdfO Livro Completo da Engenharia de Dados.pdf
O Livro Completo da Engenharia de Dados.pdfSergio Tavares Coutinho
 
Apresentação Seeds to the Cloud - Carlos Paiola, Aquarius.pptx
Apresentação Seeds to the Cloud - Carlos Paiola, Aquarius.pptxApresentação Seeds to the Cloud - Carlos Paiola, Aquarius.pptx
Apresentação Seeds to the Cloud - Carlos Paiola, Aquarius.pptxdataRain
 
Novidades do .NET Core 2.1 e do ASP.NET Core 2.1
Novidades do .NET Core 2.1 e do ASP.NET Core 2.1Novidades do .NET Core 2.1 e do ASP.NET Core 2.1
Novidades do .NET Core 2.1 e do ASP.NET Core 2.1Giovanni Bassi
 
Aplicações Distribuídas com Azure Service Bus + Azure Functions - Azure Tech ...
Aplicações Distribuídas com Azure Service Bus + Azure Functions - Azure Tech ...Aplicações Distribuídas com Azure Service Bus + Azure Functions - Azure Tech ...
Aplicações Distribuídas com Azure Service Bus + Azure Functions - Azure Tech ...Renato Groff
 
ProIndústria 2017 - A10 - Como viabilizar plataformas virtuais de tecnologia ...
ProIndústria 2017 - A10 - Como viabilizar plataformas virtuais de tecnologia ...ProIndústria 2017 - A10 - Como viabilizar plataformas virtuais de tecnologia ...
ProIndústria 2017 - A10 - Como viabilizar plataformas virtuais de tecnologia ...CADWARE-TECHNOLOGY
 
Utilizando a nuvem para proteger o mercado financeiro com segurança, agilidad...
Utilizando a nuvem para proteger o mercado financeiro com segurança, agilidad...Utilizando a nuvem para proteger o mercado financeiro com segurança, agilidad...
Utilizando a nuvem para proteger o mercado financeiro com segurança, agilidad...Amazon Web Services LATAM
 
Monitorando APIs REST com o Application Insights
Monitorando APIs REST com o Application InsightsMonitorando APIs REST com o Application Insights
Monitorando APIs REST com o Application InsightsRenato Groff
 
QConSP16 - Apache Cassandra Evoluindo Sistemas Distribuídos
QConSP16 - Apache Cassandra Evoluindo Sistemas DistribuídosQConSP16 - Apache Cassandra Evoluindo Sistemas Distribuídos
QConSP16 - Apache Cassandra Evoluindo Sistemas DistribuídosEiti Kimura
 
Planejamento e Gerenciamento de Capacidade para Sistemas Distribuídos
Planejamento e Gerenciamento de Capacidade para Sistemas DistribuídosPlanejamento e Gerenciamento de Capacidade para Sistemas Distribuídos
Planejamento e Gerenciamento de Capacidade para Sistemas Distribuídosluanrjesus
 
Institucional 2016 premier it
Institucional 2016 premier it Institucional 2016 premier it
Institucional 2016 premier it Jorge Biesczad Jr.
 
Monitorando APIs REST com o Application Insights - .Azure Weekend 2018 - Camp...
Monitorando APIs REST com o Application Insights - .Azure Weekend 2018 - Camp...Monitorando APIs REST com o Application Insights - .Azure Weekend 2018 - Camp...
Monitorando APIs REST com o Application Insights - .Azure Weekend 2018 - Camp...Renato Groff
 
Monitorando APIs REST com o Application Insights - .NET São Paulo - Junho-2018
Monitorando APIs REST com o Application Insights - .NET São Paulo - Junho-2018Monitorando APIs REST com o Application Insights - .NET São Paulo - Junho-2018
Monitorando APIs REST com o Application Insights - .NET São Paulo - Junho-2018Renato Groff
 
Monitorando APIs REST com o Application Insights - .NET SP - Dezembro/2017
Monitorando APIs REST com o Application Insights - .NET SP - Dezembro/2017Monitorando APIs REST com o Application Insights - .NET SP - Dezembro/2017
Monitorando APIs REST com o Application Insights - .NET SP - Dezembro/2017Renato Groff
 
Dicas para uma maior performance em APIs REST - DEVPIRA Festival - Dezembro-2018
Dicas para uma maior performance em APIs REST - DEVPIRA Festival - Dezembro-2018Dicas para uma maior performance em APIs REST - DEVPIRA Festival - Dezembro-2018
Dicas para uma maior performance em APIs REST - DEVPIRA Festival - Dezembro-2018Renato Groff
 

Semelhante a Meetup Globo - Big Data | Um sistema de recomendação a partir de um grande grafo sobre o Cassandra (20)

Liberte-se dos bancos de dados comerciais para economizar, crescer e inovar
Liberte-se dos bancos de dados comerciais para economizar, crescer e inovarLiberte-se dos bancos de dados comerciais para economizar, crescer e inovar
Liberte-se dos bancos de dados comerciais para economizar, crescer e inovar
 
Estratégias de escablabilidade para serviços online
Estratégias de escablabilidade para serviços onlineEstratégias de escablabilidade para serviços online
Estratégias de escablabilidade para serviços online
 
Desenvolvimento ágil
Desenvolvimento ágilDesenvolvimento ágil
Desenvolvimento ágil
 
O Livro Completo da Engenharia de Dados.pdf
O Livro Completo da Engenharia de Dados.pdfO Livro Completo da Engenharia de Dados.pdf
O Livro Completo da Engenharia de Dados.pdf
 
Apresentação Seeds to the Cloud - Carlos Paiola, Aquarius.pptx
Apresentação Seeds to the Cloud - Carlos Paiola, Aquarius.pptxApresentação Seeds to the Cloud - Carlos Paiola, Aquarius.pptx
Apresentação Seeds to the Cloud - Carlos Paiola, Aquarius.pptx
 
Novidades do .NET Core 2.1 e do ASP.NET Core 2.1
Novidades do .NET Core 2.1 e do ASP.NET Core 2.1Novidades do .NET Core 2.1 e do ASP.NET Core 2.1
Novidades do .NET Core 2.1 e do ASP.NET Core 2.1
 
Aplicações Distribuídas com Azure Service Bus + Azure Functions - Azure Tech ...
Aplicações Distribuídas com Azure Service Bus + Azure Functions - Azure Tech ...Aplicações Distribuídas com Azure Service Bus + Azure Functions - Azure Tech ...
Aplicações Distribuídas com Azure Service Bus + Azure Functions - Azure Tech ...
 
ProIndústria 2017 - A10 - Como viabilizar plataformas virtuais de tecnologia ...
ProIndústria 2017 - A10 - Como viabilizar plataformas virtuais de tecnologia ...ProIndústria 2017 - A10 - Como viabilizar plataformas virtuais de tecnologia ...
ProIndústria 2017 - A10 - Como viabilizar plataformas virtuais de tecnologia ...
 
Utilizando a nuvem para proteger o mercado financeiro com segurança, agilidad...
Utilizando a nuvem para proteger o mercado financeiro com segurança, agilidad...Utilizando a nuvem para proteger o mercado financeiro com segurança, agilidad...
Utilizando a nuvem para proteger o mercado financeiro com segurança, agilidad...
 
Kanban
KanbanKanban
Kanban
 
Monitorando APIs REST com o Application Insights
Monitorando APIs REST com o Application InsightsMonitorando APIs REST com o Application Insights
Monitorando APIs REST com o Application Insights
 
QConSP16 - Apache Cassandra Evoluindo Sistemas Distribuídos
QConSP16 - Apache Cassandra Evoluindo Sistemas DistribuídosQConSP16 - Apache Cassandra Evoluindo Sistemas Distribuídos
QConSP16 - Apache Cassandra Evoluindo Sistemas Distribuídos
 
Planejamento e Gerenciamento de Capacidade para Sistemas Distribuídos
Planejamento e Gerenciamento de Capacidade para Sistemas DistribuídosPlanejamento e Gerenciamento de Capacidade para Sistemas Distribuídos
Planejamento e Gerenciamento de Capacidade para Sistemas Distribuídos
 
Institucional 2016 premier it
Institucional 2016 premier it Institucional 2016 premier it
Institucional 2016 premier it
 
Palestra scrum
Palestra scrumPalestra scrum
Palestra scrum
 
Monitorando APIs REST com o Application Insights - .Azure Weekend 2018 - Camp...
Monitorando APIs REST com o Application Insights - .Azure Weekend 2018 - Camp...Monitorando APIs REST com o Application Insights - .Azure Weekend 2018 - Camp...
Monitorando APIs REST com o Application Insights - .Azure Weekend 2018 - Camp...
 
Monitorando APIs REST com o Application Insights - .NET São Paulo - Junho-2018
Monitorando APIs REST com o Application Insights - .NET São Paulo - Junho-2018Monitorando APIs REST com o Application Insights - .NET São Paulo - Junho-2018
Monitorando APIs REST com o Application Insights - .NET São Paulo - Junho-2018
 
Auto scaling
Auto scalingAuto scaling
Auto scaling
 
Monitorando APIs REST com o Application Insights - .NET SP - Dezembro/2017
Monitorando APIs REST com o Application Insights - .NET SP - Dezembro/2017Monitorando APIs REST com o Application Insights - .NET SP - Dezembro/2017
Monitorando APIs REST com o Application Insights - .NET SP - Dezembro/2017
 
Dicas para uma maior performance em APIs REST - DEVPIRA Festival - Dezembro-2018
Dicas para uma maior performance em APIs REST - DEVPIRA Festival - Dezembro-2018Dicas para uma maior performance em APIs REST - DEVPIRA Festival - Dezembro-2018
Dicas para uma maior performance em APIs REST - DEVPIRA Festival - Dezembro-2018
 

Meetup Globo - Big Data | Um sistema de recomendação a partir de um grande grafo sobre o Cassandra

  • 1. Um sistema de recomendação a partir de um grande grafo sobre o Cassandra Arthur Grava Tech Lead - Big Data @arthur_grava arthur@luizalabs.com
  • 2. • 786 lojas • 8 centros de distribuição • +18k funcionários • +40 milhões de clientes • 16 milhões de visitantes únicos / mês
  • 5. POC
  • 6. POC
  • 7. POC
  • 8. POC
  • 9. POC
  • 10. POC
  • 12. Porque um grafo? • Modelagem do schema intuitiva • Abstração entre relação Cliente <> Produto • Fácil de iterar por entidades e suas relações utilizando Gremlin DSL • Maneiras simples de calcular comportamentos comuns • Sem cálculos complexos de matrizes • Cassandra + Titan + Rexster + Python
  • 19. Gremlin SKU COUNT tv_2 1 tv_3 2 tv_4 3 tv_5 1
  • 20. Gremlin SKU COUNT tv_4 3 tv_3 2 tv_2 1 tv_5 1
  • 21. Resultados • Rodando em AB teste com a solução da época usando recomendações wvav 30% aumento em vendas
  • 22. Limitações • Camada de python desnecessária • Essa camada aumentava o tempo de resposta significativamente • Recomendações calculadas diretamente no grafo • Custo computacional alto ao fazer muitos traversals • Supernodes • Dificuldade de adicionar tags e atributos sem aumentar significativamente o tamanho do grafo • Eventos coletados em comunicação server <> server
  • 24. Produção • Sem uso de proxies. Acesso direto ao grafo (com Java) • Implementação do pixel no browser para coletar informações diretamente • Desenvolvimento do nosso sistema de analytics próprio • Recomendações calculadas fora do grafo
  • 25. Produção • Sem uso de proxies. Acesso direto ao grafo (com Java) • Implementação do pixel no browser para coletar informações diretamente • Desenvolvimento do nosso sistema de analytics próprio • Recomendações calculadas fora do grafo
  • 26. Produção • Sem uso de proxies. Acesso direto ao grafo (com Java) • Implementação do pixel no browser para coletar informações diretamente • Desenvolvimento do nosso sistema de analytics próprio • Recomendações calculadas fora do grafo
  • 28. • Tempo de resposta reduzido pela metade • Load no cassandra reduzido, permitindo • Recomendações centradas no usuário • Emails e push notifications Resultados 25% participação em emails 23.8% de recomendações como push
  • 29. Problemas • Muitas responsabilidades no nosso módulo de API • Dificuldade de manutenção de código • Problema acessando o disco muitas vezes para as recomendações centradas no usuário • Email e push notifications API Fora nos momentos importantes
  • 30. Problemas - layout de dados nas tabelas do Cassandra
  • 32. Microserviços • Separando obrigações: Coleta de eventos e serviço de recomendações • Isolando comportamentos: Podemos servir recomendações, mesmo não coletando eventos • Código mais simples e menor, refatorações não afetam o sistema como um todo e deploys não geram grandes mudanças • Maior velocidade em adicionar funcionalidades e testar novos algoritmos • Melhor profiling da aplicação
  • 33. Microseriços • Movendo recomendações do Cassandra para o Elasticsearch • Recomendações pré-calculadas sendo salvas no elasticsearch, sendo fácil de reconstruir e realizar buscas • Tempo de resposta para recomendações personalizadas caiu de 400ms para 50ms (importante para conversão e evasão do cliente) • Menos traversals no grafo e menor impacto no load médio do sistema
  • 34. Impacto de negócio De 6% para 25% share de vendas 35% share em vendas de email 31.6% de recomendações como push