SlideShare a Scribd company logo
DEMONWARE 
Deploying Cassandra for 
Call of Duty 
#CassandraSummit
Tim Czerniak 
Software Engineer 
DemonWare 
Seán O Sullivan 
Operations Engineer 
DemonWare
DEMON-WHO? 
DemonWare is a subsidiary of 
Activision-Blizzard 
We write, deploy and maintain 
client and server applications 
for Activision and Blizzard games
Cassandra Summit 2014: Deploying Cassandra for Call of Duty
Cassandra Summit 2014: Deploying Cassandra for Call of Duty
SERVICES 
• Matchmaking 
• Leaderboards 
• Chat 
• File Storage 
• Leagues 
• Social Network 
Integration 
• etc…
TECHNOLOGIES 
Client 
C++ HTTP 
Server 
Python Erlang 
MySQL CentOS 
Puppet
OUR UNUSUAL USE CASE 
Release 
First weekend 
Christmas 
Peak
“By failing to prepare, 
you are preparing to fail.” 
– Benjamin Franklin
OUR PREDICAMENT 
Needed to share 
data cross-DC… 
…but MySQL isn’t 
so good at that.
SERVICES 
• Progress store 
• High write, low read. 
• File size ~4KB 
• Persistent 
• Presence 
• High write, high read 
• Data size minimal 
• Transient 
• Messaging 
• Low write, low read 
• Transient
REQUIREMENTS 
• Cross DC 
• Ease of consolidation and expansion 
• Manageability for the operations teams 
• Throughput 
• Storage: 1,500,000 reqs/min 
• Presence: 250,000 reqs/min 
• Messaging: 850,000 reqs/min
EVALUATION 
• Shortlisted suitable 
options 
• Riak 
• Cassandra 
• Re-wrote our 
application backend, 
twice
LOAD TESTING 
• Two clusters 
• Single CPU, SSD and 
average memory 
• Dual CPU, Spindles and 
high memory 
• Used realistic user profiles 
• Included peaks and troughs 
during testing 
• Ran a soak test
THE WINNER??? 
• Initially Riak was a slam-dunk 
• Erlang-based (we know Erlang) 
• Tooling is excellent 
• Performed well 
• Previously evaluated
THE WINNER 
• Cassandra won in the end 
• Write performance 
• Richer feature set 
• Maturity of codebase and tooling 
• Testing continued 24/7 until launch
SCHEMA 
• Progress store 
• A perfect fit! 
• Presence 
• More relational 
• High throughput (Tombstones!) 
• TTLs 
• Messaging 
• Time-series data, well suited 
• Tombstones!
SCHEMA: LESSONS LEARNED 
• Keep it simple 
• It’s not a relational DB 
• Get your partition keys and 
clustering keys right. 
• C* will do what it does best
SCHEMA: LESSONS LEARNED 
• Don’t ignore CAP theorem 
• Cassandra has tuneable 
consistency, but there will be 
trade-offs 
• Load test with real numbers 
• Some issues aren’t evident in 
unit-tests
CONFIG 
• Default settings, probably not 
what you want 
• Changed many settings off 
the bat 
• Reverted some (oops)
HARDWARE 
• 2x Intel Xeon E5-2620 @ 2Ghz 
• 2x 480GB SSD (RAID-1) 
• 32GB 
• 1Gb non-dedicated network
MONITORING 
• Graphite 
• Nagios 
• Jolokia
GOTCHAS 
• Vnodes and rack awareness 
• Loadbalancers 
• Dev differs from production 
(of course...) 
• Launching in a DC we didn't 
load test in
LAUNCH 
• Request to simulate a 
node failure 
• Two nodes died over 
Christmas 
• Expanding to other titles
QUESTIONS?
APPENDIX 
cassandra.conf: 
auto_bootstrap: false 
hinted_handoff_throttle_in_kb: 1024 
max_hints_delivery_threads: 2 
trickle_fsync: true 
rpc_server_type: hsha 
<% if virtual == "physical" -%> 
concurrent_reads: 128 
<% else -%> 
concurrent_reads: 32 
<% end -%> 
concurrent_writes: <%= processorcount.to_i * 8 -%> 
multithreaded_compaction: false 
<% if virtual == "physical" -%> 
compaction_throughput_mb_per_sec: 0 
<% else -%> 
compaction_throughput_mb_per_sec: 16 
<% end -%> 
! 
cassandra-env.sh: 
<% if virtual == "physical" -%> 
JVM_OPTS="$JVM_OPTS -Xss180k" 
<% else -%> 
JVM_OPTS="$JVM_OPTS -Xss228k" 
<% end -%> 
JVM_EXTRA_OPTS="$JVM_EXTRA_OPTS -javaagent:/usr/ 
share/java/graphite-reporter-agent.jar -javaagent:/usr/share/java/ 
jolokia-jvm-agent.jar=port=8080,host=<%= hostname %>" 
EXTRA_CLASSPATH="/usr/share/java/metrics-graphite-2.0.3.jar"

