Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

L. Rajlich Case Study Zynga - Scaling From 100 to 100 Million Users Social Developer Summit

2,551 views

Published on

Social Developer Summit

  • Be the first to comment

L. Rajlich Case Study Zynga - Scaling From 100 to 100 Million Users Social Developer Summit

  1. 2. Scaling From 0 to 100 Million Users Luke Rajlich June 29, 2010
  2. 3. Agenda <ul><li>FarmVille Growth </li></ul><ul><li>Design Motiviations </li></ul><ul><li>The Platform </li></ul><ul><li>Tooling </li></ul><ul><li>Team </li></ul>07/02/10 | © Zynga. All Rights Reserved.
  3. 4. 07/02/10 | © Zynga. All Rights Reserved. <ul><li>Rocketship Growth after launch </li></ul><ul><ul><li>1M daily users in 4 days </li></ul></ul><ul><ul><li>2M daily users in 10 days </li></ul></ul><ul><ul><li>4M daily users in 30 days </li></ul></ul><ul><ul><li>10M daily users in 64 days </li></ul></ul><ul><li>Largest social game at launch: 5M daily users. </li></ul>FarmVille Growth
  4. 5. Design Motivations <ul><li>We make games </li></ul><ul><li>Highly transactional workload. </li></ul><ul><li>Large ratio of writes to reads. </li></ul><ul><li>Small amounts of data. </li></ul><ul><li>Highly Variable load </li></ul>07/02/10 | © Zynga. All Rights Reserved.
  5. 6. Design Motivations <ul><li>We move fast </li></ul><ul><li>Rapid growth </li></ul><ul><li>Facilitate rapid development of new features </li></ul><ul><li>Simplified systems cost estimation and ramp up </li></ul>07/02/10 | © Zynga. All Rights Reserved.
  6. 7. The Platform <ul><li>PHP + APC </li></ul><ul><li>Heavy use of memcache </li></ul><ul><li>Schema-less design </li></ul>07/02/10 | © Zynga. All Rights Reserved. LAMP stack Cloud <ul><li>EC2 </li></ul><ul><li>Elastic web server clusters </li></ul><ul><li>Push-button Provisioning </li></ul>
  7. 8. Tooling <ul><li>Monitoring </li></ul><ul><ul><li>Nagios, Munin, Collectd </li></ul></ul><ul><ul><li>Custom instrumentation and dashboards </li></ul></ul><ul><li>Configuration </li></ul><ul><ul><li>Puppet, yum </li></ul></ul><ul><ul><li>Custom runtime configuration tooling </li></ul></ul><ul><li>Deployment </li></ul><ul><ul><li>Hudson </li></ul></ul>07/02/10 | © Zynga. All Rights Reserved.
  8. 9. Tooling Example <ul><li>Runtime Tool – Dynamic Server Configuration </li></ul><ul><ul><li>Web Servers pull config from a central store </li></ul></ul><ul><ul><li>Fast and reliable changes without deploying new code </li></ul></ul>07/02/10 | © Zynga. All Rights Reserved.
  9. 10. The Team <ul><li>Sometimes overlooked part of scaling </li></ul><ul><li>Cross Train </li></ul><ul><li>Extensive documentation </li></ul><ul><ul><li>Incident diary </li></ul></ul><ul><ul><li>Operations Runbook </li></ul></ul>07/02/10 | © Zynga. All Rights Reserved.
  10. 11. General Advice <ul><li>Asynchronous Processing </li></ul><ul><li>Degrade services </li></ul><ul><ul><li>Identify and implement the operational modes for backend services </li></ul></ul><ul><li>Feature on/off switches </li></ul><ul><li>Double check network timeouts </li></ul><ul><ul><li>defaults tend to be way too long </li></ul></ul><ul><li>Instrument performance </li></ul>07/02/10 | © Zynga. All Rights Reserved.

×