SlideShare a Scribd company logo
Rounds Analytics Pipeline
Aviv Laufer CTO, Rounds @avivl
Founded 2008
35 person team (⅔ in R&D)
Tel-Aviv based
Raised over $22 million in funding from industry leading
investors such as Sequoia Capital, Samsung Ventures, Rhodium,
Verizon Ventures and many more. Over 25 million users worldwide
Rounds analytics pipeline
Client - Objective-C, Java, C/C++
Server - Python, Go, C++, and bits of Erlang
DB - MySQL (RDS), CouchBase (a few clusters)
Multi Cloud - AWS, GCE, SL, DO
Deployment - Ansible
Monitoring - Sensu, NewRelic, VictorOps
And yes we use Docker…...
Tools of the Trade
We tried to make it work quite a few times, and failed
We kept on trying
We think we got it right this time
ANALYTICS @ROUNDS
DO OR DO NOT. THERE IS NO TRY. - Master Yoda
One monolith app
Data was written to MySql/RDS - row by row
Batch ETL to Vertica
And then came July 2014
GENESIS
Rounds analytics pipeline
Data collection killed our backend app
Slow, failing ETL process
No real time view into events
Preferred users over analytics, we killed the event collection
We were flying blind
CHAOS
Separate ETL process from main app
Clients reports (a request for each event) to a different microservice
First very naive version written in Go - it scales!
Data is written to an Elasticsearch cluster.
ETL from ES to Vertica
EXODUS
Frontends - Receiving user analytics and perform sanity checks
Google Pub/Sub - Store events for future processing
Workers - Pull the events from Pub/Sub and stream to Google BigQuery and ES
...And Then There Were Three...
Clients send gzipped, batched
Frontend does sanity checks - Validation, versioning, etc.
Frontend replies fast (202 Accepted) and closes the connection in order
to save on mobile socket life
Geo load-balanced
Pushes analytics into Pub/Sub for future processing, mutation
Fan-In model
ANALYTICS - FRONTEND
Pulls analytics from Pub/Sub
Mutate/Enrich data if necessary
Inserts to various DBs, according to usage - Monitoring, BI, Warehousing, etc.
Separation of concerns - Worker cluster per target DB
Fan-out model
Renee Finch, golang.org/doc/gopher/pencil/ANALYTICS - WORKER
Golang, abstraction package
Receives rows, streams to BigQuery (as opposed to load jobs)
Sync (foreground insert) or Async (background insert)
Pros: Instant data availability, no job delay, fast
Cons: Harder handling of bad analytics, Google’s HTTP 500s (requires retry)
Open source, PRs merrily encouraged!
Collecting User Data and Usage - Blog Post - http://bit.ly/CollectingDataRounds
github.com/rounds/go-bqstreamerSTREAMING TO BigQuery
Frontends deployed in several locations in GCE (We Geo load balance them)
Workers are in GCE (Europe West)
ES cluster is in GCE (Europe West)
ACROSS THE UNIVERSE
We started using Elasticsearch for monitoring about a year before elastic.co relaize that
Every new feature received a monitoring dashboard
Debugging
Monitoring (custom sensu checks)
Data is kept for 30 to 90 days
Ad-hoc reporting using Kibana
ELASTICSEARCH
Rounds analytics pipeline
Store data from the beginning till the end of time
Standard(ish) SQL
Very fast
No DBA is needed
Business reports (SiSense) - “Kibana” for BigQuery
BigQuery
NEW ISSUES
Permissive vs hard scheme for events - allow clients ease of use while keeping the scheme
strict for ease of BI
Clients make mistakes (Arabic locale dates) - elasticsearch allows while BQ doesn’t
Things we’re integrating as solutions
Every event is a class - compile time validation generated from RAML
Wrote a library for event reporting server side
ANY QUESTIONS
DO YOU HAVE?

More Related Content

PPTX
Rounds tips & tricks
Aviv Laufer
 
ODP
BigQuery at AppsFlyer - past, present and future
Nir Rubinstein
 
PDF
StackEngine Demo - Docker Austin
Boyd Hemphill
 
PPTX
The Future of Data Engineering - 2019 InfoQ QConSF
Chris Riccomini
 
PDF
Introducing the Hub for Data Orchestration
Alluxio, Inc.
 
PPTX
The evolution of the big data platform @ Netflix (OSCON 2015)
Eva Tse
 
PDF
Scaling monitoring with Datadog
alexismidon
 
PPTX
ApacheKylin_HBaseCon2015
Luke Han
 
Rounds tips & tricks
Aviv Laufer
 
BigQuery at AppsFlyer - past, present and future
Nir Rubinstein
 
StackEngine Demo - Docker Austin
Boyd Hemphill
 