More Related Content

Similar to Cassandra Summit 2014: Deploying Cassandra for Call of Duty (20)

PDF
Leveraging Cassandra for real-time multi-datacenter public cloud analytics
Julien Anguenot
 
PDF
iland Internet Solutions: Leveraging Cassandra for real-time multi-datacenter...
DataStax Academy
 
PDF
Apache Cassandra: NoSQL in the enterprise
jbellis
 
PDF
Cassandra Silicon Valley
Christopher Keller
 
PPTX
BigData Developers MeetUp
Christian Johannsen
 
PPTX
Performance Testing: Scylla vs. Cassandra vs. Datastax
ScyllaDB
 
PDF
Pythian: My First 100 days with a Cassandra Cluster
DataStax Academy
 
PDF
Cassandra Summit 2014: Launching PlayStation 4 with Apache Cassandra
DataStax Academy
 
PDF
1 Million Writes per second on 60 nodes with Cassandra and EBS
Jim Plush
 
PDF
Highly available, scalable and secure data with Cassandra and DataStax Enterp...
Johnny Miller
 
PDF
Cassandra Prophecy
Igor Khotin
 
PDF
Apache Cassandra in the Real World
Jeremy Hanna
 
PDF
Cassandra 2.0 (Introduction)
bigdatagurus_meetup
 
PDF
The Apache Cassandra ecosystem
Alex Thompson
 
PDF
optimizing_ceph_flash
Vijayendra Shamanna
 
PDF
performance_tuning.pdf
Alexadiaz52
 
PDF
performance_tuning.pdf
Alexadiaz52
 
PPTX
Cassandra at Lithium
Paul Cichonski
 
PPTX
Cassandra @ Sony: The good, the bad, and the ugly part 2
DataStax Academy
 
PDF
on the most suitable storage architecture for virtualization
Jordi Moles Blanco
 
Leveraging Cassandra for real-time multi-datacenter public cloud analytics
Julien Anguenot
 
iland Internet Solutions: Leveraging Cassandra for real-time multi-datacenter...
DataStax Academy
 
Apache Cassandra: NoSQL in the enterprise
jbellis
 
Cassandra Silicon Valley
Christopher Keller
 
BigData Developers MeetUp
Christian Johannsen
 
Performance Testing: Scylla vs. Cassandra vs. Datastax
ScyllaDB
 
Pythian: My First 100 days with a Cassandra Cluster
DataStax Academy
 
Cassandra Summit 2014: Launching PlayStation 4 with Apache Cassandra
DataStax Academy
 
1 Million Writes per second on 60 nodes with Cassandra and EBS
Jim Plush
 
Highly available, scalable and secure data with Cassandra and DataStax Enterp...
Johnny Miller
 
Cassandra Prophecy
Igor Khotin
 
Apache Cassandra in the Real World
Jeremy Hanna
 
Cassandra 2.0 (Introduction)
bigdatagurus_meetup
 
The Apache Cassandra ecosystem
Alex Thompson
 
optimizing_ceph_flash
Vijayendra Shamanna
 
performance_tuning.pdf
Alexadiaz52
 
performance_tuning.pdf
Alexadiaz52
 
Cassandra at Lithium
Paul Cichonski
 
Cassandra @ Sony: The good, the bad, and the ugly part 2
DataStax Academy
 
on the most suitable storage architecture for virtualization
Jordi Moles Blanco
 

More from DataStax Academy (20)

PDF
Forrester CXNYC 2017 - Delivering great real-time cx is a true craft
DataStax Academy
 
PPTX
Introduction to DataStax Enterprise Graph Database
DataStax Academy
 
PPTX
Introduction to DataStax Enterprise Advanced Replication with Apache Cassandra
DataStax Academy
 
PPTX
Cassandra on Docker @ Walmart Labs
DataStax Academy
 
PDF
Cassandra 3.0 Data Modeling
DataStax Academy
 
PPTX
Cassandra Adoption on Cisco UCS & Open stack
DataStax Academy
 
PDF
Data Modeling for Apache Cassandra
DataStax Academy
 
PDF
Coursera Cassandra Driver
DataStax Academy
 
PDF
Cassandra @ Netflix: Monitoring C* at Scale, Gossip and Tickler & Python
DataStax Academy
 
PPTX
Cassandra @ Sony: The good, the bad, and the ugly part 1
DataStax Academy
 
PDF
Standing Up Your First Cluster
DataStax Academy
 
PDF
Real Time Analytics with Dse
DataStax Academy
 
