Ad Serving at Spotify Scale
A journey of incremental full stack overhaul
Kinshuk Mishra, Director of Engineering kinshuk@spotify.com @_kinshukmishra
Ad Serving at Spotify Scale A journey of incremental full stack - - PowerPoint PPT Presentation
Ad Serving at Spotify Scale A journey of incremental full stack overhaul Kinshuk Mishra, Director of Engineering kinshuk@spotify.com @_kinshukmishra A lucky mistake Expected consequences Sarcastic empathy Some valuable feedback The
A journey of incremental full stack overhaul
Kinshuk Mishra, Director of Engineering kinshuk@spotify.com @_kinshukmishra
Introduction Ad technology stack Architecture Evolution
Introduction Ad technology stack Architecture Evolution
○ Ad delivery (Backend and Web) ○ Multi-platform native ads (Client Platform) ○ Ad performance (ML and Data)
Ad
Introduction Ad technology stack Architecture Evolution
Relevancy Pacing Unique View Sequence Optimization
Client User Profile database Ad Server Campaign Management Portal Billing/ Reporting Ad campaign database Data Collection System
Edge Service Desktop Log Delivery HDFS User Profile
Batch
Basic Ad Server Campaign Management Billing/ Reporting
iOS Edge Service Android Ads SDK Desktop Web Chromecast/ Playstation/ FireTV Ad Aggregation Service Log Delivery GCS User Profile Targeting Service DMP
Stream Batch
Ad Server Decision Delivery Ad Exchanges Campaign Management Optimization Modeling Self-Serve Portal Creative Generation Payments Billing/ Reporting
iOS Edge Service Android Ads SDK Desktop Web Chromecast/ Playstation/ FireTV Ad Aggregation Service Log Delivery GCS User Profile Targeting Service DMP
Stream Batch
Ad Server Decision Delivery Ad Exchanges Campaign Management Optimization Modeling Self-Serve Portal Creative Generation Payments Billing/ Reporting
iOS Edge Service Android Ads SDK Desktop Web Chromecast/ Playstation/ FireTV Ad Aggregation Service Log Delivery GCS User Profile Targeting Service DMP
Stream Batch
Ad Server Decision Delivery Ad Exchanges Campaign Management Optimization Modeling Self-Serve Portal Creative Generation Payments Billing/ Reporting
iOS Edge Service Android Ads SDK Desktop Web Chromecast/ Playstation/ FireTV Ad Aggregation Service Log Delivery GCS User Profile Targeting Service DMP
Stream Batch
Ad Server Decision Delivery Ad Exchanges Campaign Management Optimization Modeling Self-Serve Portal Creative Generation Payments Billing/ Reporting
iOS Edge Service Android Ads SDK Desktop Web Chromecast/ Playstation/ FireTV Ad Aggregation Service Log Delivery GCS User Profile Targeting Service DMP
Stream Batch
Ad Server Decision Delivery Ad Exchanges Campaign Management Optimization Modeling Self-Serve Portal Creative Generation Payments Billing/ Reporting
iOS Edge Service Android Ads SDK Desktop Web Chromecast/ Playstation/ FireTV Ad Aggregation Service Log Delivery GCS User Profile Targeting Service DMP
Stream Batch
Ad Server Decision Delivery Ad Exchanges Campaign Management Optimization Modeling Self-Serve Portal Creative Generation Payments Billing/ Reporting
Introduction Ad technology stack Architecture Evolution
Story 1
Edge Service Router
hash(userid)
Ad server ring with partitions
Ad server instance
Memcache Memcache Memcache Memcache Campaign DB User DB
Desktop
Rendering Ad trigger decisioning Ads Ranking Ads Caching Ad batching & fetch communication
Edge Service Log Delivery HDFS User Profile
Batch
Smart Ad Server Campaign Management Billing/ Reporting Ad Server Proxy (routing) Basic Ad Server
Gradual transition from basic to smart ad serving
Desktop
Rendering Ad trigger decisioning Ads Ranking Ads Caching Ad batching & fetch communication
Proxy Service Log Delivery HDFS User Profile
Batch
Campaign Management Billing/ Reporting Smart Ad Server Desktop
Rendering Ad trigger decisioning Ads Ranking Ads Caching Ad batching & fetch communication
Story 2
Desktop iOS Android Ads SDK Desktop Web Rendering Ad trigger decisioning Ads Ranking Ads Caching Ad batching & fetch communication Ad decisioning Ad fetch
Client context Ad Trigger & Render
Before After
Desktop iOS Android Ads SDK Desktop Web Rendering Ad trigger decisioning Ads Ranking Ads Caching Ad batching & fetch communication Ad decisioning Ad fetch
Client context Ad Trigger & Render
BAD GOOD
iOS Proxy Service Android Ads SDK Desktop Web Chromecast/ Playstation/ FireTV Ad Aggregation Service Log Delivery GCS User Profile Targeting Service DMP
Stream Batch
Ad Server Decision Delivery Ad Exchanges Campaign Management Modeling Self-Serve Service Creative Generation Payments Billing/ Reporting
Story 3
Event Stream Historical ETL1 ETL2 ETL3
UserEntity1(attribute1, attribute2) UserEntity1(attribute1, attribute3) UserEntity1(attribute1, attribute3’)
kinshuk@spotify.com @_kinshukmishra