SlideShare una empresa de Scribd logo
1 de 214
PAINFUL SUCCESS
Jesper Richter-Reichhelm (@jrirei) / session 4853
Monday, 18 March 13
InfoQ.com: News & Community Site
• 750,000 unique visitors/month
• Published in 4 languages (English, Chinese, Japanese and Brazilian
Portuguese)
• Post content from our QCon conferences
• News 15-20 / week
• Articles 3-4 / week
• Presentations (videos) 12-15 / week
• Interviews 2-3 / week
• Books 1 / month
Watch the video with slide
synchronization on InfoQ.com!
http://www.infoq.com/presentations
/scalability-case-study
Presented at QCon London
www.qconlondon.com
Purpose of QCon
- to empower software development by facilitating the spread of
knowledge and innovation
Strategy
- practitioner-driven conference designed for YOU: influencers of
change and innovation in your teams
- speakers and topics driving the evolution and innovation
- connecting and catalyzing the influencers and innovators
Highlights
- attended by more than 12,000 delegates since 2007
- held in 9 cities worldwide
Pain
Monday, 18 March 13
Monday, 18 March 13
Monday, 18 March 13
Monday, 18 March 13
Flash client Backend
Monday, 18 March 13
7M players / month
Monday, 18 March 13
7M players / month
10K API calls / second
Monday, 18 March 13
7M players / month
10K API calls / second
200K DB operations / second
Monday, 18 March 13
7M players / month
10K API calls / second
200K DB operations / second
100K DB writes / second
Monday, 18 March 13
7M players / month
10K API calls / second
200K DB operations / second
100K DB writes / second
2 devops since 2009
Monday, 18 March 13
Success
Monday, 18 March 13
Monday, 18 March 13
Monday, 18 March 13
Painful Success
Monday, 18 March 13
Painful Success
Monday, 18 March 13
2009
Decisions
Monday, 18 March 13
Monday, 18 March 13
Monday, 18 March 13
What is the right
software stack?
Monday, 18 March 13
Monday, 18 March 13
Monday, 18 March 13
Monday, 18 March 13
SQL
ap
lb
SQL
Browser
sql sql
apap
Monday, 18 March 13
2010
Scaling Up
Monday, 18 March 13
Monday, 18 March 13
Monday, 18 March 13
0%#
20%#
40%#
60%#
80%#
100%#
0# 5# 10# 15# 20# 25# 30# 35# 40#
Monday, 18 March 13
0%#
20%#
40%#
60%#
80%#
100%#
0# 5# 10# 15# 20# 25# 30# 35# 40#
Monday, 18 March 13
0%#
20%#
40%#
60%#
80%#
100%#
0# 5# 10# 15# 20# 25# 30# 35# 40#
Monday, 18 March 13
Small things...
Monday, 18 March 13
AMF responses
Monday, 18 March 13
Checking connection
‘status’
Monday, 18 March 13
ActiveRecord caching
Monday, 18 March 13
Always check back
on reality!
Lesson 1:
Monday, 18 March 13
Big Things...
Monday, 18 March 13
Lot’s of tuning
Monday, 18 March 13
Lot’s of tuning
and more memory
Monday, 18 March 13
app
slave
master
Monday, 18 March 13
app
slave
master master
slave
1. create new DBs
Monday, 18 March 13
app
slave
master master
slave
1. create new DBs
2. setup replication
Monday, 18 March 13
app
slave
master master
slave
1. create new DBs
2. setup replication
Monday, 18 March 13
app
slave
master master
slave
1. create new DBs
2. setup replication
3. start using
masters
Monday, 18 March 13
app
slave
master master
slave
1. create new DBs
2. setup replication
3. start using
masters
4. cut replication
Monday, 18 March 13
app
master
slave
1. create new DBs
2. setup replication
3. start using
masters
4. cut replication
Monday, 18 March 13
app
slave
master master
slave
1. create new DBs
2. setup replication
3. start using
masters
Monday, 18 March 13
app
slave
master master
slave
1. create new DBs
2. setup replication
3. start using
masters
4. remove old DBs
Monday, 18 March 13
app
master
slave
1. create new DBs
2. setup replication
3. start using
masters
4. remove old DBs
Monday, 18 March 13
app
slave
master master
slave
1. create new DBs
2. setup replication
3. start using
masters
Monday, 18 March 13
app
slave
master master
slave
1. create new DBs
2. setup replication
3. start using
masters
4. drop database;
Monday, 18 March 13
app
slave
master master
slave
1. create new DBs
2. setup replication
3. start using
masters
4. drop database;
Monday, 18 March 13
app
slave
master master
slave
1. create new DBs
2. setup replication
3. start using
masters
4. drop database;
Monday, 18 March 13
app
slave
master master
slave
1. create new DBs
2. setup replication
3. start using
masters
4. drop database;
Monday, 18 March 13
app
slave
master master
slave
1. create new DBs
2. setup replication
3. start using
masters
4. drop database;
Monday, 18 March 13
app
1. create new DBs
2. setup replication
3. start using
masters
4. drop database;
Monday, 18 March 13
app
1. create new DBs
2. setup replication
3. start using
masters
4. drop database;
Monday, 18 March 13
You will make
mistakes!
Lesson 2:
Monday, 18 March 13
More things...
Monday, 18 March 13
app
slave
master master
slave
1. create new DBs
2. setup replication
3. start using
masters
4. cut replication
Monday, 18 March 13
app
slave
master master
slave
1. create new DBs
2. setup replication
3. start using
masters
4. cut replication
AB
AB
AB
AB
Monday, 18 March 13
app
slave
master master
slave
1. create new DBs
2. setup replication
3. start using
masters
BA
AB
AB
AB
AB
Monday, 18 March 13
app
slave
master master
slave
1. create new DBs
2. setup replication
3. start using
masters
4. cut replication
BA
AB
AB
AB
AB
Monday, 18 March 13
app
slave
master master
slave
1. create new DBs
2. setup replication
3. start using
masters
4. cut replication
BA
AB
AB
AB
AB
Monday, 18 March 13
app
slave
master master
slave slave
master master
slave
AC
AC
BD
BD
Monday, 18 March 13
app
slave
master master
slave slave
master master
slave
AC
AC
BD
BD
AC
AC
BD
BD
Monday, 18 March 13
app
slave
master master
slave slave
master master
slave
AC
AC
BD
BD
AC
AC
BD
BD
Monday, 18 March 13
app
slave
master master
slave slave
master master
slave
AC
AC
BD
BD
AC
AC
BD
BD
Monday, 18 March 13
The right thing...
Monday, 18 March 13
Monday, 18 March 13
Monday, 18 March 13
Monday, 18 March 13
Software is easy,
data is hard!
Lesson 3:
Monday, 18 March 13
24 GB
44 GB
in 8 days
Monday, 18 March 13
Not enough memory
Monday, 18 March 13
Not enough memory
=> no backups
Monday, 18 March 13
Not enough memory
=> no backups
=> no new slaves
Monday, 18 March 13
Not enough memory
=> no backups
=> no new slaves
=> big problem
Monday, 18 March 13
24 GB
38 GB
in 3 days
Monday, 18 March 13
24 GB
38 GB
in 3 days
Fixed in v2.2
Monday, 18 March 13
2011
Operation Hell
Monday, 18 March 13
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
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
lb lblblb
Monday, 18 March 13
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
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
lb lblblb
Monday, 18 March 13
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
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
SQL
EBS EBS EBS EBS
lb lblblb
Monday, 18 March 13
EBSSQLBrowser
lb
lb
lb
lb
ap
ap
ap
ap
ap
ap
ap ap
Monday, 18 March 13
EBSSQLBrowser
lb
lb
lb
lb
ap
ap
ap
ap
ap
ap
ap ap
Monday, 18 March 13
EBSSQLBrowser
lb
lb
lb
lb
ap
ap
ap
ap
ap
ap
ap ap
Monday, 18 March 13
EBSSQLBrowser
lb
lb
lb
lb
ap
ap
ap
ap
ap
ap
ap ap
Monday, 18 March 13
EBSSQLBrowser
lb
lb
lb
lb
ap
ap
ap
ap
ap
ap
ap ap
Monday, 18 March 13
EBSSQLBrowser
lb
lb
lb
lb
ap
ap
ap
ap
ap
ap
ap ap
Monday, 18 March 13
EBSSQLBrowser
lb
lb
lb
lb
ap
ap
ap
ap
ap
ap
ap ap
Monday, 18 March 13
EBSSQLBrowser
lb
lb
lb
lb
ap
ap
ap
ap
ap
ap
ap ap
Monday, 18 March 13
0"
500,000"
1,000,000"
1,500,000"
2,000,000"
Apr*10" Jul*10" Oct*10" Jan*11" Apr*11" Jul*11" Oct*11"
Monday, 18 March 13
0"
500,000"
1,000,000"
1,500,000"
2,000,000"
Apr*10" Jul*10" Oct*10" Jan*11" Apr*11" Jul*11" Oct*11"
AWS outage
in Ireland
Monday, 18 March 13
http://en.wikipedia.org/wiki/File:St%C3%B6wer_Titanic.jpg
Monday, 18 March 13
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
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
lb lblblb
Monday, 18 March 13
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
SQL SQL SQL SQL SQL
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
lb lblblb
Monday, 18 March 13
Monday, 18 March 13
Installed in 3 years:
Monday, 18 March 13
Installed in 3 years:
98 MySQL machines
Monday, 18 March 13
Installed in 3 years:
98 MySQL machines
195 Redis machines
Monday, 18 March 13
Monday, 18 March 13
Monday, 18 March 13
Monday, 18 March 13
Monday, 18 March 13
2012/2013
Refactoring
Monday, 18 March 13
Lessons learned
Monday, 18 March 13
Server Database
Monday, 18 March 13
Server Database
Monday, 18 March 13
Server Database
Monday, 18 March 13
Server Database
Monday, 18 March 13
Server Database
Monday, 18 March 13
Server Database
Monday, 18 March 13
Server Database
Monday, 18 March 13
Server Database
Monday, 18 March 13
Server Database
Monday, 18 March 13
Server Database
One Game Session
Monday, 18 March 13
Server Database
One Game Session
Monday, 18 March 13
Rd
rd
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
SQL SQL SQL SQL SQL
ap apap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap apap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
lb lblblb
Monday, 18 March 13
Rd
rd
ap apap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap apap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
lb lblblb
Monday, 18 March 13
Rd
rd
ap apap
lb lblblb
Monday, 18 March 13
Monday, 18 March 13
1. Separate user and world DBs
Monday, 18 March 13
1. Separate user and world DBs
2. Migrate to JRuby
Monday, 18 March 13
1. Separate user and world DBs
2. Migrate to JRuby
3. Introduce life cycle
Monday, 18 March 13
1. Separate user and world DBs
2. Migrate to JRuby
3. Introduce life cycle
4. Remove (user) DBs
Monday, 18 March 13
1. Separate user and world DBs
2. Migrate to JRuby
3. Introduce life cycle
4. Remove (user) DBs
5. Enjoy!
Monday, 18 March 13
Separate user DBs
Monday, 18 March 13
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
SQL SQL SQL SQL
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
Rd
rd
lb lblblb
Monday, 18 March 13
SQL SQL
sql
Rd Rd
rd rd
Rd Rd
rd rd
Rd Rd
rd rd
Rd Rd
rd rd
SQL SQL SQL SQL
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
Rd
rd
SQL SQL
sql sql
SQL SQL
sql sql
SQL
sql
lb lblblb
Monday, 18 March 13
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
SQL SQL SQL SQL
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
Rd
rd
SQL
sql
SQL
lb lblblb
Monday, 18 March 13
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
SQL SQL SQL SQL
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
Rd
rd
SQL
sql
SQL
Rd
rd
Rd
rd
lb lblblb
Monday, 18 March 13
JRuby
Monday, 18 March 13
http://www.flickr.com/photos/biblicone/3425903181/sizes/l/in/photostream/
Monday, 18 March 13
JRuby v2
Monday, 18 March 13
0
50
100
150
200
Rails 2.3.11
MRI 1.8.7
Throughput
Monday, 18 March 13
0
50
100
150
200
Rails 2.3.11
MRI 1.8.7
Rails 3.2.8
MRI 1.8.7
Throughput
Monday, 18 March 13
0
50
100
150
200
Rails 2.3.11
MRI 1.8.7
Rails 3.2.8
MRI 1.8.7
Rails 3.2.8
MRI 1.9.3
Throughput
Monday, 18 March 13
0
50
100
150
200
Rails 2.3.11
MRI 1.8.7
Rails 3.2.8
MRI 1.8.7
Rails 3.2.8
MRI 1.9.3
Rails 3.2.8
JRuby 1.7.2
Throughput
Monday, 18 March 13
0
50
100
150
200
Rails 2.3.11
MRI 1.8.7
Rails 3.2.8
MRI 1.8.7
Rails 3.2.8
MRI 1.9.3
Rails 3.2.8
JRuby 1.7.2
Throughput
no benchmark
Monday, 18 March 13
0
50
100
150
200
Rails 2.3.11
MRI 1.8.7
Rails 3.2.8
MRI 1.8.7
Rails 3.2.8
MRI 1.9.3
Rails 3.2.8
JRuby 1.7.2
Throughput
no benchmark
Monday, 18 March 13
0
50
100
150
200
Rails 2.3.11
MRI 1.8.7
Rails 3.2.8
MRI 1.8.7
Rails 3.2.8
MRI 1.9.3
Rails 3.2.8
JRuby 1.7.2
Throughput
no benchmark
multi
threaded
Monday, 18 March 13
0
50
100
150
200
Rails 2.3.11
MRI 1.8.7
Rails 3.2.8
MRI 1.8.7
Rails 3.2.8
MRI 1.9.3
Rails 3.2.8
JRuby 1.7.2
Throughput
no benchmark
multi
threaded
tuning
Monday, 18 March 13
0
50
100
150
200
Rails 2.3.11
MRI 1.8.7
Rails 3.2.8
MRI 1.8.7
Rails 3.2.8
MRI 1.9.3
Rails 3.2.8
JRuby 1.7.2
Throughput
no benchmark
multi
threaded
tuning
cpu
saturation
Monday, 18 March 13
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
SQL SQL SQL SQL SQL
ap apap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap apap ap ap
ap ap
ap ap
ap ap
ap ap
ap ap
ap ap
ap ap
ap ap ap ap ap ap ap ap ap apap ap ap
lb lblblb
Monday, 18 March 13
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
SQL SQL SQL SQL SQL
ap apap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap apap ap ap
lb lblblb
ap
ap
ap
ap
ap
ap
ap
ap
ap
ap
ap
ap
ap
ap
Monday, 18 March 13
Monday, 18 March 13
Monday, 18 March 13
Monday, 18 March 13
NEW OLD
Monday, 18 March 13
NEW OLD
Monday, 18 March 13
NEW OLD
Monday, 18 March 13
NEW OLD
Monday, 18 March 13
Life cycle
Monday, 18 March 13
app
Monday, 18 March 13
app
Monday, 18 March 13
app
servlet
Monday, 18 March 13
app
servlet archiver
Monday, 18 March 13
User
Registry
app
servlet archiver
Monday, 18 March 13
User
Registry
S3
app
servlet archiver
Monday, 18 March 13
User
Registry
SQL Rd
S3
app
servlet archiver
Monday, 18 March 13
User
Registry
SQL Rd
S3
app
servlet archiver
Monday, 18 March 13
World
Data
User
Registry
SQL Rd
S3
app
servlet archiver
Monday, 18 March 13
World
Data
User
Registry
SQL Rd
S3
Load Balancer
app
servlet archiver
Monday, 18 March 13
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
SQL SQL SQL SQL
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
Rd
rd
SQL
sql
SQL
Rd
rd
Rd
rd
lb lblblb
Monday, 18 March 13
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
SQL SQL SQL SQL
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
Rd
rd
SQL
sql
SQL
Rd
rd
Rd
rd
Rd
rd
lb lblblb
Monday, 18 March 13
Removing DBs
Monday, 18 March 13
SQL SQL
sql
Rd
rd
Rd
rd
Rd
rd
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
Rd
rd
SQL
sql
SQLSQL SQL
sql sql
SQL SQL
sql sql
Rd Rd
rd rd
Rd Rd
rd rd
Rd
rd
SQL SQL SQL SQL
Rd
rd
Rd
rd
Rd
rd
lb lblblb
Monday, 18 March 13
SQL SQL
sql
Rd
rd
Rd
rd
Rd
rd
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
Rd
rd
SQL
sql
SQL
Rd
rd
Rd
rd
lb lblblb
Monday, 18 March 13
SQL
sql
Rd
rd
Rd
rd
Rd
rd
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
Rd
rd
SQL
sql
SQL
Rd
rd
Rd
rd
lb lblblb
Monday, 18 March 13
Enjoy
Monday, 18 March 13
SQL
sql
Rd
rd
Rd
rd
Rd
rd
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
Rd
rd
SQL
sql
SQL
Rd
rd
Rd
rd
lb lblblb
Monday, 18 March 13
Rd
rd
Rd
rd
Rd
rd
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
Rd
rd
SQL
sql
SQL
Rd
rd
Rd
rd
lb lblblb
Monday, 18 March 13
Rd
rd
Rd
rd
Rd
rd
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
ap apap ap ap ap ap ap ap ap ap apap ap ap
Rd
rd
Rd
rd
Rd
rd
lb lblblb
Monday, 18 March 13
http://www.flickr.com/photos/aigle_dore/
Monday, 18 March 13
http://www.flickr.com/photos/aigle_dore/
Monday, 18 March 13
Looking Back
Monday, 18 March 13
What is the right
software stack?
Monday, 18 March 13
Monday, 18 March 13
Monday, 18 March 13
What is the right
software stack?
Monday, 18 March 13
What is the right
software stack?
Monday, 18 March 13
What kind of application
are we building?
Monday, 18 March 13
User
Monday, 18 March 13
User
Avatar
Monday, 18 March 13
User
Avatar
Cus-
tomer
Monday, 18 March 13
User
GardenAvatar
Cus-
tomer
Monday, 18 March 13
User
GardenAvatar
Cus-
tomer
Tiles
Deco-
rations
Monday, 18 March 13
User
GardenAvatar
Cus-
tomer
Tiles
Deco-
rations
Monday, 18 March 13
User
GardenAvatar
Cus-
tomer
Tiles
Deco-
rations
User
GardenAvatar
Cus-
tomer
Tiles
Deco-
rations
Monday, 18 March 13
User
GardenAvatar
Cus-
tomer
Tiles
Deco-
rations
User
GardenAvatar
Cus-
tomer
Tiles
Deco-
rations
Monday, 18 March 13
http://en.wikipedia.org/wiki/File:Columbus_Breaking_the_Egg%27_(Christopher_Columbus)_by_William_Hogarth.jpg
Monday, 18 March 13
http://en.wikipedia.org/wiki/File:Columbus_Breaking_the_Egg%27_(Christopher_Columbus)_by_William_Hogarth.jpg
Monday, 18 March 13
http://en.wikipedia.org/wiki/File:Columbus_Breaking_the_Egg%27_(Christopher_Columbus)_by_William_Hogarth.jpg
Monday, 18 March 13
http://en.wikipedia.org/wiki/File:Columbus_Breaking_the_Egg%27_(Christopher_Columbus)_by_William_Hogarth.jpg
Monday, 18 March 13
http://en.wikipedia.org/wiki/File:Columbus_Breaking_the_Egg%27_(Christopher_Columbus)_by_William_Hogarth.jpg
Monday, 18 March 13
What kind of application
are we building?
Monday, 18 March 13
Monday, 18 March 13
Monday, 18 March 13
Monday, 18 March 13
Monday, 18 March 13
Monday, 18 March 13
Plain File System
Monday, 18 March 13
Monday, 18 March 13
Handle state
the right way!
Monday, 18 March 13
Software is easy,
data is hard!
Lesson 3:
Monday, 18 March 13
You will make
mistakes!
Lesson 2:
Monday, 18 March 13
Always check back
on reality!
Lesson 1:
Monday, 18 March 13
Always check back
on your assumptions!
Lesson 1:
Monday, 18 March 13
Thank you
Monday, 18 March 13
Jesper Richter-Reichhelm
@jrirei
woo.ga/backend
wooga.com/jobs
Monday, 18 March 13
Jesper Richter-
Reichhelm
@jrirei
wooga.com/jobs
woo.ga/backend
Monday, 18 March 13
Watch the video with slide synchronization on
InfoQ.com!
http://www.infoq.com/presentations/scalability
-case-study

