Construindo um Sistema de
Recomendações na GCP
Daniela Petruzalek
Consultant @ ThoughtWorks
Google Developer Expert
[email protected]
November 17th, 2018
Slide 2
Slide 2 text
No content
Slide 3
Slide 3 text
No content
Slide 4
Slide 4 text
O fenômeno da cauda longa
Amazon:
36,7% (2008)
$1,9 bi USD
Amazon:
63,3%(2008)
$3,4 bi USD
Mais de 100 mil livros
vendidos
Slide 5
Slide 5 text
Arquitetura para Sistemas de Recomendação
- Serviços:
- Apresentação
- Backend
- Algoritmos
- Banco de Dados / Data Lake
- Scheduler
Recommendation System => RecSys => “REX”
Slide 6
Slide 6 text
Visão Macro
Algoritmos de
Recomendação
API de
Recomendação
Fonte de
Documentos
Dados de
Consumo
Resultados de
Algoritmos
Slide 7
Slide 7 text
Algoritmo: Filtragem Colaborativa
•Processo:
• Identificar usuários similares
• Recomendar itens que usuários similares gostam
Filmes
Usuários
User x Item Matrix | Utility Matrix | Rating Matrix
Slide 8
Slide 8 text
Outros Algoritmos
• Filtragem colaborativa item-item
• Similaridade item-item (medidas de distância: cosseno,
Pearson, etc)
• Top: itens mais acessados
• Random
• Constante / lista manual
Slide 9
Slide 9 text
Fontes de Dados: MovieLens
- https://movielens.org
- https://grouplens.org/datasets/movielens/
- Características:
- 20M de ratings
- 27k filmes
- 138k usuários
- ML Youtube
Slide 10
Slide 10 text
Arquitetura: Sistema de Recomendações v1
Front End
App Engine
Scripts
Storage
ALS
Dataproc
recommend
Cloud Function
rexdb
Cloud SQL
Slide 11
Slide 11 text
Cloud Storage
Filesystem na Google Cloud
Armazenamento em Buckets
- Namespace único
Endereço começa com gs://, exemplo:
- gs://danicat/ml
Paga por GB
Slide 12
Slide 12 text
Cloud SQL
Banco de dados relacional na GCP
Dois sabores: MySQL e PostgreSQL
Paga por CPU e Storage
É possível desligar a instância (paga só por storage)
Slide 13
Slide 13 text
Cloud Dataproc
Apache Spark na GCP
Provisiona cluster na GCE
- Mínimo 3 máquinas (1 master + 2 workers)
Paga por máquina + storage
Cria um cluster novo em aprox. 2 minutos
Slide 14
Slide 14 text
Cloud Functions
Oferta de código serverless
Suporta Node.js 6 e 8 (beta)
Python
Go (alpha)
Paga por chamada de função
Slide 15
Slide 15 text
App Engine Standard
Outra oferta serverless
Aplicação gerenciada pela GCP: scale up / scale down
Suporta: nodejs, Go, python, java, ...
Slide 16
Slide 16 text
Arquitetura: Sistema de Recomendações v1
Front End
App Engine
Scripts
Storage
ALS
Dataproc
recommend
Cloud Function
rexdb
Cloud SQL
Slide 17
Slide 17 text
Ephemeral Dataproc Cluster
Criar um cluster para cada job
Executar o job
Destruir o cluster após o job se encerrar
Resolve problemas de conflito de configuração, concorrência, etc
Slide 18
Slide 18 text
Cloud Composer
Versão gerenciada do Apache Airflow
Mínimo de 3 nós
Cobrado por hora (!!!)
Considerar Cloud Scheduler (beta)
Slide 19
Slide 19 text
Arquitetura: Sistema de Recomendações v2
Front End
App Engine
Scripts
Storage
ALS
Dataproc
recommend
Cloud Function
rexdb
Cloud SQL
Scheduler
Composer
Slide 20
Slide 20 text
Próximos Passos
Adicionar novos algoritmos
Camada de testes AB
Captura de eventos do front
Diminuir acoplamento (processamento por eventos ao invés de
síncrono)
Slide 21
Slide 21 text
Arquitetura: Sistema de Recomendações v3
Front End
App Engine
Scripts
Storage
ALS
Dataproc
recommend
Cloud Function
rexdb
Cloud SQL
Scheduler
Composer
Cache
Memorystore
Inv. Cache
Pub/Sub
Views
Pub/Sub
Slide 22
Slide 22 text
Conclusões
A nuvem permite a construção de um sistema de recomendação
de forma evolutiva.
Utilizando os componentes certos pode ser possível fazê-lo de
forma muito econômica.