108
EVOLUTION Jesper Richter-Reichhelm (@jrirei)

Evoloution of Ideas

  • Upload
    wooga

  • View
    1.019

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Evoloution of Ideas

EVOLUTIONJesper Richter-Reichhelm (@jrirei)

Page 2: Evoloution of Ideas
Page 3: Evoloution of Ideas

BackendClient

Page 4: Evoloution of Ideas

BackendClient

Page 5: Evoloution of Ideas

BackendClient

Page 6: Evoloution of Ideas

BackendClient

Page 7: Evoloution of Ideas

Game Evolution

Iterative improvements

Page 8: Evoloution of Ideas

Wooga team

FE Dev

BE Dev

Art

Product

Page 9: Evoloution of Ideas

“You build it, you run it. - Werner Vogels

Page 10: Evoloution of Ideas

BackendClient

Page 11: Evoloution of Ideas

Monster World

Page 12: Evoloution of Ideas
Page 13: Evoloution of Ideas

SQL

app

lb

SQL

Browser

sql sql

appapp

Page 14: Evoloution of Ideas
Page 15: Evoloution of Ideas
Page 16: Evoloution of Ideas

Things we did

Many small optimisations

Bigger databases…

… many, many more of them

Page 17: Evoloution of Ideas

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

Page 18: Evoloution of Ideas

app

slave

master master

slave slave

master master

slave

AC

AC

BD

BD

AC

AC

BD

BD

Page 19: Evoloution of Ideas

Stateless approach

1+ million users / day

10+ billion requests / month

~10 DB writes / request

> 100,000 DB writes / second

Page 20: Evoloution of Ideas

http://www.flickr.com/photos/biblicone/3425903181/sizes/l/in/photostream/

Page 21: Evoloution of Ideas

Things we did

Many small optimisations

Bigger databases…

… many, many more of them

… and finally the right thing!

Page 22: Evoloution of Ideas
Page 23: Evoloution of Ideas
Page 24: Evoloution of Ideas
Page 25: Evoloution of Ideas
Page 26: Evoloution of Ideas

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

Page 27: Evoloution of Ideas

EBSSQLBrowserlb

lb

lb

lb

app

app

app

app

app

app

app app

Page 28: Evoloution of Ideas

EBSSQLBrowserlb

lb

lb

lb

app

app

app

app

app

app

app app

Page 29: Evoloution of Ideas

EBSSQLBrowserlb

lb

lb

lb

app

app

app

app

app

app

app app

Page 30: Evoloution of Ideas

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

Page 31: Evoloution of Ideas

flickr.com/photos/qubodup/9244593352

Page 32: Evoloution of Ideas

Why did we survive?

Page 33: Evoloution of Ideas

Dev Ops

Page 34: Evoloution of Ideas

Tech Evolution

Spreading and mutating ideas

Page 35: Evoloution of Ideas

Wooga teams

Page 36: Evoloution of Ideas

Freedom

Page 37: Evoloution of Ideas
Page 38: Evoloution of Ideas

Magic Land

Page 39: Evoloution of Ideas

Server Database

Page 40: Evoloution of Ideas

Server Database

One Game Session

Page 41: Evoloution of Ideas

Stateful approach

1+ million users / day

4 sessions / user / day

1 DB write / session

~50 DB writes / second

Page 42: Evoloution of Ideas
Page 43: Evoloution of Ideas

Server

sessionsessionsessionsession

Server

sessionsessionsessionsession

Server

sessionsessionsessionsession

S3

Page 44: Evoloution of Ideas

http://www.flickr.com/photos/aigle_dore/

Page 45: Evoloution of Ideas

Tech Stack

Page 46: Evoloution of Ideas

2009

Ruby

LAMP

statelessBB BI

MW

Page 47: Evoloution of Ideas

Redis HH

LAMP

statelessBB BI

Ruby MW MW 2

Ruby MW MW 2

2010

Page 48: Evoloution of Ideas

LAMP

statelessBB BI

Redis HH

Ruby MW MW 2

2010

Page 49: Evoloution of Ideas

Erlang

statefulML

2011

Redis

Ruby

LAMP

statelessBB BI

MW

HH

MW 2

Erlang

statefulML

Page 50: Evoloution of Ideas

offline

DD

Erlang

statefulML

2011

Redis

Ruby

Riak

Javascript

ev. Ruby

1 doc

LAMP

statelessBB BI

MW

HH

MW 2

PI

PP

MWM

Page 51: Evoloution of Ideas

2012

Erlang

Redis

Ruby

stateful

Riak

Javascript

offline

ev. Ruby

1 doc

JRuby

shared

LAMP

multiplay

statelessBB BI

MW

HH

MW 2

ML

DD

PI

PP

MWM PV

GX

FT

KB

BI 2

Page 52: Evoloution of Ideas

2013

Erlang

Redis

Ruby

stateful

Riak