Más contenido relacionado

Similar a Painful Success - Lessons Learned while Scaling Up

Awright openanalytics-mapmeter
Awright openanalytics-mapmeter Awright openanalytics-mapmeter
Awright openanalytics-mapmeter
Open Analytics
 
Avoiding Regressions in 3rd Party JavaScript
Avoiding Regressions in 3rd Party JavaScriptAvoiding Regressions in 3rd Party JavaScript
Avoiding Regressions in 3rd Party JavaScript
Cameron Westland
 

Similar a Painful Success - Lessons Learned while Scaling Up (20)

Arbitrage on Amazon: Exploiting the Textbook Trade-ins with Python
Arbitrage on Amazon: Exploiting the Textbook Trade-ins with PythonArbitrage on Amazon: Exploiting the Textbook Trade-ins with Python
Arbitrage on Amazon: Exploiting the Textbook Trade-ins with Python
 
Awright openanalytics-mapmeter
Awright openanalytics-mapmeter Awright openanalytics-mapmeter
Awright openanalytics-mapmeter
 
How Sumo Logic And Anki Build Highly Resilient Services On AWS To Manage Mass...
How Sumo Logic And Anki Build Highly Resilient Services On AWS To Manage Mass...How Sumo Logic And Anki Build Highly Resilient Services On AWS To Manage Mass...
How Sumo Logic And Anki Build Highly Resilient Services On AWS To Manage Mass...
 
