SlideShare a Scribd company logo
Our journey
into
scalable
Player-
engagement
platform
Idan Fridman
Idan Fridman
About me
● idan.frid@gmail.com / i.fridman@draftkings.com
● https://www.linkedin.com/in/idanfridman/
● www.idanfridman.com - Blog
Our Story
| 4
Who are we?
Blueribbon (acquired by draftkings DraftKings (NASDAQ: DKNG))
● Player engagement platform that leverage marketing tools to achieve better user engagement
Draftkings
● The biggest Daily Fantasy Sport company in the U.S
● Offer sports entertainment experience across 15 professional sports. In 8 countries
● Focus on American sports fan
| 5
Operator pains
● Diversity - All operators propose the same solution
● Loyalty - player loyalty and stickiness
● Engagement - Bonuses not making real impact.
| 6
How we solve it?
● Creating new marketing tool(s) that create better engagement platform
● The tools should not interfere the game itself
● Easy to integrate
Jackpot as a service
| 7
What is Jackpot?
1. Additional gaming tool similar to lottery but with different math algorithms
2. Placed live on top of the game where player (or multiple players) can see it
3. Accumulating until someone win and reseeding
| 8
Why Jackpots?
Attracting
● Players can win big prizes
● Winning amounts range from small prizes to very big ones
(Everyone has heard stories about people lucking out a mega
jackpot)
Additional Funnel to win
● Jackpots bring to players new ways to win prizes
● Additional “attraction” to the game-play itself
Play
Win
Marketing
● One of the strongest marketing tools for engagement and
retention players
Engage
| 9
How we leverage Jackpots
● Generic tool
● On top of all games and support diverse verticals
● High potential as a social tool for better player engagement
● Completely SaaS - easy integration (API’s, SDK, Scale)
Challenges
| 11
Our Challenges
Low Latency
• Fast responses
Scale
• Concurrency
• Availability
Persistency
• No data loss
• Transaction must be
completed
Atomicity
• All or Nothing (Distributed)
| 12
Platform Team mission
- Microservices - High
complexity and different data
sources
- Workflow - We have
sequence of events per
transaction that must occur
linearly
- Asynchronous
communication - Using
queues to enable persistency
and atomicity per one
component to another
Queuing
Consideration
s
| 14
Message Queue vs Streaming Broker
Characteristic Message Queue Streaming Broker
Granularity ● Queue delivers single message and ack is
per message
● Acknowledge granularity is per group of message
● Manual commit is for braves only
Retry management ● Retry is managed out of the box per
message
● Able to define number of attempts
● Can define DLQ
● No manage retry
Message re-consumed ability ● Once Acked, Queue message is deleted ● All messages are persisted and can be re-consumed
Horizontal scalability ● Not out of the box ● Scaling is out of the box
Popular Vendors ● RabbitMQ, SQS, ActiveMQ ● Kafka, Kinesis, Pulsar
Hybrid Pulsar / Infinitic
| 15
Kafka/Kinesis
• On Kineses - cant get multiple
consumers topics out of the box
with the SDK
RabbitMQ/ActiveMQ
• High maintenance on big clusters
• Performances implications when
enabling backups
SQS/SNS
• SaaS
• Not for low latency
• Client SDK
• High costs
Nice to know (By provider impl)
| 16
Decisions
Which road shall we take to meet our challenges
1. Mini-teams to benchmark different solutions
2. POC
3. Conclusions
| 17
The missing part(s)
Granularit
y
Work on group of
messages
Not available
Retry
manage
ment
Ability to stop
(limited by consumer)
Back
pressure
Kafka looks like the the only remaining choice for our problem but the default solution is not
sufficient for the overall requirements
Ways to solve with Kafka
| 19
How to solve with Kafka
Manage Retry:
Solution:
● Create additional Queue(s) for retry per original topic
● Consumers will re-dispatch to retry queue
Drawbacks:
● Duplicating topics can introduce additional load - adding costs
● Not able to backoff with Kafka
● You can't really create delay between one retry to another
● Not able to separate the retry mechanism from the actual service
Externalize
queue state
| 21
Extern Queue message state
To keep continue Kafka with it’s default configuration we need to think on another way to maintain the state outside
We need to choose data-source that can apply the following:
1. It has to be reliable
2. It has to be super-fast
3. It should be simple as a key-value store
4. Horizontal scale
Guess who?:)
| 22
Redis as queue state manager
● Fast write-> Redis has the ability to store and query values within ms’s which is required.
● Memory -> Leverage Redis zset(sortedSet) to store events in high efficiency (avoiding key’s
memory)
● Fast Query -> Using Redis sorted sets we can fast-query “old” entries.
Retry Set Tier 1
Score(TS) Event
213834863555 {...}
213834863545 {...}
Using zset we can “query”
values by score
E.g: get all records that are
between Score X to Score Y
| 23
Poll
messages
from kafka
Kafka
The crime scene (by steps)
Insert each
message to
zset
Redi
s
processing
logic work
Servi
ce
zrem from
zset
Redi
s
1. Retrieve “old” entries
2. Clone message &
Modify metadata
(counter, ts, etc)
3. Re-dispatch to same
topic
Adding
Messages to
local queue
Queu
e
Retrieve
from queue
(Diff thread
pool)
Servi
ce
Step 1: Poll messages from kafka to dedicated pool
Step 2: Using Auto-commit and insert each message to redis.
Step 3: Add messages to local queue(If full - backoff)
Step 4: Retrieve messages from local queue
Step 5: Process internal logic
Step 6: On success delete from redis
Step 7: Poll for old messages and apply retry logic
Step 1 Step 2 Step 3 Step 5
Step 4 Step 6
Step 7
Outcomes
| 25
Outcomes
● Retry -> We get retry out of the box as each message being monitored and cloned into new
one without the overhead of maintaining additional topics
● DLQ -> Can track messages counter and forward into DLQ once exhausted
● Backoff - Messages wont redispatch immediately
● We chose technologies we were already familiar with
| 26
Downsides
● Abstract work that has to be implemented and tested roughly
● Yet another datasource
● Not polyglot unless porting
| 27
“SDK” the logic
● Apply this logic on a common-level as SDK or shared-lib
● Make the data abstract as possible to allow generic messaging metadata (counter, source,
tracking, id’s)
● Testable and abstract for future maintenance
| 28
Moving forward
● Extend into custom back-pressure by adding more zset(s) handling
● Scale out redis to route zsets by event key(s)
THANK YOU
i.fridman@draftking
s.com
For any questions or to
join our journey :)
careers.draftkings.com