PDF
Introduction to Data Modeling with Apache Cassandra
DataStax Academy
 
PDF
Cassandra Core Concepts
DataStax Academy
 
PPTX
Enabling Search in your Cassandra Application with DataStax Enterprise
DataStax Academy
 
PPTX
Bad Habits Die Hard
DataStax Academy
 
PDF
Advanced Data Modeling with Apache Cassandra
DataStax Academy
 
PDF
Advanced Cassandra
DataStax Academy
 
PDF
Apache Cassandra and Drivers
DataStax Academy
 
PDF
Getting Started with Graph Databases
DataStax Academy
 
Forrester CXNYC 2017 - Delivering great real-time cx is a true craft
DataStax Academy
 
Introduction to DataStax Enterprise Graph Database
DataStax Academy
 
Introduction to DataStax Enterprise Advanced Replication with Apache Cassandra
DataStax Academy
 
Cassandra on Docker @ Walmart Labs
DataStax Academy
 
Cassandra 3.0 Data Modeling
DataStax Academy
 
Cassandra Adoption on Cisco UCS & Open stack
DataStax Academy
 
Data Modeling for Apache Cassandra
DataStax Academy
 
Coursera Cassandra Driver
DataStax Academy
 
Cassandra @ Netflix: Monitoring C* at Scale, Gossip and Tickler & Python
DataStax Academy
 
Cassandra @ Sony: The good, the bad, and the ugly part 1
DataStax Academy
 
Standing Up Your First Cluster
DataStax Academy
 
Real Time Analytics with Dse
DataStax Academy
 
Introduction to Data Modeling with Apache Cassandra
DataStax Academy
 
Cassandra Core Concepts
DataStax Academy
 
Enabling Search in your Cassandra Application with DataStax Enterprise
DataStax Academy
 
Bad Habits Die Hard
DataStax Academy
 
Advanced Data Modeling with Apache Cassandra
DataStax Academy
 
Advanced Cassandra
DataStax Academy
 
Apache Cassandra and Drivers
DataStax Academy
 
Getting Started with Graph Databases
DataStax Academy
 
Ad

Recently uploaded (20)

PDF
Fl Studio 24.2.2 Build 4597 Crack for Windows Free Download 2025
faizk77g
 
PDF
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
PDF
TrustArc Webinar - Data Privacy Trends 2025: Mid-Year Insights & Program Stra...
TrustArc
 
PDF
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
PDF
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
SFWelly Summer 25 Release Highlights July 2025
Anna Loughnan Colquhoun
 
PDF
Wojciech Ciemski for Top Cyber News MAGAZINE. June 2025
Dr. Ludmila Morozova-Buss
 
PDF
Empower Inclusion Through Accessible Java Applications
Ana-Maria Mihalceanu
 
PDF
Predicting the unpredictable: re-engineering recommendation algorithms for fr...
Speck&Tech
 
PPTX
Top iOS App Development Company in the USA for Innovative Apps
SynapseIndia
 
PDF
SWEBOK Guide and Software Services Engineering Education
Hironori Washizaki
 
PDF
LLMs.txt: Easily Control How AI Crawls Your Site
Keploy
 
PDF
Building Resilience with Digital Twins : Lessons from Korea
SANGHEE SHIN
 
PDF
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
PPTX
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
PDF
NewMind AI - Journal 100 Insights After The 100th Issue
NewMind AI
 
PDF
NewMind AI Journal - Weekly Chronicles - July'25 Week II
NewMind AI
 
PDF
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
PDF
Smart Air Quality Monitoring with Serrax AQM190 LITE
SERRAX TECHNOLOGIES LLP
 
PDF
Presentation - Vibe Coding The Future of Tech
yanuarsinggih1
 
Fl Studio 24.2.2 Build 4597 Crack for Windows Free Download 2025
faizk77g
 
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
TrustArc Webinar - Data Privacy Trends 2025: Mid-Year Insights & Program Stra...
TrustArc
 
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
SFWelly Summer 25 Release Highlights July 2025
Anna Loughnan Colquhoun
 
Wojciech Ciemski for Top Cyber News MAGAZINE. June 2025
Dr. Ludmila Morozova-Buss
 
Empower Inclusion Through Accessible Java Applications
Ana-Maria Mihalceanu
 
Predicting the unpredictable: re-engineering recommendation algorithms for fr...
Speck&Tech
 
Top iOS App Development Company in the USA for Innovative Apps
SynapseIndia
 
SWEBOK Guide and Software Services Engineering Education
Hironori Washizaki
 
LLMs.txt: Easily Control How AI Crawls Your Site
Keploy
 
Building Resilience with Digital Twins : Lessons from Korea
SANGHEE SHIN
 
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
NewMind AI - Journal 100 Insights After The 100th Issue
NewMind AI
 