PostgreSQL Hooks for Fun and Profit
PostgreSQL Hooks for Fun and ProfitPostgreSQL Hooks for Fun and Profit
PostgreSQL Hooks for Fun and Profit
 
PHPDay 2013 - High Performance PHP
PHPDay 2013 - High Performance PHPPHPDay 2013 - High Performance PHP
PHPDay 2013 - High Performance PHP
 
Metasepi team meeting #16: Safety on ATS language + MCU
Metasepi team meeting #16: Safety on ATS language + MCUMetasepi team meeting #16: Safety on ATS language + MCU
Metasepi team meeting #16: Safety on ATS language + MCU
 
Presentationnosqlmah
PresentationnosqlmahPresentationnosqlmah
Presentationnosqlmah
 
Intridea ajn-rttos OA NYC Summit
Intridea ajn-rttos OA NYC SummitIntridea ajn-rttos OA NYC Summit
Intridea ajn-rttos OA NYC Summit
 
Why Isn't My Query Using an Index? An Introduction to SQL Performance
Why Isn't My Query Using an Index? An Introduction to SQL PerformanceWhy Isn't My Query Using an Index? An Introduction to SQL Performance
Why Isn't My Query Using an Index? An Introduction to SQL Performance
 
Drupal and Cloud Containers
Drupal and Cloud ContainersDrupal and Cloud Containers
Drupal and Cloud Containers
 