Javascriptrealtime

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

Page 53: Evoloution of Ideas

2014

Erlang

Redis

Ruby

stateful

Riak

Javascriptrealtime

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

… …

Page 54: Evoloution of Ideas

Erlang

Redis

Ruby

stateful

Riak

Javascriptrealtime

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

Page 55: Evoloution of Ideas

Erlang

Redis

Ruby

stateful

Riak

Javascriptrealtime

offline

ev. Ruby

1 doc

JRuby Scala

shared

Go

Elixir

hybrid

LAMP

generic

multiplay

stateless

services2015

MySQLPHP

Page 56: Evoloution of Ideas

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.

Page 57: Evoloution of Ideas

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’stoolbox

Page 58: Evoloution of Ideas

Why does that work?

Page 59: Evoloution of Ideas

Reproduction

Page 60: Evoloution of Ideas

flickr.com/groups/bestfavoriterelayrace/

Rotating jobs

Page 61: Evoloution of Ideas

Selection and recombination

Page 62: Evoloution of Ideas

Exchanging knowledge

flickr.com/photos/wili/233621595

Page 63: Evoloution of Ideas

Being transparent

flickr.com/photos/marcomagrini/698692268

Page 64: Evoloution of Ideas

Mutation

Page 65: Evoloution of Ideas

Freedom

Page 66: Evoloution of Ideas

Having trust

Page 67: Evoloution of Ideas

Evolution

Page 68: Evoloution of Ideas

Company Evolution

There is more…

Page 69: Evoloution of Ideas

Switch to Mobile

Page 70: Evoloution of Ideas

PI

MWM PV

Switch to Mobile HTML5

BB BI

MW

HH

MW 2

ML

Page 71: Evoloution of Ideas

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

Page 72: Evoloution of Ideas

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

Page 73: Evoloution of Ideas

Hit Filter

Page 74: Evoloution of Ideas

1,000 new mobile games per week

Page 75: Evoloution of Ideas

$-

$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

… 50 1 2 3 4 5 6 7 8 9 10 … 100 …200

Top Grossing Rank

Top ranks reap most revenues

Estimated gross sales per day

Page 76: Evoloution of Ideas
Page 77: Evoloution of Ideas
Page 78: Evoloution of Ideas
Page 79: Evoloution of Ideas

Should have stopped earlier

Page 80: Evoloution of Ideas
Page 81: Evoloution of Ideas

Question Regularly

Page 82: Evoloution of Ideas

… …

GX

JS

DIV

AA

BB BI

MW

HH

MW 2

ML

DD

PI

PP

MWM PV

FT

KB

BI 2

Hit FilterSD / DYN

Hit Filter

Page 83: Evoloution of Ideas

What does that mean?

Page 84: Evoloution of Ideas
Page 85: Evoloution of Ideas

Evolution

…is the key for survival

Page 86: Evoloution of Ideas

Repeatedly create hits

Bubble island Monster World Diamond Dash Pearl’s Peril Jelly Splash

Page 87: Evoloution of Ideas

Dev Ops

Page 88: Evoloution of Ideas

Embrace Evolution!

Page 89: Evoloution of Ideas

Questions?

Jesper Richter-Reichhelm (@jrirei)

Page 90: Evoloution of Ideas

Questions?

Jesper Richter-Reichhelm (@jrirei)

Page 91: Evoloution of Ideas
Page 92: Evoloution of Ideas
Page 93: Evoloution of Ideas
Page 94: Evoloution of Ideas

Nothing is better than

Centralised decision making

Top down decisions

Building a monolith

… if you want maximum efficiency!

Page 95: Evoloution of Ideas

Wooga is different

Page 96: Evoloution of Ideas

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

Page 97: Evoloution of Ideas

<Reproduction>

Page 98: Evoloution of Ideas

Reproduction

Page 99: Evoloution of Ideas

<Selection and recombination>

Page 100: Evoloution of Ideas

Recombination

Page 101: Evoloution of Ideas

<Mutation>

Page 102: Evoloution of Ideas

Mutation

Page 103: Evoloution of Ideas

EvolutionReproduction Recombination Mutation

Page 104: Evoloution of Ideas

2009 New Business Model

Page 105: Evoloution of Ideas

BB BI

MW

HH

MW 2

ML

DD

PI

PP

MWM PV

SBS

DYN

GX

FT

KB

BI 2

DIV

… …

…New Business Model

IAP

ad game

Page 106: Evoloution of Ideas

2015 Embracing Android

Page 107: Evoloution of Ideas

… …

DD

PI

PP

MWM PV

JS

GX

BI 2

DIV

Embracing Android HTML5

Obj. C

Apportable

ext. Android

SDDYN

Unity

BB BI

MW

HH

MW 2

ML

Android

AA

Page 108: Evoloution of Ideas

Major milestones

2009 Business Model

2011 Mobile

2013 Hit Filter

2015 Embracing Android