The Future of Data Engineering - 2019 InfoQ QConSF
Chris Riccomini
 
Introducing the Hub for Data Orchestration
Alluxio, Inc.
 
The evolution of the big data platform @ Netflix (OSCON 2015)
Eva Tse
 
Scaling monitoring with Datadog
alexismidon
 
ApacheKylin_HBaseCon2015
Luke Han
 

What's hot (20)

PDF
Big problems Big Data, simple solutions
Claudio Pontili
 
PPTX
Building a system for machine and event-oriented data with Rocana
Treasure Data, Inc.
 
PPTX
The Fermilab HEPCloud Facility
Claudio Pontili
 
PPTX
Zero Downtime App Deployment using Hadoop
DataWorks Summit/Hadoop Summit
 
PPTX
Building an intelligent big data application in 30 minutes
Claudiu Barbura
 
PPTX
Netflix Big Data Paris 2017
Jason Flittner
 
PDF
Build Real-Time Applications with Databricks Streaming
Databricks
 
PPTX
IPC Global Big Data To Decision Solution Overview
pzybrick
 
PDF
Serverless Event Driven Containers with KEDA
Nilesh Gule
 
PDF
Azure containers fundamentals
Nilesh Gule
 
PPTX
Watching Pigs Fly with the Netflix Hadoop Toolkit (Hadoop Summit 2013)
Jeff Magnusson
 
PDF
Big data for dot net Devs with Spark
Nilesh Gule
 
PPTX
Rapid Data Analytics @ Netflix
Data Con LA
 
PDF
Google Cloud Data Platform - Why Google for Data Analysis?
Andreas Raible
 
PPTX
CSharp
Vera Ekimenko
 
PDF
Building Notebook-based AI Pipelines with Elyra and Kubeflow
Databricks
 
PDF
How to teach your data scientist to leverage an analytics cluster with Presto...
Alluxio, Inc.
 
PDF
Elastic Stack roadmap deep dive
Elasticsearch
 
PPTX
Migrating Big Data Workloads to the Cloud
Robert Sanders
 
PPTX
PowerStream Demo
SingleStore
 
Big problems Big Data, simple solutions
Claudio Pontili
 
Building a system for machine and event-oriented data with Rocana
Treasure Data, Inc.
 
The Fermilab HEPCloud Facility
Claudio Pontili
 
Zero Downtime App Deployment using Hadoop
DataWorks Summit/Hadoop Summit
 
Building an intelligent big data application in 30 minutes
Claudiu Barbura
 
Netflix Big Data Paris 2017
Jason Flittner
 
Build Real-Time Applications with Databricks Streaming
Databricks
 
IPC Global Big Data To Decision Solution Overview
pzybrick
 
Serverless Event Driven Containers with KEDA
Nilesh Gule
 
Azure containers fundamentals
Nilesh Gule
 
Watching Pigs Fly with the Netflix Hadoop Toolkit (Hadoop Summit 2013)
Jeff Magnusson
 
Big data for dot net Devs with Spark
Nilesh Gule
 
Rapid Data Analytics @ Netflix
Data Con LA
 
Google Cloud Data Platform - Why Google for Data Analysis?
Andreas Raible
 
CSharp
Vera Ekimenko
 
Building Notebook-based AI Pipelines with Elyra and Kubeflow
Databricks
 
How to teach your data scientist to leverage an analytics cluster with Presto...
Alluxio, Inc.
 
Elastic Stack roadmap deep dive
Elasticsearch
 
Migrating Big Data Workloads to the Cloud
Robert Sanders
 
PowerStream Demo
SingleStore
 
Ad

Similar to Rounds analytics pipeline (20)

PPTX
Evolution of Monitoring and Prometheus (Dublin 2018)
Brian Brazil
 
PDF
Dirty Data? Clean it up! - Rocky Mountain DataCon 2016
Dan Lynn
 
PDF
Viewbix tracking journey
idan_by
 
PPTX
Serverless architectures: APIs, Serverless Functions, Microservices - How to ...
Bala Subra
 
PPTX
How we evolved data pipeline at Celtra and what we learned along the way
Grega Kespret
 
PPTX
Observability - the good, the bad, and the ugly
Aleksandr Tavgen
 
PDF
CombinaciĂłn de logs, mĂŠtricas y seguimiento para una visibilidad centralizada
Elasticsearch
 
PDF
Big Data at a Gaming Company: Spil Games
Rob Winters
 
PPTX
Big Data Ecosystem
Ivo Vachkov
 
PDF
Reactive Integrations - Caveats and bumps in the road explained
Markus Eisele
 
PDF
Augmenting Big Data Analytics with Nirvana
Igor Sfiligoi
 
