SlideShare a Scribd company logo
1 of 27
Download to read offline
1




                            When Devs Do Ops!

          1,000,000 daily users and just two developers
                                                      !




Jesper Richter-Reichhelm!
Head of Engineering!
wooga !
About
                                           !                                        2




!"#$%&'##()&                               !"#$%&.#/-%+0&1#023&
'$()*+*",&)(&-."/001"                      S&()>T+*"U&."/0V0"
'()*2)%3"'$()*+-45"6&7*+-8$)"9&:28&75"     62%%+48"4+77+-"$B"E&%2>"#&)*4"2)"8T+"
;$78<=-2)>?"@+)8(-+4"A8$8&7"$B"CDEFG"      #$-7*"
H)8+-)&I$)&7"8+&E"$B"J0"                   W$8&7"8+&E"42<+"24"VD"A/X"=&>?+)*5"YX"
B-$E"/0">$()8-2+4"2)"6+-72)"               B-$)8+)*G"

*+,&-%)%-&                                 *+,&-%)%-&
D"%&E+4"$)"'&>+=$$?K"/0E"&>IL+"(4+-4"      ;$48+*"&8"'&>+=$$?"
62%%+48"+(-$:+&)"4$>2&7"%&E+"              '7&4T">72+)8"
*+L+7$:+-5"MN"#$-7*"#2*+"                  Z(=."$)"Z&274"=&>?+)*"
O)7."DP"$B"(4+-4"B-$E"&*L+-I42)%"          U.[S"F"Z+*24"]6"
J0P"$B"(4+-4"&-+"B+E&7+"A&%+"/0QR0G"


                                                                            !"#$$%&"
When Devs Do Ops
                                 !         3




!  Starting   Point!

!  Finding    Helpers!

!  Challenges    and Solutions!

!  Looking    back!




                                     !"#$$%&"
Starting Point
                                !                         4




!  InOctober 2009 we set out to build a backend
  for woogaʼs first game with a persistent world.!


!  Our goal was to have more than 1,000,000 daily
  active users.!


!  Wehave never done something like this before
  (who had?)!


                                                    !"#$$%&"
Hosting model must fit the needs
                                           !                           5




!  Small team dedicated to a single game!
   !  2 backend folks to do both development and operation!


!  “Extreme”                 life cycle of a game!
 !(graphic by Rightscale)!




!  We       simply did not know what to expect!
  !    Scale up hosting when you are successful – not before!!
                                                                 !"#$$%&"
When Devs Do Ops
                                 !         6




!  Starting   Point!

!  Finding    Helpers!

!  Challenges    and Solutions!

!  Looking    back!




                                     !"#$$%&"
Focus on what you do best…  !               7

            and get help for the rest
                                    !


!  Amazon    Web Services!
 !  Easy to scale up and down!
 !  No limitations!




!  Scalarium!
 !  Making operation of a large cluster easy!
 !  Provides default setup!




!  New   Relic!
 !  Profiling of application at runtime!
 !  Info from HTTP request down to SQL query!

                                                !"#$$%&"
When Devs Do Ops
                                 !         8




!  Starting   Point!

!  Finding    Helpers!

!  Challenges    and Solutions!

!  Looking    back!




                                     !"#$$%&"
Challenge:
                                         9

                                     Growing traffic
                                                  !
1,200,000




1,000,000




 800,000




 600,000




 400,000




 200,000




       0
       4/22/14   5/22/14   6/22/14    7/22/14   8/22/14   9/22/14   10/22/14   11/22/14

                                                                                !"#$$%&"
Solution:
                                   10

      Automate to scale up and out easily
                                        !


!  Scaling up!
   !  Application servers: 2 cores => 8 cores!
   !  DB servers: 7.5GB => 68GB!




!  Scaling out!
   !  Application servers: 2 => up to 50!
   !  MySQL servers: 2 => 16 => 8!




!  Easy installation by automation!
   !  Chef recipes managed by Scalarium make that easy!



                                                          !"#$$%&"
Challenge:
                        11

Idle servers cost money, too!




                 peak : valley ratio
                    20:1 @ VZ
                    5:1 @ FB
                                       !"#$$%&"
Solution!                                        12

       Run servers only when needed!


!  Scalarium offers time and load based         instances!
   !  Start and stop instances based on time!
   !  Start and stop instances based on load!




                                                             !"#$$%&"
Solution!                  13

Run servers only when needed!




                                !"#$$%&"
Challenge  !                                14

              No application is perfect
                                      !


!  Do you know your applicationʼs behavior?!
   !  How is it used?!
   !  Whatʼs the throughput right now?!
   !  What HTTP requests stress the DB most?!




!  What did change in the last release?!
   !  How up-to-date is your information?!
   !  Can you compare performance now with last weekʼs?!




                                                           !"#$$%&"
Solution!                       15

New Relic provides trace information!




                                        !"#$$%&"
Solution
                  16

New Relic provides overviews
                           !




                               !"#$$%&"
Solution
                    17

     New Relic provides custom charts
                                    !


!  Screenshot:   Scalarium!




                                        !"#$$%&"
Challenge!                                     18

           Itʼs hard to scale out MySQL!


!  Caching requests would not work!
   !  Almost all HTTP requests were changing something in DB!



!  We optimized our MySQL configuration!
   !  Perconaʼs XtraDB, innodb_flush_method = O_DIRECT!
   !  Patches to ActiveRecord and data_fabric gem!



!  Still I/O performance of EBS was a hard limit!
   !  Maximum of 1,000 write transactions / sec / server!
   !  But already 5,000 writes / sec at peak for 8 masters!



!  So we sharded our MySQL databases!
   !  But handling 16 DBs is no fun…!
   !  … and at that time we only had 300,000 users!
                                                                !"#$$%&"
Solution!                                          19

           Pick a DB thatʼs better suited!


!  Redis was our choice!
   !  Master runs in-memory only (45,000 writes / sec / server)!
   !  Slaves backup data to disk every 15 minutes!
   !  Rich data model that is way beyond simple key/value!




!  We migrated most write heavy tables to Redis!
   !  Currently Redis has 2.5x transactions / sec than MySQL!
   !  But MySQL has still more data (256 GB vs. 40 GB)!




                                                                   !"#$$%&"
Challenge
                                           20

          Handling Data (Bases) is hard!


!  MySQL has its problems!
   !  Making a backup of 64GB takes about 30 minutes…!
   !  But restoring it can take 6 hours or more!




!  Redis is not perfect, too!
   !  Memory consumption of process grows over time!
   !  If too much memory is used backup to disk no longer works!
   !  Every two weeks we had to replace servers to “reset” RAM!




                                                                   !"#$$%&"
Challenge
                  21

Redis memory fragmentation!




                              !"#$$%&"
“Solution”
                                    22

         Automated setups always helps
                                     !


!  Replacing MySQL DBs!
   !  Start up new master / slave and restore backup!
   !  Make master slave of existing slave!
   !  Wait until replication in sync again (some hours)!
   !  Switch to new master and remove old master / slave!



      E0V&"        40V&"               E0V="        40V="


!  Replacing Redis DBs!
   !  Same procedure as above!
   !  But everything can be done in 30 minutes!




                                                            !"#$$%&"
When Devs Do Ops
                                 !        23




!  Starting   Point!

!  Finding    Helpers!

!  Challenges    and Solutions!

!  Looking    back!




                                     !"#$$%&"
We still have only 2 backend
        24

 developers to operate this!




                                !"#$$%&"
Know what it means
                                     25

                    to be in a Cloud
                                   !


!  Using a cloud has some disadvantages!
   !  Another game with dedicated HW has 8x better performance!
   !  I/O and network performance of EC2 is quite … err … limited!
   !  You cannot pick the best hardware possible!
   !  All hosts have the same chance of failure!




!  But offers unique advantages!
   !  Having unlimited servers on demand is just awesome!!
   !  You pay only for what you need when you need it!
   !  You can concentrate on your product!
   !  Itʼs very easy to experiment!




                                                                     !"#$$%&"
Play to its strengths
                                   26

           and adjust for its weaknesses
                                       !


!  Play to its strengths!
   !  Program your infrastructure, automate as much as possible!
   !  Measure closely and react to changes!
   !  Scaling up and out is quite easy!
   !  Sit back and relax…!




!  And adjust for its weaknesses!
   !  Avoid I/O – consider an in memory database or caching!
   !  Be prepared that every host can fail!




                                                                   !"#$$%&"
Thank you!
         !                           27




             ps.

             wooga.com/jobs
             jesper@wooga.com



                                !"#$$%&"

More Related Content

What's hot

Developing polyglot persistence applications (SpringOne China 2012)
Developing polyglot persistence applications (SpringOne China 2012)Developing polyglot persistence applications (SpringOne China 2012)
Developing polyglot persistence applications (SpringOne China 2012)Chris Richardson
 
Fosdem 2009 – improving drupal's page loading performance
Fosdem 2009 – improving drupal's page loading performanceFosdem 2009 – improving drupal's page loading performance
Fosdem 2009 – improving drupal's page loading performanceErup Enolc
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agilityelliando dias
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDBSean Laurent
 
MongoDB Case Study at NoSQL Now 2012
MongoDB Case Study at NoSQL Now 2012MongoDB Case Study at NoSQL Now 2012
MongoDB Case Study at NoSQL Now 2012Sean Laurent
 
MongoDB as a fast and queryable cache
MongoDB as a fast and queryable cacheMongoDB as a fast and queryable cache
MongoDB as a fast and queryable cacheMongoDB
 
Top 5 mistakes when writing Spark applications
Top 5 mistakes when writing Spark applicationsTop 5 mistakes when writing Spark applications
Top 5 mistakes when writing Spark applicationsmarkgrover
 
OGDC Datastorage Solution_Mr.Dung, Dinh Nguyen Anh
OGDC Datastorage Solution_Mr.Dung, Dinh Nguyen AnhOGDC Datastorage Solution_Mr.Dung, Dinh Nguyen Anh
OGDC Datastorage Solution_Mr.Dung, Dinh Nguyen AnhBuff Nguyen
 
High-Performance Storage Services with HailDB and Java
High-Performance Storage Services with HailDB and JavaHigh-Performance Storage Services with HailDB and Java
High-Performance Storage Services with HailDB and Javasunnygleason
 
Leveraging MongoDB: An Introductory Case Study
Leveraging MongoDB: An Introductory Case StudyLeveraging MongoDB: An Introductory Case Study
Leveraging MongoDB: An Introductory Case StudySean Laurent
 
10 Ways to Scale Your Website Silicon Valley Code Camp 2019
10 Ways to Scale Your Website Silicon Valley Code Camp 201910 Ways to Scale Your Website Silicon Valley Code Camp 2019
10 Ways to Scale Your Website Silicon Valley Code Camp 2019Dave Nielsen
 
10 Ways to Scale with Redis - LA Redis Meetup 2019
10 Ways to Scale with Redis - LA Redis Meetup 201910 Ways to Scale with Redis - LA Redis Meetup 2019
10 Ways to Scale with Redis - LA Redis Meetup 2019Dave Nielsen
 
Coldfusion comparison
Coldfusion comparisonColdfusion comparison
Coldfusion comparisonisotools_2012
 
My first powershell script
My first powershell scriptMy first powershell script
My first powershell scriptDavid Cobb
 
Add Redis to Postgres to Make Your Microservices Go Boom!
Add Redis to Postgres to Make Your Microservices Go Boom!Add Redis to Postgres to Make Your Microservices Go Boom!
Add Redis to Postgres to Make Your Microservices Go Boom!Dave Nielsen
 
How MongoDB is Being Used in China - Case Studies
How MongoDB is Being Used in China - Case StudiesHow MongoDB is Being Used in China - Case Studies
How MongoDB is Being Used in China - Case StudiesMongoDB
 
Newsql 2015-150213024325-conversion-gate01
Newsql 2015-150213024325-conversion-gate01Newsql 2015-150213024325-conversion-gate01
Newsql 2015-150213024325-conversion-gate01Jagadeesha DG
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScriptelliando dias
 
NOSQL, CouchDB, and the Cloud
NOSQL, CouchDB, and the CloudNOSQL, CouchDB, and the Cloud
NOSQL, CouchDB, and the Cloudboorad
 

What's hot (20)

Developing polyglot persistence applications (SpringOne China 2012)
Developing polyglot persistence applications (SpringOne China 2012)Developing polyglot persistence applications (SpringOne China 2012)
Developing polyglot persistence applications (SpringOne China 2012)
 
Fosdem 2009 – improving drupal's page loading performance
Fosdem 2009 – improving drupal's page loading performanceFosdem 2009 – improving drupal's page loading performance
Fosdem 2009 – improving drupal's page loading performance
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agility
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
 
MongoDB Case Study at NoSQL Now 2012
MongoDB Case Study at NoSQL Now 2012MongoDB Case Study at NoSQL Now 2012
MongoDB Case Study at NoSQL Now 2012
 
Dibi Conference 2012
Dibi Conference 2012Dibi Conference 2012
Dibi Conference 2012
 
MongoDB as a fast and queryable cache
MongoDB as a fast and queryable cacheMongoDB as a fast and queryable cache
MongoDB as a fast and queryable cache
 
Top 5 mistakes when writing Spark applications
Top 5 mistakes when writing Spark applicationsTop 5 mistakes when writing Spark applications
Top 5 mistakes when writing Spark applications
 
OGDC Datastorage Solution_Mr.Dung, Dinh Nguyen Anh
OGDC Datastorage Solution_Mr.Dung, Dinh Nguyen AnhOGDC Datastorage Solution_Mr.Dung, Dinh Nguyen Anh
OGDC Datastorage Solution_Mr.Dung, Dinh Nguyen Anh
 
High-Performance Storage Services with HailDB and Java
High-Performance Storage Services with HailDB and JavaHigh-Performance Storage Services with HailDB and Java
High-Performance Storage Services with HailDB and Java
 
Leveraging MongoDB: An Introductory Case Study
Leveraging MongoDB: An Introductory Case StudyLeveraging MongoDB: An Introductory Case Study
Leveraging MongoDB: An Introductory Case Study
 
10 Ways to Scale Your Website Silicon Valley Code Camp 2019
10 Ways to Scale Your Website Silicon Valley Code Camp 201910 Ways to Scale Your Website Silicon Valley Code Camp 2019
10 Ways to Scale Your Website Silicon Valley Code Camp 2019
 
10 Ways to Scale with Redis - LA Redis Meetup 2019
10 Ways to Scale with Redis - LA Redis Meetup 201910 Ways to Scale with Redis - LA Redis Meetup 2019
10 Ways to Scale with Redis - LA Redis Meetup 2019
 
Coldfusion comparison
Coldfusion comparisonColdfusion comparison
Coldfusion comparison
 
My first powershell script
My first powershell scriptMy first powershell script
My first powershell script
 
Add Redis to Postgres to Make Your Microservices Go Boom!
Add Redis to Postgres to Make Your Microservices Go Boom!Add Redis to Postgres to Make Your Microservices Go Boom!
Add Redis to Postgres to Make Your Microservices Go Boom!
 
How MongoDB is Being Used in China - Case Studies
How MongoDB is Being Used in China - Case StudiesHow MongoDB is Being Used in China - Case Studies
How MongoDB is Being Used in China - Case Studies
 
Newsql 2015-150213024325-conversion-gate01
Newsql 2015-150213024325-conversion-gate01Newsql 2015-150213024325-conversion-gate01
Newsql 2015-150213024325-conversion-gate01
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScript
 
NOSQL, CouchDB, and the Cloud
NOSQL, CouchDB, and the CloudNOSQL, CouchDB, and the Cloud
NOSQL, CouchDB, and the Cloud
 

Viewers also liked

JRubyConf2013_Tim Lossen_All your core
JRubyConf2013_Tim Lossen_All your coreJRubyConf2013_Tim Lossen_All your core
JRubyConf2013_Tim Lossen_All your coreWooga
 
Erlang as a Cloud Citizen
Erlang as a Cloud CitizenErlang as a Cloud Citizen
Erlang as a Cloud CitizenWooga
 
NoSQL Games_NoSQL Roadshow Berlin
NoSQL Games_NoSQL Roadshow BerlinNoSQL Games_NoSQL Roadshow Berlin
NoSQL Games_NoSQL Roadshow BerlinWooga
 
Getting the Most our of your Tools_FrontEnd DevConf2013_Minsk
Getting the Most our of your Tools_FrontEnd DevConf2013_MinskGetting the Most our of your Tools_FrontEnd DevConf2013_Minsk
Getting the Most our of your Tools_FrontEnd DevConf2013_MinskWooga
 
Designing for Scale
Designing for ScaleDesigning for Scale
Designing for ScaleWooga
 
Architecture Evolution at Wooga (AWS Cloud Computing for Developers,)
Architecture Evolution at Wooga (AWS Cloud Computing for Developers,)Architecture Evolution at Wooga (AWS Cloud Computing for Developers,)
Architecture Evolution at Wooga (AWS Cloud Computing for Developers,)Wooga
 
Stateful Application Server_JRubyConf13_Lukas Rieder
Stateful Application Server_JRubyConf13_Lukas RiederStateful Application Server_JRubyConf13_Lukas Rieder
Stateful Application Server_JRubyConf13_Lukas RiederWooga
 
Metrics. Driven. Design. (Developer Conference Hamburg 2012)
Metrics. Driven. Design. (Developer Conference Hamburg 2012)Metrics. Driven. Design. (Developer Conference Hamburg 2012)
Metrics. Driven. Design. (Developer Conference Hamburg 2012)Wooga
 
How to scale a company - game teams at Wooga
How to scale a company - game teams at WoogaHow to scale a company - game teams at Wooga
How to scale a company - game teams at WoogaWooga
 
Event Stream Processing with Kafka (Berlin Buzzwords 2012)
Event Stream Processing with Kafka (Berlin Buzzwords 2012)Event Stream Processing with Kafka (Berlin Buzzwords 2012)
Event Stream Processing with Kafka (Berlin Buzzwords 2012)Wooga
 
2013 04-29-evolution of backend
2013 04-29-evolution of backend2013 04-29-evolution of backend
2013 04-29-evolution of backendWooga
 
More than syntax
More than syntaxMore than syntax
More than syntaxWooga
 
You are not alone - Scaling multiplayer games
You are not alone - Scaling multiplayer gamesYou are not alone - Scaling multiplayer games
You are not alone - Scaling multiplayer gamesWooga
 
Stateful_Application_Server_RuPy 2012_Brno
Stateful_Application_Server_RuPy 2012_BrnoStateful_Application_Server_RuPy 2012_Brno
Stateful_Application_Server_RuPy 2012_BrnoWooga
 
Painful success - lessons learned while scaling up
Painful success - lessons learned while scaling upPainful success - lessons learned while scaling up
Painful success - lessons learned while scaling upWooga
 
Continuous Integration for iOS (iOS User Group Berlin)
Continuous Integration for iOS (iOS User Group Berlin)Continuous Integration for iOS (iOS User Group Berlin)
Continuous Integration for iOS (iOS User Group Berlin)Wooga
 
Wooga: Internationality meets Agility @Zutaten 2013
Wooga: Internationality meets Agility @Zutaten 2013Wooga: Internationality meets Agility @Zutaten 2013
Wooga: Internationality meets Agility @Zutaten 2013Wooga
 
NoSQL Games
NoSQL GamesNoSQL Games
NoSQL GamesWooga
 
Monitoring with Syslog and EventMachine
Monitoring with Syslog and EventMachineMonitoring with Syslog and EventMachine
Monitoring with Syslog and EventMachineWooga
 
Riak at Wooga_Riak Meetup Sept 2013
Riak at Wooga_Riak Meetup Sept 2013Riak at Wooga_Riak Meetup Sept 2013
Riak at Wooga_Riak Meetup Sept 2013Wooga
 

Viewers also liked (20)

JRubyConf2013_Tim Lossen_All your core
JRubyConf2013_Tim Lossen_All your coreJRubyConf2013_Tim Lossen_All your core
JRubyConf2013_Tim Lossen_All your core
 
Erlang as a Cloud Citizen
Erlang as a Cloud CitizenErlang as a Cloud Citizen
Erlang as a Cloud Citizen
 
NoSQL Games_NoSQL Roadshow Berlin
NoSQL Games_NoSQL Roadshow BerlinNoSQL Games_NoSQL Roadshow Berlin
NoSQL Games_NoSQL Roadshow Berlin
 
Getting the Most our of your Tools_FrontEnd DevConf2013_Minsk
Getting the Most our of your Tools_FrontEnd DevConf2013_MinskGetting the Most our of your Tools_FrontEnd DevConf2013_Minsk
Getting the Most our of your Tools_FrontEnd DevConf2013_Minsk
 
Designing for Scale
Designing for ScaleDesigning for Scale
Designing for Scale
 
Architecture Evolution at Wooga (AWS Cloud Computing for Developers,)
Architecture Evolution at Wooga (AWS Cloud Computing for Developers,)Architecture Evolution at Wooga (AWS Cloud Computing for Developers,)
Architecture Evolution at Wooga (AWS Cloud Computing for Developers,)
 
Stateful Application Server_JRubyConf13_Lukas Rieder
Stateful Application Server_JRubyConf13_Lukas RiederStateful Application Server_JRubyConf13_Lukas Rieder
Stateful Application Server_JRubyConf13_Lukas Rieder
 
Metrics. Driven. Design. (Developer Conference Hamburg 2012)
Metrics. Driven. Design. (Developer Conference Hamburg 2012)Metrics. Driven. Design. (Developer Conference Hamburg 2012)
Metrics. Driven. Design. (Developer Conference Hamburg 2012)
 
How to scale a company - game teams at Wooga
How to scale a company - game teams at WoogaHow to scale a company - game teams at Wooga
How to scale a company - game teams at Wooga
 
Event Stream Processing with Kafka (Berlin Buzzwords 2012)
Event Stream Processing with Kafka (Berlin Buzzwords 2012)Event Stream Processing with Kafka (Berlin Buzzwords 2012)
Event Stream Processing with Kafka (Berlin Buzzwords 2012)
 
2013 04-29-evolution of backend
2013 04-29-evolution of backend2013 04-29-evolution of backend
2013 04-29-evolution of backend
 
More than syntax
More than syntaxMore than syntax
More than syntax
 
You are not alone - Scaling multiplayer games
You are not alone - Scaling multiplayer gamesYou are not alone - Scaling multiplayer games
You are not alone - Scaling multiplayer games
 
Stateful_Application_Server_RuPy 2012_Brno
Stateful_Application_Server_RuPy 2012_BrnoStateful_Application_Server_RuPy 2012_Brno
Stateful_Application_Server_RuPy 2012_Brno
 
Painful success - lessons learned while scaling up
Painful success - lessons learned while scaling upPainful success - lessons learned while scaling up
Painful success - lessons learned while scaling up
 
Continuous Integration for iOS (iOS User Group Berlin)
Continuous Integration for iOS (iOS User Group Berlin)Continuous Integration for iOS (iOS User Group Berlin)
Continuous Integration for iOS (iOS User Group Berlin)
 
Wooga: Internationality meets Agility @Zutaten 2013
Wooga: Internationality meets Agility @Zutaten 2013Wooga: Internationality meets Agility @Zutaten 2013
Wooga: Internationality meets Agility @Zutaten 2013
 
NoSQL Games
NoSQL GamesNoSQL Games
NoSQL Games
 
Monitoring with Syslog and EventMachine
Monitoring with Syslog and EventMachineMonitoring with Syslog and EventMachine
Monitoring with Syslog and EventMachine
 
Riak at Wooga_Riak Meetup Sept 2013
Riak at Wooga_Riak Meetup Sept 2013Riak at Wooga_Riak Meetup Sept 2013
Riak at Wooga_Riak Meetup Sept 2013
 

Similar to How Two Developers at Wooga Scaled Their Game Backend to Support Over 1 Million Daily Users on AWS

Games for the Masses (Jax)
Games for the Masses (Jax)Games for the Masses (Jax)
Games for the Masses (Jax)Wooga
 
Cassandra Summit 2014: Performance Tuning Cassandra in AWS
Cassandra Summit 2014: Performance Tuning Cassandra in AWSCassandra Summit 2014: Performance Tuning Cassandra in AWS
Cassandra Summit 2014: Performance Tuning Cassandra in AWSDataStax Academy
 
Inside Wordnik's Architecture
Inside Wordnik's ArchitectureInside Wordnik's Architecture
Inside Wordnik's ArchitectureTony Tam
 
글로벌 CDN서비스와 웹 성능 향상 방법론 | Devon 2012
글로벌 CDN서비스와 웹 성능 향상 방법론 | Devon 2012글로벌 CDN서비스와 웹 성능 향상 방법론 | Devon 2012
글로벌 CDN서비스와 웹 성능 향상 방법론 | Devon 2012Daum DNA
 
글로벌 CDN서비스와 웹 성능 향상 방법론 (Global CDN and Web Performance Optimization) - DevOn...
글로벌 CDN서비스와 웹 성능 향상 방법론 (Global CDN and Web Performance Optimization) - DevOn...글로벌 CDN서비스와 웹 성능 향상 방법론 (Global CDN and Web Performance Optimization) - DevOn...
글로벌 CDN서비스와 웹 성능 향상 방법론 (Global CDN and Web Performance Optimization) - DevOn...Junho Choi
 
Rails Conf Europe 2007 Notes
Rails Conf  Europe 2007  NotesRails Conf  Europe 2007  Notes
Rails Conf Europe 2007 NotesRoss Lawley
 
Running MongoDB in the Cloud
Running MongoDB in the CloudRunning MongoDB in the Cloud
Running MongoDB in the CloudTony Tam
 
Scaling a Rails Application from the Bottom Up
Scaling a Rails Application from the Bottom Up Scaling a Rails Application from the Bottom Up
Scaling a Rails Application from the Bottom Up Abhishek Singh
 
A SOA for the car - 01/2009
A SOA for the car - 01/2009A SOA for the car - 01/2009
A SOA for the car - 01/2009Roland Tritsch
 
The Transparent Web: Bridging the Chasm in Web Development
The Transparent Web: Bridging the Chasm in Web DevelopmentThe Transparent Web: Bridging the Chasm in Web Development
The Transparent Web: Bridging the Chasm in Web Developmenttwopoint718
 
Aws microservice keynote
Aws microservice keynoteAws microservice keynote
Aws microservice keynotenextbuild
 
Novalug 07142012
Novalug 07142012Novalug 07142012
Novalug 07142012Mandi Walls
 
Modern Webdevelopment With Ruby On Rails
Modern Webdevelopment With Ruby On RailsModern Webdevelopment With Ruby On Rails
Modern Webdevelopment With Ruby On RailsRobert Glaser
 
Discover MongoDB - Israel
Discover MongoDB - IsraelDiscover MongoDB - Israel
Discover MongoDB - IsraelMichael Fiedler
 
Ruby on Rails 101 - Presentation Slides for a Five Day Introductory Course
Ruby on Rails 101 - Presentation Slides for a Five Day Introductory CourseRuby on Rails 101 - Presentation Slides for a Five Day Introductory Course
Ruby on Rails 101 - Presentation Slides for a Five Day Introductory Coursepeter_marklund
 
Rails in the Cloud
Rails in the CloudRails in the Cloud
Rails in the Cloudiwarshak
 
Ensuring High Availability for Real-time Analytics featuring Boxed Ice / Serv...
Ensuring High Availability for Real-time Analytics featuring Boxed Ice / Serv...Ensuring High Availability for Real-time Analytics featuring Boxed Ice / Serv...
Ensuring High Availability for Real-time Analytics featuring Boxed Ice / Serv...MongoDB
 

Similar to How Two Developers at Wooga Scaled Their Game Backend to Support Over 1 Million Daily Users on AWS (20)

Games for the Masses (Jax)
Games for the Masses (Jax)Games for the Masses (Jax)
Games for the Masses (Jax)
 
Architecture Evolution at Wooga
Architecture Evolution at WoogaArchitecture Evolution at Wooga
Architecture Evolution at Wooga
 
Cassandra Summit 2014: Performance Tuning Cassandra in AWS
Cassandra Summit 2014: Performance Tuning Cassandra in AWSCassandra Summit 2014: Performance Tuning Cassandra in AWS
Cassandra Summit 2014: Performance Tuning Cassandra in AWS
 
Inside Wordnik's Architecture
Inside Wordnik's ArchitectureInside Wordnik's Architecture
Inside Wordnik's Architecture
 
글로벌 CDN서비스와 웹 성능 향상 방법론 | Devon 2012
글로벌 CDN서비스와 웹 성능 향상 방법론 | Devon 2012글로벌 CDN서비스와 웹 성능 향상 방법론 | Devon 2012
글로벌 CDN서비스와 웹 성능 향상 방법론 | Devon 2012
 
글로벌 CDN서비스와 웹 성능 향상 방법론 (Global CDN and Web Performance Optimization) - DevOn...
글로벌 CDN서비스와 웹 성능 향상 방법론 (Global CDN and Web Performance Optimization) - DevOn...글로벌 CDN서비스와 웹 성능 향상 방법론 (Global CDN and Web Performance Optimization) - DevOn...
글로벌 CDN서비스와 웹 성능 향상 방법론 (Global CDN and Web Performance Optimization) - DevOn...
 
Rails Conf Europe 2007 Notes
Rails Conf  Europe 2007  NotesRails Conf  Europe 2007  Notes
Rails Conf Europe 2007 Notes
 
Running MongoDB in the Cloud
Running MongoDB in the CloudRunning MongoDB in the Cloud
Running MongoDB in the Cloud
 
Vidoop CouchDB Talk
Vidoop CouchDB TalkVidoop CouchDB Talk
Vidoop CouchDB Talk
 
Scaling a Rails Application from the Bottom Up
Scaling a Rails Application from the Bottom Up Scaling a Rails Application from the Bottom Up
Scaling a Rails Application from the Bottom Up
 
A SOA for the car - 01/2009
A SOA for the car - 01/2009A SOA for the car - 01/2009
A SOA for the car - 01/2009
 
The Transparent Web: Bridging the Chasm in Web Development
The Transparent Web: Bridging the Chasm in Web DevelopmentThe Transparent Web: Bridging the Chasm in Web Development
The Transparent Web: Bridging the Chasm in Web Development
 
Aws microservice keynote
Aws microservice keynoteAws microservice keynote
Aws microservice keynote
 
Novalug 07142012
Novalug 07142012Novalug 07142012
Novalug 07142012
 
Automate or Die
Automate or DieAutomate or Die
Automate or Die
 
Modern Webdevelopment With Ruby On Rails
Modern Webdevelopment With Ruby On RailsModern Webdevelopment With Ruby On Rails
Modern Webdevelopment With Ruby On Rails
 
Discover MongoDB - Israel
Discover MongoDB - IsraelDiscover MongoDB - Israel
Discover MongoDB - Israel
 
Ruby on Rails 101 - Presentation Slides for a Five Day Introductory Course
Ruby on Rails 101 - Presentation Slides for a Five Day Introductory CourseRuby on Rails 101 - Presentation Slides for a Five Day Introductory Course
Ruby on Rails 101 - Presentation Slides for a Five Day Introductory Course
 
Rails in the Cloud
Rails in the CloudRails in the Cloud
Rails in the Cloud
 
Ensuring High Availability for Real-time Analytics featuring Boxed Ice / Serv...
Ensuring High Availability for Real-time Analytics featuring Boxed Ice / Serv...Ensuring High Availability for Real-time Analytics featuring Boxed Ice / Serv...
Ensuring High Availability for Real-time Analytics featuring Boxed Ice / Serv...
 

More from Wooga

Story of Warlords: Bringing a turn-based strategy game to mobile
Story of Warlords: Bringing a turn-based strategy game to mobile Story of Warlords: Bringing a turn-based strategy game to mobile
Story of Warlords: Bringing a turn-based strategy game to mobile Wooga
 
Instagram Celebrities: are they the new cats? - Targetsummit Berlin 2015
Instagram Celebrities: are they the new cats? - Targetsummit Berlin 2015Instagram Celebrities: are they the new cats? - Targetsummit Berlin 2015
Instagram Celebrities: are they the new cats? - Targetsummit Berlin 2015Wooga
 
In it for the long haul - How Wooga boosts long-term retention
In it for the long haul - How Wooga boosts long-term retentionIn it for the long haul - How Wooga boosts long-term retention
In it for the long haul - How Wooga boosts long-term retentionWooga
 
Leveling up in localization! - Susan Alma & Dario Quondamstefano
Leveling up in localization! - Susan Alma & Dario QuondamstefanoLeveling up in localization! - Susan Alma & Dario Quondamstefano
Leveling up in localization! - Susan Alma & Dario QuondamstefanoWooga
 
Evoloution of Ideas
Evoloution of IdeasEvoloution of Ideas
Evoloution of IdeasWooga
 
Entitas System Architecture with Unity - Maxim Zaks and Simon Schmid
Entitas System Architecture with Unity - Maxim Zaks and Simon Schmid Entitas System Architecture with Unity - Maxim Zaks and Simon Schmid
Entitas System Architecture with Unity - Maxim Zaks and Simon Schmid Wooga
 
Saying No to the CEO: A Deep Look at Independent Teams - Adam Telfer
Saying No to the CEO: A Deep Look at Independent Teams - Adam TelferSaying No to the CEO: A Deep Look at Independent Teams - Adam Telfer
Saying No to the CEO: A Deep Look at Independent Teams - Adam TelferWooga
 
Innovation dank DevOps (DevOpsCon Berlin 2015)
Innovation dank DevOps (DevOpsCon Berlin 2015)Innovation dank DevOps (DevOpsCon Berlin 2015)
Innovation dank DevOps (DevOpsCon Berlin 2015)Wooga
 
Big Fish, small pond - strategies for surviving in a maturing market - Ed Biden
Big Fish, small pond - strategies for surviving in a maturing market - Ed BidenBig Fish, small pond - strategies for surviving in a maturing market - Ed Biden
Big Fish, small pond - strategies for surviving in a maturing market - Ed BidenWooga
 
Review mining aps2014 berlin
Review mining aps2014 berlinReview mining aps2014 berlin
Review mining aps2014 berlinWooga
 
Riak & Wooga_Geeek2Geeek Meetup2014 Berlin
Riak & Wooga_Geeek2Geeek Meetup2014 BerlinRiak & Wooga_Geeek2Geeek Meetup2014 Berlin
Riak & Wooga_Geeek2Geeek Meetup2014 BerlinWooga
 
Staying in the Game: Game localization practices for the mobile market
Staying in the Game: Game localization practices for the mobile marketStaying in the Game: Game localization practices for the mobile market
Staying in the Game: Game localization practices for the mobile marketWooga
 
Startup Weekend_Makers and Games_Philipp Stelzer
Startup Weekend_Makers and Games_Philipp StelzerStartup Weekend_Makers and Games_Philipp Stelzer
Startup Weekend_Makers and Games_Philipp StelzerWooga
 
DevOps goes Mobile (daho.am)
DevOps goes Mobile (daho.am)DevOps goes Mobile (daho.am)
DevOps goes Mobile (daho.am)Wooga
 
DevOps goes Mobile - Jax 2014 - Jesper Richter-Reichhelm
DevOps goes Mobile - Jax 2014 - Jesper Richter-ReichhelmDevOps goes Mobile - Jax 2014 - Jesper Richter-Reichhelm
DevOps goes Mobile - Jax 2014 - Jesper Richter-ReichhelmWooga
 
CodeFest 2014_Mobile Game Development
CodeFest 2014_Mobile Game DevelopmentCodeFest 2014_Mobile Game Development
CodeFest 2014_Mobile Game DevelopmentWooga
 
Jelly Splash: Puzzling your way to the top of the App Stores - GDC 2014
Jelly Splash: Puzzling your way to the top of the App Stores - GDC 2014Jelly Splash: Puzzling your way to the top of the App Stores - GDC 2014
Jelly Splash: Puzzling your way to the top of the App Stores - GDC 2014Wooga
 
How to hire the best people for your startup-Gitta Blat-Head of People
How to hire the best people for your startup-Gitta Blat-Head of PeopleHow to hire the best people for your startup-Gitta Blat-Head of People
How to hire the best people for your startup-Gitta Blat-Head of PeopleWooga
 
Two Ann(e)s and one Julia_Wooga Lady Power from Berlin_SGA2014
Two Ann(e)s and one Julia_Wooga Lady Power from Berlin_SGA2014Two Ann(e)s and one Julia_Wooga Lady Power from Berlin_SGA2014
Two Ann(e)s and one Julia_Wooga Lady Power from Berlin_SGA2014Wooga
 
Pocket Gamer Connects 2014_The Experience of Entering the Korean Market
Pocket Gamer Connects 2014_The Experience of Entering the Korean MarketPocket Gamer Connects 2014_The Experience of Entering the Korean Market
Pocket Gamer Connects 2014_The Experience of Entering the Korean MarketWooga
 

More from Wooga (20)

Story of Warlords: Bringing a turn-based strategy game to mobile
Story of Warlords: Bringing a turn-based strategy game to mobile Story of Warlords: Bringing a turn-based strategy game to mobile
Story of Warlords: Bringing a turn-based strategy game to mobile
 
Instagram Celebrities: are they the new cats? - Targetsummit Berlin 2015
Instagram Celebrities: are they the new cats? - Targetsummit Berlin 2015Instagram Celebrities: are they the new cats? - Targetsummit Berlin 2015
Instagram Celebrities: are they the new cats? - Targetsummit Berlin 2015
 
In it for the long haul - How Wooga boosts long-term retention
In it for the long haul - How Wooga boosts long-term retentionIn it for the long haul - How Wooga boosts long-term retention
In it for the long haul - How Wooga boosts long-term retention
 
Leveling up in localization! - Susan Alma & Dario Quondamstefano
Leveling up in localization! - Susan Alma & Dario QuondamstefanoLeveling up in localization! - Susan Alma & Dario Quondamstefano
Leveling up in localization! - Susan Alma & Dario Quondamstefano
 
Evoloution of Ideas
Evoloution of IdeasEvoloution of Ideas
Evoloution of Ideas
 
Entitas System Architecture with Unity - Maxim Zaks and Simon Schmid
Entitas System Architecture with Unity - Maxim Zaks and Simon Schmid Entitas System Architecture with Unity - Maxim Zaks and Simon Schmid
Entitas System Architecture with Unity - Maxim Zaks and Simon Schmid
 
Saying No to the CEO: A Deep Look at Independent Teams - Adam Telfer
Saying No to the CEO: A Deep Look at Independent Teams - Adam TelferSaying No to the CEO: A Deep Look at Independent Teams - Adam Telfer
Saying No to the CEO: A Deep Look at Independent Teams - Adam Telfer
 
Innovation dank DevOps (DevOpsCon Berlin 2015)
Innovation dank DevOps (DevOpsCon Berlin 2015)Innovation dank DevOps (DevOpsCon Berlin 2015)
Innovation dank DevOps (DevOpsCon Berlin 2015)
 
Big Fish, small pond - strategies for surviving in a maturing market - Ed Biden
Big Fish, small pond - strategies for surviving in a maturing market - Ed BidenBig Fish, small pond - strategies for surviving in a maturing market - Ed Biden
Big Fish, small pond - strategies for surviving in a maturing market - Ed Biden
 
Review mining aps2014 berlin
Review mining aps2014 berlinReview mining aps2014 berlin
Review mining aps2014 berlin
 
Riak & Wooga_Geeek2Geeek Meetup2014 Berlin
Riak & Wooga_Geeek2Geeek Meetup2014 BerlinRiak & Wooga_Geeek2Geeek Meetup2014 Berlin
Riak & Wooga_Geeek2Geeek Meetup2014 Berlin
 
Staying in the Game: Game localization practices for the mobile market
Staying in the Game: Game localization practices for the mobile marketStaying in the Game: Game localization practices for the mobile market
Staying in the Game: Game localization practices for the mobile market
 
Startup Weekend_Makers and Games_Philipp Stelzer
Startup Weekend_Makers and Games_Philipp StelzerStartup Weekend_Makers and Games_Philipp Stelzer
Startup Weekend_Makers and Games_Philipp Stelzer
 
DevOps goes Mobile (daho.am)
DevOps goes Mobile (daho.am)DevOps goes Mobile (daho.am)
DevOps goes Mobile (daho.am)
 
DevOps goes Mobile - Jax 2014 - Jesper Richter-Reichhelm
DevOps goes Mobile - Jax 2014 - Jesper Richter-ReichhelmDevOps goes Mobile - Jax 2014 - Jesper Richter-Reichhelm
DevOps goes Mobile - Jax 2014 - Jesper Richter-Reichhelm
 
CodeFest 2014_Mobile Game Development
CodeFest 2014_Mobile Game DevelopmentCodeFest 2014_Mobile Game Development
CodeFest 2014_Mobile Game Development
 
Jelly Splash: Puzzling your way to the top of the App Stores - GDC 2014
Jelly Splash: Puzzling your way to the top of the App Stores - GDC 2014Jelly Splash: Puzzling your way to the top of the App Stores - GDC 2014
Jelly Splash: Puzzling your way to the top of the App Stores - GDC 2014
 
How to hire the best people for your startup-Gitta Blat-Head of People
How to hire the best people for your startup-Gitta Blat-Head of PeopleHow to hire the best people for your startup-Gitta Blat-Head of People
How to hire the best people for your startup-Gitta Blat-Head of People
 
Two Ann(e)s and one Julia_Wooga Lady Power from Berlin_SGA2014
Two Ann(e)s and one Julia_Wooga Lady Power from Berlin_SGA2014Two Ann(e)s and one Julia_Wooga Lady Power from Berlin_SGA2014
Two Ann(e)s and one Julia_Wooga Lady Power from Berlin_SGA2014
 
Pocket Gamer Connects 2014_The Experience of Entering the Korean Market
Pocket Gamer Connects 2014_The Experience of Entering the Korean MarketPocket Gamer Connects 2014_The Experience of Entering the Korean Market
Pocket Gamer Connects 2014_The Experience of Entering the Korean Market
 

Recently uploaded

DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 

Recently uploaded (20)

DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 

How Two Developers at Wooga Scaled Their Game Backend to Support Over 1 Million Daily Users on AWS

  • 1. 1 When Devs Do Ops! 1,000,000 daily users and just two developers ! Jesper Richter-Reichhelm! Head of Engineering! wooga !
  • 2. About ! 2 !"#$%&'##()& !"#$%&.#/-%+0&1#023& '$()*+*",&)(&-."/001" S&()>T+*"U&."/0V0" '()*2)%3"'$()*+-45"6&7*+-8$)"9&:28&75" 62%%+48"4+77+-"$B"E&%2>"#&)*4"2)"8T+" ;$78<=-2)>?"@+)8(-+4"A8$8&7"$B"CDEFG" #$-7*" H)8+-)&I$)&7"8+&E"$B"J0" W$8&7"8+&E"42<+"24"VD"A/X"=&>?+)*5"YX" B-$E"/0">$()8-2+4"2)"6+-72)" B-$)8+)*G" *+,&-%)%-& *+,&-%)%-& D"%&E+4"$)"'&>+=$$?K"/0E"&>IL+"(4+-4" ;$48+*"&8"'&>+=$$?" 62%%+48"+(-$:+&)"4$>2&7"%&E+" '7&4T">72+)8" *+L+7$:+-5"MN"#$-7*"#2*+" Z(=."$)"Z&274"=&>?+)*" O)7."DP"$B"(4+-4"B-$E"&*L+-I42)%" U.[S"F"Z+*24"]6" J0P"$B"(4+-4"&-+"B+E&7+"A&%+"/0QR0G" !"#$$%&"
  • 3. When Devs Do Ops ! 3 !  Starting Point! !  Finding Helpers! !  Challenges and Solutions! !  Looking back! !"#$$%&"
  • 4. Starting Point ! 4 !  InOctober 2009 we set out to build a backend for woogaʼs first game with a persistent world.! !  Our goal was to have more than 1,000,000 daily active users.! !  Wehave never done something like this before (who had?)! !"#$$%&"
  • 5. Hosting model must fit the needs ! 5 !  Small team dedicated to a single game! !  2 backend folks to do both development and operation! !  “Extreme” life cycle of a game! !(graphic by Rightscale)! !  We simply did not know what to expect! !  Scale up hosting when you are successful – not before!! !"#$$%&"
  • 6. When Devs Do Ops ! 6 !  Starting Point! !  Finding Helpers! !  Challenges and Solutions! !  Looking back! !"#$$%&"
  • 7. Focus on what you do best… ! 7 and get help for the rest ! !  Amazon Web Services! !  Easy to scale up and down! !  No limitations! !  Scalarium! !  Making operation of a large cluster easy! !  Provides default setup! !  New Relic! !  Profiling of application at runtime! !  Info from HTTP request down to SQL query! !"#$$%&"
  • 8. When Devs Do Ops ! 8 !  Starting Point! !  Finding Helpers! !  Challenges and Solutions! !  Looking back! !"#$$%&"
  • 9. Challenge:
 9 Growing traffic ! 1,200,000 1,000,000 800,000 600,000 400,000 200,000 0 4/22/14 5/22/14 6/22/14 7/22/14 8/22/14 9/22/14 10/22/14 11/22/14 !"#$$%&"
  • 10. Solution:
 10 Automate to scale up and out easily ! !  Scaling up! !  Application servers: 2 cores => 8 cores! !  DB servers: 7.5GB => 68GB! !  Scaling out! !  Application servers: 2 => up to 50! !  MySQL servers: 2 => 16 => 8! !  Easy installation by automation! !  Chef recipes managed by Scalarium make that easy! !"#$$%&"
  • 11. Challenge:
 11 Idle servers cost money, too! peak : valley ratio 20:1 @ VZ 5:1 @ FB !"#$$%&"
  • 12. Solution! 12 Run servers only when needed! !  Scalarium offers time and load based instances! !  Start and stop instances based on time! !  Start and stop instances based on load! !"#$$%&"
  • 13. Solution! 13 Run servers only when needed! !"#$$%&"
  • 14. Challenge ! 14 No application is perfect ! !  Do you know your applicationʼs behavior?! !  How is it used?! !  Whatʼs the throughput right now?! !  What HTTP requests stress the DB most?! !  What did change in the last release?! !  How up-to-date is your information?! !  Can you compare performance now with last weekʼs?! !"#$$%&"
  • 15. Solution! 15 New Relic provides trace information! !"#$$%&"
  • 16. Solution
 16 New Relic provides overviews ! !"#$$%&"
  • 17. Solution
 17 New Relic provides custom charts ! !  Screenshot: Scalarium! !"#$$%&"
  • 18. Challenge! 18 Itʼs hard to scale out MySQL! !  Caching requests would not work! !  Almost all HTTP requests were changing something in DB! !  We optimized our MySQL configuration! !  Perconaʼs XtraDB, innodb_flush_method = O_DIRECT! !  Patches to ActiveRecord and data_fabric gem! !  Still I/O performance of EBS was a hard limit! !  Maximum of 1,000 write transactions / sec / server! !  But already 5,000 writes / sec at peak for 8 masters! !  So we sharded our MySQL databases! !  But handling 16 DBs is no fun…! !  … and at that time we only had 300,000 users! !"#$$%&"
  • 19. Solution! 19 Pick a DB thatʼs better suited! !  Redis was our choice! !  Master runs in-memory only (45,000 writes / sec / server)! !  Slaves backup data to disk every 15 minutes! !  Rich data model that is way beyond simple key/value! !  We migrated most write heavy tables to Redis! !  Currently Redis has 2.5x transactions / sec than MySQL! !  But MySQL has still more data (256 GB vs. 40 GB)! !"#$$%&"
  • 20. Challenge
 20 Handling Data (Bases) is hard! !  MySQL has its problems! !  Making a backup of 64GB takes about 30 minutes…! !  But restoring it can take 6 hours or more! !  Redis is not perfect, too! !  Memory consumption of process grows over time! !  If too much memory is used backup to disk no longer works! !  Every two weeks we had to replace servers to “reset” RAM! !"#$$%&"
  • 21. Challenge
 21 Redis memory fragmentation! !"#$$%&"
  • 22. “Solution”
 22 Automated setups always helps ! !  Replacing MySQL DBs! !  Start up new master / slave and restore backup! !  Make master slave of existing slave! !  Wait until replication in sync again (some hours)! !  Switch to new master and remove old master / slave! E0V&" 40V&" E0V=" 40V=" !  Replacing Redis DBs! !  Same procedure as above! !  But everything can be done in 30 minutes! !"#$$%&"
  • 23. When Devs Do Ops ! 23 !  Starting Point! !  Finding Helpers! !  Challenges and Solutions! !  Looking back! !"#$$%&"
  • 24. We still have only 2 backend
 24 developers to operate this! !"#$$%&"
  • 25. Know what it means
 25 to be in a Cloud ! !  Using a cloud has some disadvantages! !  Another game with dedicated HW has 8x better performance! !  I/O and network performance of EC2 is quite … err … limited! !  You cannot pick the best hardware possible! !  All hosts have the same chance of failure! !  But offers unique advantages! !  Having unlimited servers on demand is just awesome!! !  You pay only for what you need when you need it! !  You can concentrate on your product! !  Itʼs very easy to experiment! !"#$$%&"
  • 26. Play to its strengths
 26 and adjust for its weaknesses ! !  Play to its strengths! !  Program your infrastructure, automate as much as possible! !  Measure closely and react to changes! !  Scaling up and out is quite easy! !  Sit back and relax…! !  And adjust for its weaknesses! !  Avoid I/O – consider an in memory database or caching! !  Be prepared that every host can fail! !"#$$%&"
  • 27. Thank you! ! 27 ps. wooga.com/jobs jesper@wooga.com !"#$$%&"