More Related Content

PPT
Chapter 12 transactions and concurrency control
PPTX
Pub/Sub Messaging
PDF
Grokking Techtalk #39: Gossip protocol and applications
PDF
WSO2 Message Broker - Product Overview
PDF
PHP At 5000 Requests Per Second: Hootsuite’s Scaling Story
PPTX
Unit iv -Transactions
PDF
Agreement Protocols, distributed File Systems, Distributed Shared Memory
PPTX
Distributed Transactions(flat and nested) and Atomic Commit Protocols
Chapter 12 transactions and concurrency control
Pub/Sub Messaging
Grokking Techtalk #39: Gossip protocol and applications
WSO2 Message Broker - Product Overview
PHP At 5000 Requests Per Second: Hootsuite’s Scaling Story
Unit iv -Transactions
Agreement Protocols, distributed File Systems, Distributed Shared Memory
Distributed Transactions(flat and nested) and Atomic Commit Protocols

What's hot (15)

PPTX
Unit v-Distributed Transaction and Replication
PPT
Chapter 13
PPTX
Hhm 3479 mq clustering and shared queues for high availability
PPTX
Optimistic concurrency control in Distributed Systems
PDF
How to make data available for analytics ASAP
PDF
InterConnect 2016: What's new in IBM MQ
PDF
IBM MQ - High Availability and Disaster Recovery
PPTX
High-Speed Reactive Microservices - trials and tribulations
PDF
Pileus
PPT
Distributed & Highly Available server applications in Java and Scala
PDF
Using all of the high availability options in MariaDB
PPTX
Enterprise messaging with jms
PDF
IBM MQ: Using Publish/Subscribe in an MQ Network
PPT
IBM WebSphere MQ: Managing Workloads, Scaling and Availability with MQ Clusters
Unit v-Distributed Transaction and Replication
Chapter 13
Hhm 3479 mq clustering and shared queues for high availability
Optimistic concurrency control in Distributed Systems
How to make data available for analytics ASAP
InterConnect 2016: What's new in IBM MQ
IBM MQ - High Availability and Disaster Recovery
High-Speed Reactive Microservices - trials and tribulations
Pileus
Distributed & Highly Available server applications in Java and Scala
Using all of the high availability options in MariaDB
Enterprise messaging with jms
IBM MQ: Using Publish/Subscribe in an MQ Network
IBM WebSphere MQ: Managing Workloads, Scaling and Availability with MQ Clusters
Ad