My mom told me that Git doesn’t scale by Vicent Martí
My mom told me that Git doesn’t scale by Vicent MartíMy mom told me that Git doesn’t scale by Vicent Martí
My mom told me that Git doesn’t scale by Vicent Martí
 
Writing & Sharing Great Modules on the Puppet Forge - Puppet Camp Raleigh
Writing & Sharing Great Modules on the Puppet Forge - Puppet Camp RaleighWriting & Sharing Great Modules on the Puppet Forge - Puppet Camp Raleigh
Writing & Sharing Great Modules on the Puppet Forge - Puppet Camp Raleigh
 
Architecting for Change: QCONNYC 2012
Architecting for Change: QCONNYC 2012Architecting for Change: QCONNYC 2012
Architecting for Change: QCONNYC 2012
 
HTML5 is the future of mobile
 HTML5 is the future of mobile HTML5 is the future of mobile
HTML5 is the future of mobile
 
The WordPress Hacker's Guide to the \Galaxy() [@Baltimore PHP]
The WordPress Hacker's Guide to the \Galaxy() [@Baltimore PHP]The WordPress Hacker's Guide to the \Galaxy() [@Baltimore PHP]
The WordPress Hacker's Guide to the \Galaxy() [@Baltimore PHP]
 
Wphackergalaxy
WphackergalaxyWphackergalaxy
Wphackergalaxy
 
