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.

Evoloution of Ideas

1,225 views

Published on

Presentation about Wooga's Engineering Culture and how ideas evolve by Jesper Richter-Reichhelm at Dahoam Conference in Munich.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Evoloution of Ideas

  1. 1. EVOLUTION Jesper Richter-Reichhelm (@jrirei)
  2. 2. BackendClient
  3. 3. BackendClient
  4. 4. BackendClient
  5. 5. BackendClient
  6. 6. Game Evolution Iterative improvements
  7. 7. Wooga team FE Dev BE Dev Art Product
  8. 8. “You build it, you run it. - Werner Vogels
  9. 9. BackendClient
  10. 10. Monster World
  11. 11. SQL app lb SQL Browser sql sql appapp
  12. 12. Things we did Many small optimisations Bigger databases… … many, many more of them
  13. 13. app slave master master slave 1. create new DBs 2. setup replication 3. start using masters 4. cut replication 5. truncate data BA AB AB AB AB
  14. 14. app slave master master slave slave master master slave AC AC BD BD AC AC BD BD
  15. 15. Stateless approach 1+ million users / day 10+ billion requests / month ~10 DB writes / request > 100,000 DB writes / second
  16. 16. http://www.flickr.com/photos/biblicone/3425903181/sizes/l/in/photostream/
  17. 17. Things we did Many small optimisations Bigger databases… … many, many more of them … and finally the right thing!
  18. 18. SQL SQL sql sql SQL SQL sql sql SQL SQL sql Rd Rd rd rd Rd Rd rd rd Rd Rd rd rd Rd Rd rd rd app appapp app app app app app app app app appapp app app app appapp app app app app app app app app appapp app app app appapp app app app app app app app app appapp app app app appapp app app app app app app app app appapp app app app appapp app app app app app app app app appapp app app app appapp app app app app app app app app appapp app app app appapp app app app app app app app app appapp app app SQL EBS EBS EBS EBS lb lblblb
  19. 19. EBSSQLBrowser lb lb lb lb app app app app app app app app
  20. 20. EBSSQLBrowser lb lb lb lb app app app app app app app app
  21. 21. EBSSQLBrowser lb lb lb lb app app app app app app app app
  22. 22. SQL SQL sql sql SQL SQL sql sql SQL SQL sql Rd Rd rd rd Rd Rd rd rd Rd Rd rd rd Rd Rd rd rd app appapp app app app app app app app app appapp app app app appapp app app app app app app app app appapp app app app appapp app app app app app app app app appapp app app app appapp app app app app app app app app appapp app app app appapp app app app app app app app app appapp app app app appapp app app app app app app app app appapp app app app appapp app app app app app app app app appapp app app SQL EBS EBS EBS EBS lb lblblb 38 single points of failure
  23. 23. flickr.com/photos/qubodup/9244593352
  24. 24. Why did we survive?
  25. 25. Dev Ops
  26. 26. Tech Evolution Spreading and mutating ideas
  27. 27. Wooga teams
  28. 28. Freedom
  29. 29. Magic Land
  30. 30. Server Database
  31. 31. Server Database One Game Session
  32. 32. Stateful approach 1+ million users / day 4 sessions / user / day 1 DB write / session ~50 DB writes / second
  33. 33. Server sessionsessionsessionsession Server sessionsessionsessionsession Server sessionsessionsessionsession S3
  34. 34. http://www.flickr.com/photos/aigle_dore/
  35. 35. Tech Stack
  36. 36. 2009 Ruby LAMP stateless BB BI MW
  37. 37. Redis HH LAMP stateless BB BI Ruby MW MW 2 Ruby MW MW 2 2010
  38. 38. LAMP stateless BB BI Redis HH Ruby MW MW 2 2010
  39. 39. Erlang stateful ML 2011 Redis Ruby LAMP stateless BB BI MW HH MW 2 Erlang stateful ML
  40. 40. offline DD Erlang stateful ML 2011 Redis Ruby Riak Javascript ev. Ruby 1 doc LAMP stateless BB BI MW HH MW 2 PI PP MWM
  41. 41. 2012 Erlang Redis Ruby stateful Riak Javascript offline ev. Ruby 1 doc JRuby shared LAMP multiplay stateless BB BI MW HH MW 2 ML DD PI PP MWM PV GX FT KB BI 2
  42. 42. 2013 Erlang Redis Ruby stateful Riak Javascript realtime offline ev. Ruby 1 doc JRuby Scala shared LAMP generic multiplay stateless services BB BI MW HH MW 2 ML DD PI PP MWM PV SBS DYN GX FT KB BI 2 DIV …
  43. 43. 2014 Erlang Redis Ruby stateful Riak Javascript realtime offline ev. Ruby 1 doc JRuby Scala shared LAMP generic multiplay stateless services BB BI MW HH MW 2 ML DD PI PP MWM PV SBS DYN GX FT KB BI 2 DIV … …
  44. 44. Erlang Redis Ruby stateful Riak Javascript realtime offline ev. Ruby 1 doc JRuby Scala shared Go Elixir hybrid LAMP generic multiplay stateless services BB BI MW HH MW 2 ML DD PI PP MWM PV SBS DYN GX FT KB BI 2 DIV … … … … … 2015
  45. 45. Erlang Redis Ruby stateful Riak Javascript realtime offline ev. Ruby 1 doc JRuby Scala shared Go Elixir hybrid LAMP generic multiplay stateless services2015 MySQLPHP
  46. 46. PHP MySQL Erlang RedisRuby stateful Riak Javascript realtime offline ev. Ruby 1 doc JRuby Scala shared Go Elixir hybrid generic multiplay stateless services Languages DBs State mngt. Misc.
  47. 47. PHP MySQL Erlang RedisRuby stateful Riak Javascript realtime offline ev. Ruby 1 doc JRuby Scala shared Go Elixir hybrid generic multiplay stateless services Languages DBs State mngt. Misc. Wooga’s toolbox
  48. 48. Why does that work?
  49. 49. Reproduction
  50. 50. flickr.com/groups/bestfavoriterelayrace/ Rotating jobs
  51. 51. Selection and recombination
  52. 52. Exchanging knowledge flickr.com/photos/wili/233621595
  53. 53. Being transparent flickr.com/photos/marcomagrini/698692268
  54. 54. Mutation
  55. 55. Freedom
  56. 56. Having trust
  57. 57. Evolution
  58. 58. Company Evolution There is more…
  59. 59. Switch to Mobile
  60. 60. PI MWM PV Switch to Mobile HTML5 BB BI MW HH MW 2 ML
  61. 61. DD PI PP MWM PV JS GX BI 2 DIV HTML5 Obj. C Apportable ext. Android BB BI MW HH MW 2 ML Switch to Mobile
  62. 62. DD PI PP MWM PV JS GX BI 2 DIV HTML5 Obj. C Apportable ext. Android SD / DYN … … … … … AAUnity BB BI MW HH MW 2 ML Switch to Mobile
  63. 63. Hit Filter
  64. 64. 1,000 new mobile games per week
  65. 65. $- $500,000 $1,000,000 $1,500,000 $2,000,000 $2,500,000 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99 … 501 2 3 4 5 6 7 8 9 10 … 100 …200 Top Grossing Rank Top ranks reap most revenues Estimated gross sales per day
  66. 66. Should have stopped earlier
  67. 67. Question Regularly
  68. 68. … … … … … GX JS DIV AA BB BI MW HH MW 2 ML DD PI PP MWM PV FT KB BI 2 Hit Filter SD / DYN Hit Filter
  69. 69. What does that mean?
  70. 70. Evolution …is the key for survival
  71. 71. Repeatedly create hits Bubble island Monster World Diamond Dash Pearl’s Peril Jelly Splash
  72. 72. Dev Ops
  73. 73. Embrace Evolution!
  74. 74. Questions? Jesper Richter-Reichhelm (@jrirei)
  75. 75. Questions? Jesper Richter-Reichhelm (@jrirei)
  76. 76. Nothing is better than Centralised decision making Top down decisions Building a monolith … if you want maximum efficiency!
  77. 77. Wooga is different
  78. 78. Wooga wants The ability to quickly adapt to change Survive disruptions and benefit from them To attract strong people We give transparency and trust, we want impact Resiliency and robustness Long-term perspective vs. short-term goals
  79. 79. <Reproduction>
  80. 80. Reproduction
  81. 81. <Selection and recombination>
  82. 82. Recombination
  83. 83. <Mutation>
  84. 84. Mutation
  85. 85. Evolution Reproduction Recombination Mutation
  86. 86. 2009 New Business Model
  87. 87. BB BI MW HH MW 2 ML DD PI PP MWM PV SBS DYN GX FT KB BI 2 DIV … … … … … New Business ModelIAP ad game
  88. 88. 2015 Embracing Android
  89. 89. … … … … … DD PI PP MWM PV JS GX BI 2 DIV Embracing Android HTML5 Obj. C Apportable ext. Android SD DYN Unity BB BI MW HH MW 2 ML Android AA
  90. 90. Major milestones 2009 Business Model 2011 Mobile 2013 Hit Filter 2015 Embracing Android

×