Similar to Our journey into scalable player engagement platform (20)

PDF
Technical Webinar: Patterns for Integrating Your Salesforce App with Off-Plat...
PDF
Introduction to Akka Serverless
PPTX
Microservices for performance - GOTO Chicago 2016
PDF
MuleSoft Surat Virtual Meetup#33 - Unleash the power of Anypoint MQ and DLQ
PDF
Event driven architectures with Kinesis
PDF
Refactoring Applications for the XK7 and Future Hybrid Architectures
PDF
Kafka Summit NYC 2017 - Scalable Real-Time Complex Event Processing @ Uber
PDF
Server fleet management using Camunda by Akhil Ahuja
PDF
Lessons learned from operating small scale clusters.pdf
PDF
Lessons learned from operating small scale clusters.pdf
PDF
From prototype to production - The journey of re-designing SmartUp.io
PDF
High-Speed Reactive Microservices
ODP
Manging scalability of distributed system
PDF
Chat application through client server management system project.pdf
PDF
Apache Kafka's Common Pitfalls & Intricacies: A Customer Support Perspective
PDF
SVCC-2014
PPT
Megastore: Providing scalable and highly available storage
PPTX
Strata+Hadoop 2017 San Jose: Lessons from a year of supporting Apache Kafka
PDF
Apache Kafka Architecture & Fundamentals Explained
PDF
Apache KAfka
Technical Webinar: Patterns for Integrating Your Salesforce App with Off-Plat...
Introduction to Akka Serverless
Microservices for performance - GOTO Chicago 2016
MuleSoft Surat Virtual Meetup#33 - Unleash the power of Anypoint MQ and DLQ
Event driven architectures with Kinesis
Refactoring Applications for the XK7 and Future Hybrid Architectures
Kafka Summit NYC 2017 - Scalable Real-Time Complex Event Processing @ Uber
Server fleet management using Camunda by Akhil Ahuja
Lessons learned from operating small scale clusters.pdf
Lessons learned from operating small scale clusters.pdf
From prototype to production - The journey of re-designing SmartUp.io
High-Speed Reactive Microservices
Manging scalability of distributed system
Chat application through client server management system project.pdf
Apache Kafka's Common Pitfalls & Intricacies: A Customer Support Perspective
SVCC-2014
Megastore: Providing scalable and highly available storage
Strata+Hadoop 2017 San Jose: Lessons from a year of supporting Apache Kafka
Apache Kafka Architecture & Fundamentals Explained
Apache KAfka
Ad

Recently uploaded (20)