NewMind AI Journal - Weekly Chronicles - July'25 Week II
NewMind AI
 
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
Smart Air Quality Monitoring with Serrax AQM190 LITE
SERRAX TECHNOLOGIES LLP
 
Presentation - Vibe Coding The Future of Tech
yanuarsinggih1
 
Ad

Cassandra Summit 2014: Deploying Cassandra for Call of Duty

  • 1. DEMONWARE Deploying Cassandra for Call of Duty #CassandraSummit
  • 2. Tim Czerniak Software Engineer DemonWare Seán O Sullivan Operations Engineer DemonWare
  • 3. DEMON-WHO? DemonWare is a subsidiary of Activision-Blizzard We write, deploy and maintain client and server applications for Activision and Blizzard games
  • 6. SERVICES • Matchmaking • Leaderboards • Chat • File Storage • Leagues • Social Network Integration • etc…
  • 7. TECHNOLOGIES Client C++ HTTP Server Python Erlang MySQL CentOS Puppet
  • 8. OUR UNUSUAL USE CASE Release First weekend Christmas Peak
  • 9. “By failing to prepare, you are preparing to fail.” – Benjamin Franklin
  • 10. OUR PREDICAMENT Needed to share data cross-DC… …but MySQL isn’t so good at that.
  • 11. SERVICES • Progress store • High write, low read. • File size ~4KB • Persistent • Presence • High write, high read • Data size minimal • Transient • Messaging • Low write, low read • Transient
  • 12. REQUIREMENTS • Cross DC • Ease of consolidation and expansion • Manageability for the operations teams • Throughput • Storage: 1,500,000 reqs/min • Presence: 250,000 reqs/min • Messaging: 850,000 reqs/min
  • 13. EVALUATION • Shortlisted suitable options • Riak • Cassandra • Re-wrote our application backend, twice
  • 14. LOAD TESTING • Two clusters • Single CPU, SSD and average memory • Dual CPU, Spindles and high memory • Used realistic user profiles • Included peaks and troughs during testing • Ran a soak test
  • 15. THE WINNER??? • Initially Riak was a slam-dunk • Erlang-based (we know Erlang) • Tooling is excellent • Performed well • Previously evaluated
  • 16. THE WINNER • Cassandra won in the end • Write performance • Richer feature set • Maturity of codebase and tooling • Testing continued 24/7 until launch
  • 17. SCHEMA • Progress store • A perfect fit! • Presence • More relational • High throughput (Tombstones!) • TTLs • Messaging • Time-series data, well suited • Tombstones!
  • 18. SCHEMA: LESSONS LEARNED • Keep it simple • It’s not a relational DB • Get your partition keys and clustering keys right. • C* will do what it does best
  • 19. SCHEMA: LESSONS LEARNED • Don’t ignore CAP theorem • Cassandra has tuneable consistency, but there will be trade-offs • Load test with real numbers • Some issues aren’t evident in unit-tests
  • 20. CONFIG • Default settings, probably not what you want • Changed many settings off the bat • Reverted some (oops)
  • 21. HARDWARE • 2x Intel Xeon E5-2620 @ 2Ghz • 2x 480GB SSD (RAID-1) • 32GB • 1Gb non-dedicated network
  • 22. MONITORING • Graphite • Nagios • Jolokia
  • 23. GOTCHAS • Vnodes and rack awareness • Loadbalancers • Dev differs from production (of course...) • Launching in a DC we didn't load test in
  • 24. LAUNCH • Request to simulate a node failure • Two nodes died over Christmas • Expanding to other titles
  • 26. APPENDIX cassandra.conf: auto_bootstrap: false hinted_handoff_throttle_in_kb: 1024 max_hints_delivery_threads: 2 trickle_fsync: true rpc_server_type: hsha <% if virtual == "physical" -%> concurrent_reads: 128 <% else -%> concurrent_reads: 32 <% end -%> concurrent_writes: <%= processorcount.to_i * 8 -%> multithreaded_compaction: false <% if virtual == "physical" -%> compaction_throughput_mb_per_sec: 0 <% else -%> compaction_throughput_mb_per_sec: 16 <% end -%> ! cassandra-env.sh: <% if virtual == "physical" -%> JVM_OPTS="$JVM_OPTS -Xss180k" <% else -%> JVM_OPTS="$JVM_OPTS -Xss228k" <% end -%> JVM_EXTRA_OPTS="$JVM_EXTRA_OPTS -javaagent:/usr/ share/java/graphite-reporter-agent.jar -javaagent:/usr/share/java/ jolokia-jvm-agent.jar=port=8080,host=<%= hostname %>" EXTRA_CLASSPATH="/usr/share/java/metrics-graphite-2.0.3.jar"