PDF
Dirty data? Clean it up! - Datapalooza Denver 2016
Dan Lynn
 
PDF
Monitoring Big Data Systems - "The Simple Way"
Demi Ben-Ari
 
PPTX
Observability in real time at scale
Balvinder Hira
 
PDF
DevOps for DataScience
Stepan Pushkarev
 
PDF
Streaming Analytics with Spark, Kafka, Cassandra and Akka
Helena Edelson
 
PPTX
Observability – the good, the bad, and the ugly
Timetrix
 
PDF
CombinaciĂłn de logs, mĂŠtricas y seguimiento para una visibilidad centralizada
Elasticsearch
 
PDF
Making operations visible - Nick Gallbreath
Devopsdays
 
PDF
Making operations visible - devopsdays tokyo 2013
Nick Galbreath
 
Evolution of Monitoring and Prometheus (Dublin 2018)
Brian Brazil
 
Dirty Data? Clean it up! - Rocky Mountain DataCon 2016
Dan Lynn
 
Viewbix tracking journey
idan_by
 
Serverless architectures: APIs, Serverless Functions, Microservices - How to ...
Bala Subra
 
How we evolved data pipeline at Celtra and what we learned along the way
Grega Kespret
 
Observability - the good, the bad, and the ugly
Aleksandr Tavgen
 
CombinaciĂłn de logs, mĂŠtricas y seguimiento para una visibilidad centralizada
Elasticsearch
 
Big Data at a Gaming Company: Spil Games
Rob Winters
 
Big Data Ecosystem
Ivo Vachkov
 
Reactive Integrations - Caveats and bumps in the road explained
Markus Eisele
 
Augmenting Big Data Analytics with Nirvana
Igor Sfiligoi
 
Dirty data? Clean it up! - Datapalooza Denver 2016
Dan Lynn
 
Monitoring Big Data Systems - "The Simple Way"
Demi Ben-Ari
 
Observability in real time at scale
Balvinder Hira
 
DevOps for DataScience
Stepan Pushkarev
 
Streaming Analytics with Spark, Kafka, Cassandra and Akka
Helena Edelson
 
Observability – the good, the bad, and the ugly
Timetrix
 
CombinaciĂłn de logs, mĂŠtricas y seguimiento para una visibilidad centralizada
Elasticsearch
 
Making operations visible - Nick Gallbreath
Devopsdays
 
Making operations visible - devopsdays tokyo 2013
Nick Galbreath
 
Ad

Recently uploaded (20)

PPTX
OA presentation.pptx OA presentation.pptx
pateldhruv002338
 
PDF
AI Unleashed - Shaping the Future -Starting Today - AIOUG Yatra 2025 - For Co...
Sandesh Rao
 
PDF
Responsible AI and AI Ethics - By Sylvester Ebhonu
Sylvester Ebhonu
 
PPTX
The Future of AI & Machine Learning.pptx
pritsen4700
 
PDF
How ETL Control Logic Keeps Your Pipelines Safe and Reliable.pdf
Stryv Solutions Pvt. Ltd.
 
PDF
The Future of Artificial Intelligence (AI)
Mukul
 
PDF
NewMind AI Weekly Chronicles - July'25 - Week IV
NewMind AI
 
PPTX
AI in Daily Life: How Artificial Intelligence Helps Us Every Day
vanshrpatil7
 
PDF
Oracle AI Vector Search- Getting Started and what's new in 2025- AIOUG Yatra ...
Sandesh Rao
 
PPTX
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
PDF
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
 
PDF
Doc9.....................................
SofiaCollazos
 
PPTX
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 
PDF
Software Development Methodologies in 2025
KodekX
 
PDF
OFFOFFBOX™ – A New Era for African Film | Startup Presentation
ambaicciwalkerbrian
 
PDF
Using Anchore and DefectDojo to Stand Up Your DevSecOps Function
Anchore
 
PDF
MASTERDECK GRAPHSUMMIT SYDNEY (Public).pdf
Neo4j
 
PDF
AI-Cloud-Business-Management-Platforms-The-Key-to-Efficiency-Growth.pdf
Artjoker Software Development Company
 
PDF
Security features in Dell, HP, and Lenovo PC systems: A research-based compar...
Principled Technologies
 
PPTX
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
OA presentation.pptx OA presentation.pptx
pateldhruv002338
 
AI Unleashed - Shaping the Future -Starting Today - AIOUG Yatra 2025 - For Co...
Sandesh Rao
 
Responsible AI and AI Ethics - By Sylvester Ebhonu
Sylvester Ebhonu
 
The Future of AI & Machine Learning.pptx
pritsen4700
 
How ETL Control Logic Keeps Your Pipelines Safe and Reliable.pdf
Stryv Solutions Pvt. Ltd.
 