The WordPress Hacker's Guide to the \Galaxy() [@MidwestPHP]
The WordPress Hacker's Guide to the \Galaxy() [@MidwestPHP]The WordPress Hacker's Guide to the \Galaxy() [@MidwestPHP]
The WordPress Hacker's Guide to the \Galaxy() [@MidwestPHP]
 
Scaling postgres
Scaling postgresScaling postgres
Scaling postgres
 
Avoiding Regressions in 3rd Party JavaScript
Avoiding Regressions in 3rd Party JavaScriptAvoiding Regressions in 3rd Party JavaScript
Avoiding Regressions in 3rd Party JavaScript
 
Bring the Noise
Bring the NoiseBring the Noise
Bring the Noise
 

Más de C4Media

Más de C4Media (20)

Streaming a Million Likes/Second: Real-Time Interactions on Live Video
Streaming a Million Likes/Second: Real-Time Interactions on Live VideoStreaming a Million Likes/Second: Real-Time Interactions on Live Video
Streaming a Million Likes/Second: Real-Time Interactions on Live Video
 
Next Generation Client APIs in Envoy Mobile
Next Generation Client APIs in Envoy MobileNext Generation Client APIs in Envoy Mobile
Next Generation Client APIs in Envoy Mobile
 
Software Teams and Teamwork Trends Report Q1 2020
Software Teams and Teamwork Trends Report Q1 2020Software Teams and Teamwork Trends Report Q1 2020
Software Teams and Teamwork Trends Report Q1 2020
 