PDF
wealthsignaloriginal-com-DS-text-... (1).pdf
PDF
How AI/LLM recommend to you ? GDG meetup 16 Aug by Fariman Guliev
PDF
AutoCAD Professional Crack 2025 With License Key
PDF
Cost to Outsource Software Development in 2025
PPTX
Weekly report ppt - harsh dattuprasad patel.pptx
PPTX
Reimagine Home Health with the Power of Agentic AI​
PDF
Tally Prime Crack Download New Version 5.1 [2025] (License Key Free
PDF
Digital Systems & Binary Numbers (comprehensive )
PPTX
WiFi Honeypot Detecscfddssdffsedfseztor.pptx
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PDF
Product Update: Alluxio AI 3.7 Now with Sub-Millisecond Latency
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PDF
AI-Powered Threat Modeling: The Future of Cybersecurity by Arun Kumar Elengov...
PPTX
Monitoring Stack: Grafana, Loki & Promtail
PDF
17 Powerful Integrations Your Next-Gen MLM Software Needs
PDF
iTop VPN 6.5.0 Crack + License Key 2025 (Premium Version)
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PDF
How to Make Money in the Metaverse_ Top Strategies for Beginners.pdf
PDF
Complete Guide to Website Development in Malaysia for SMEs
wealthsignaloriginal-com-DS-text-... (1).pdf
How AI/LLM recommend to you ? GDG meetup 16 Aug by Fariman Guliev
AutoCAD Professional Crack 2025 With License Key
Cost to Outsource Software Development in 2025
Weekly report ppt - harsh dattuprasad patel.pptx
Reimagine Home Health with the Power of Agentic AI​
Tally Prime Crack Download New Version 5.1 [2025] (License Key Free
Digital Systems & Binary Numbers (comprehensive )
WiFi Honeypot Detecscfddssdffsedfseztor.pptx
Design an Analysis of Algorithms I-SECS-1021-03
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
Product Update: Alluxio AI 3.7 Now with Sub-Millisecond Latency
Internet Downloader Manager (IDM) Crack 6.42 Build 41
AI-Powered Threat Modeling: The Future of Cybersecurity by Arun Kumar Elengov...
Monitoring Stack: Grafana, Loki & Promtail
17 Powerful Integrations Your Next-Gen MLM Software Needs
iTop VPN 6.5.0 Crack + License Key 2025 (Premium Version)
Adobe Illustrator 28.6 Crack My Vision of Vector Design
How to Make Money in the Metaverse_ Top Strategies for Beginners.pdf
Complete Guide to Website Development in Malaysia for SMEs

Our journey into scalable player engagement platform

  • 2. Idan Fridman About me ● idan.frid@gmail.com / i.fridman@draftkings.com ● https://www.linkedin.com/in/idanfridman/ ● www.idanfridman.com - Blog
  • 4. | 4 Who are we? Blueribbon (acquired by draftkings DraftKings (NASDAQ: DKNG)) ● Player engagement platform that leverage marketing tools to achieve better user engagement Draftkings ● The biggest Daily Fantasy Sport company in the U.S ● Offer sports entertainment experience across 15 professional sports. In 8 countries ● Focus on American sports fan
  • 5. | 5 Operator pains ● Diversity - All operators propose the same solution ● Loyalty - player loyalty and stickiness ● Engagement - Bonuses not making real impact.
  • 6. | 6 How we solve it? ● Creating new marketing tool(s) that create better engagement platform ● The tools should not interfere the game itself ● Easy to integrate Jackpot as a service
  • 7. | 7 What is Jackpot? 1. Additional gaming tool similar to lottery but with different math algorithms 2. Placed live on top of the game where player (or multiple players) can see it 3. Accumulating until someone win and reseeding
  • 8. | 8 Why Jackpots? Attracting ● Players can win big prizes ● Winning amounts range from small prizes to very big ones (Everyone has heard stories about people lucking out a mega jackpot) Additional Funnel to win ● Jackpots bring to players new ways to win prizes ● Additional “attraction” to the game-play itself Play Win Marketing ● One of the strongest marketing tools for engagement and retention players Engage
  • 9. | 9 How we leverage Jackpots ● Generic tool ● On top of all games and support diverse verticals ● High potential as a social tool for better player engagement ● Completely SaaS - easy integration (API’s, SDK, Scale)
  • 11. | 11 Our Challenges Low Latency • Fast responses Scale • Concurrency • Availability Persistency • No data loss • Transaction must be completed Atomicity • All or Nothing (Distributed)
  • 12. | 12 Platform Team mission - Microservices - High complexity and different data sources - Workflow - We have sequence of events per transaction that must occur linearly - Asynchronous communication - Using queues to enable persistency and atomicity per one component to another
  • 14. | 14 Message Queue vs Streaming Broker Characteristic Message Queue Streaming Broker Granularity ● Queue delivers single message and ack is per message ● Acknowledge granularity is per group of message ● Manual commit is for braves only Retry management ● Retry is managed out of the box per message ● Able to define number of attempts ● Can define DLQ ● No manage retry Message re-consumed ability ● Once Acked, Queue message is deleted ● All messages are persisted and can be re-consumed Horizontal scalability ● Not out of the box ● Scaling is out of the box Popular Vendors ● RabbitMQ, SQS, ActiveMQ ● Kafka, Kinesis, Pulsar Hybrid Pulsar / Infinitic
  • 15. | 15 Kafka/Kinesis • On Kineses - cant get multiple consumers topics out of the box with the SDK RabbitMQ/ActiveMQ • High maintenance on big clusters • Performances implications when enabling backups SQS/SNS • SaaS • Not for low latency • Client SDK • High costs Nice to know (By provider impl)
  • 16. | 16 Decisions Which road shall we take to meet our challenges 1. Mini-teams to benchmark different solutions 2. POC 3. Conclusions
  • 17. | 17 The missing part(s) Granularit y Work on group of messages Not available Retry manage ment Ability to stop (limited by consumer) Back pressure Kafka looks like the the only remaining choice for our problem but the default solution is not sufficient for the overall requirements
  • 18. Ways to solve with Kafka
  • 19. | 19 How to solve with Kafka Manage Retry: Solution: ● Create additional Queue(s) for retry per original topic ● Consumers will re-dispatch to retry queue Drawbacks: ● Duplicating topics can introduce additional load - adding costs ● Not able to backoff with Kafka ● You can't really create delay between one retry to another ● Not able to separate the retry mechanism from the actual service
  • 21. | 21 Extern Queue message state To keep continue Kafka with it’s default configuration we need to think on another way to maintain the state outside We need to choose data-source that can apply the following: 1. It has to be reliable 2. It has to be super-fast 3. It should be simple as a key-value store 4. Horizontal scale Guess who?:)
  • 22. | 22 Redis as queue state manager ● Fast write-> Redis has the ability to store and query values within ms’s which is required. ● Memory -> Leverage Redis zset(sortedSet) to store events in high efficiency (avoiding key’s memory) ● Fast Query -> Using Redis sorted sets we can fast-query “old” entries. Retry Set Tier 1 Score(TS) Event 213834863555 {...} 213834863545 {...} Using zset we can “query” values by score E.g: get all records that are between Score X to Score Y
  • 23. | 23 Poll messages from kafka Kafka The crime scene (by steps) Insert each message to zset Redi s processing logic work Servi ce zrem from zset Redi s 1. Retrieve “old” entries 2. Clone message & Modify metadata (counter, ts, etc) 3. Re-dispatch to same topic Adding Messages to local queue Queu e Retrieve from queue (Diff thread pool) Servi ce Step 1: Poll messages from kafka to dedicated pool Step 2: Using Auto-commit and insert each message to redis. Step 3: Add messages to local queue(If full - backoff) Step 4: Retrieve messages from local queue Step 5: Process internal logic Step 6: On success delete from redis Step 7: Poll for old messages and apply retry logic Step 1 Step 2 Step 3 Step 5 Step 4 Step 6 Step 7
  • 25. | 25 Outcomes ● Retry -> We get retry out of the box as each message being monitored and cloned into new one without the overhead of maintaining additional topics ● DLQ -> Can track messages counter and forward into DLQ once exhausted ● Backoff - Messages wont redispatch immediately ● We chose technologies we were already familiar with
  • 26. | 26 Downsides ● Abstract work that has to be implemented and tested roughly ● Yet another datasource ● Not polyglot unless porting
  • 27. | 27 “SDK” the logic ● Apply this logic on a common-level as SDK or shared-lib ● Make the data abstract as possible to allow generic messaging metadata (counter, source, tracking, id’s) ● Testable and abstract for future maintenance
  • 28. | 28 Moving forward ● Extend into custom back-pressure by adding more zset(s) handling ● Scale out redis to route zsets by event key(s)
  • 29. THANK YOU i.fridman@draftking s.com For any questions or to join our journey :) careers.draftkings.com