The Future of Artificial Intelligence (AI)
Mukul
 
NewMind AI Weekly Chronicles - July'25 - Week IV
NewMind AI
 
AI in Daily Life: How Artificial Intelligence Helps Us Every Day
vanshrpatil7
 
Oracle AI Vector Search- Getting Started and what's new in 2025- AIOUG Yatra ...
Sandesh Rao
 
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
 
Doc9.....................................
SofiaCollazos
 
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 
Software Development Methodologies in 2025
KodekX
 
OFFOFFBOX™ – A New Era for African Film | Startup Presentation
ambaicciwalkerbrian
 
Using Anchore and DefectDojo to Stand Up Your DevSecOps Function
Anchore
 
MASTERDECK GRAPHSUMMIT SYDNEY (Public).pdf
Neo4j
 
AI-Cloud-Business-Management-Platforms-The-Key-to-Efficiency-Growth.pdf
Artjoker Software Development Company
 
Security features in Dell, HP, and Lenovo PC systems: A research-based compar...
Principled Technologies
 
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 

Rounds analytics pipeline

  • 1. Rounds Analytics Pipeline Aviv Laufer CTO, Rounds @avivl
  • 2. Founded 2008 35 person team (⅔ in R&D) Tel-Aviv based Raised over $22 million in funding from industry leading investors such as Sequoia Capital, Samsung Ventures, Rhodium, Verizon Ventures and many more. Over 25 million users worldwide
  • 4. Client - Objective-C, Java, C/C++ Server - Python, Go, C++, and bits of Erlang DB - MySQL (RDS), CouchBase (a few clusters) Multi Cloud - AWS, GCE, SL, DO Deployment - Ansible Monitoring - Sensu, NewRelic, VictorOps And yes we use Docker…... Tools of the Trade
  • 5. We tried to make it work quite a few times, and failed We kept on trying We think we got it right this time ANALYTICS @ROUNDS DO OR DO NOT. THERE IS NO TRY. - Master Yoda
  • 6. One monolith app Data was written to MySql/RDS - row by row Batch ETL to Vertica And then came July 2014 GENESIS
  • 8. Data collection killed our backend app Slow, failing ETL process No real time view into events Preferred users over analytics, we killed the event collection We were flying blind CHAOS
  • 9. Separate ETL process from main app Clients reports (a request for each event) to a different microservice First very naive version written in Go - it scales! Data is written to an Elasticsearch cluster. ETL from ES to Vertica EXODUS
  • 10. Frontends - Receiving user analytics and perform sanity checks Google Pub/Sub - Store events for future processing Workers - Pull the events from Pub/Sub and stream to Google BigQuery and ES ...And Then There Were Three...
  • 11. Clients send gzipped, batched Frontend does sanity checks - Validation, versioning, etc. Frontend replies fast (202 Accepted) and closes the connection in order to save on mobile socket life Geo load-balanced Pushes analytics into Pub/Sub for future processing, mutation Fan-In model ANALYTICS - FRONTEND
  • 12. Pulls analytics from Pub/Sub Mutate/Enrich data if necessary Inserts to various DBs, according to usage - Monitoring, BI, Warehousing, etc. Separation of concerns - Worker cluster per target DB Fan-out model Renee Finch, golang.org/doc/gopher/pencil/ANALYTICS - WORKER
  • 13. Golang, abstraction package Receives rows, streams to BigQuery (as opposed to load jobs) Sync (foreground insert) or Async (background insert) Pros: Instant data availability, no job delay, fast Cons: Harder handling of bad analytics, Google’s HTTP 500s (requires retry) Open source, PRs merrily encouraged! Collecting User Data and Usage - Blog Post - http://bit.ly/CollectingDataRounds github.com/rounds/go-bqstreamerSTREAMING TO BigQuery
  • 14. Frontends deployed in several locations in GCE (We Geo load balance them) Workers are in GCE (Europe West) ES cluster is in GCE (Europe West) ACROSS THE UNIVERSE
  • 15. We started using Elasticsearch for monitoring about a year before elastic.co relaize that Every new feature received a monitoring dashboard Debugging Monitoring (custom sensu checks) Data is kept for 30 to 90 days Ad-hoc reporting using Kibana ELASTICSEARCH
  • 17. Store data from the beginning till the end of time Standard(ish) SQL Very fast No DBA is needed Business reports (SiSense) - “Kibana” for BigQuery BigQuery
  • 18. NEW ISSUES Permissive vs hard scheme for events - allow clients ease of use while keeping the scheme strict for ease of BI Clients make mistakes (Arabic locale dates) - elasticsearch allows while BQ doesn’t Things we’re integrating as solutions Every event is a class - compile time validation generated from RAML Wrote a library for event reporting server side