Understand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java ApplicationsUnderstand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java Applications
 
Kafka Needs No Keeper
Kafka Needs No KeeperKafka Needs No Keeper
Kafka Needs No Keeper
 
High Performing Teams Act Like Owners
High Performing Teams Act Like OwnersHigh Performing Teams Act Like Owners
High Performing Teams Act Like Owners
 
Does Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to JavaDoes Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to Java
 
Service Meshes- The Ultimate Guide
Service Meshes- The Ultimate GuideService Meshes- The Ultimate Guide
Service Meshes- The Ultimate Guide
 
Shifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CDShifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CD
 
CI/CD for Machine Learning
CI/CD for Machine LearningCI/CD for Machine Learning
CI/CD for Machine Learning
 
Fault Tolerance at Speed
Fault Tolerance at SpeedFault Tolerance at Speed
Fault Tolerance at Speed
 
Architectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep SystemsArchitectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep Systems
 
ML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.jsML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.js
 
Build Your Own WebAssembly Compiler
Build Your Own WebAssembly CompilerBuild Your Own WebAssembly Compiler
Build Your Own WebAssembly Compiler
 
User & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix ScaleUser & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix Scale
 
Scaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's EdgeScaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's Edge
 
Make Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home EverywhereMake Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home Everywhere
 
The Talk You've Been Await-ing For
The Talk You've Been Await-ing ForThe Talk You've Been Await-ing For
The Talk You've Been Await-ing For
 
Future of Data Engineering
Future of Data EngineeringFuture of Data Engineering
Future of Data Engineering
 
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and MoreAutomated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More
 

Último

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 

Último (20)

Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 

Painful Success - Lessons Learned while Scaling Up