87

Railscale

Embed Size (px)

DESCRIPTION

How to scale a rails application on several nodes, including master slave replication and a key value store...

Citation preview

Page 1: Railscale
Page 2: Railscale

Application

Page 3: Railscale
Page 4: Railscale

Data Structure

Page 5: Railscale

100.000 Users

Page 6: Railscale

1 Million Interests

Page 7: Railscale

5 Million Status Messages

Page 8: Railscale

13 Million Friendships

Page 9: Railscale

19.100.000 Data Tuples

Page 10: Railscale

Actions

Page 11: Railscale

ProfileReads Statuses, Friends and Interests

Page 12: Railscale

BefriendWrites 2 Friends

Page 13: Railscale

DefriendWrites 2 Friends

Page 14: Railscale

StatusWrites 1* Status

Page 15: Railscale

LoginWrites 1 User

Page 16: Railscale

Simulation

Page 17: Railscale

30 Minutes

Page 18: Railscale

20 Minutes Ramp Up

Page 19: Railscale

3 Thread Groups

Page 20: Railscale

20, 10 and 5 concurrent Requests

Page 21: Railscale

Hardware

Page 22: Railscale

5 Boxes

Page 23: Railscale

Dual and Quad Core 2.5 GHZ

Page 24: Railscale

2 to 4 GB RAM

Page 25: Railscale

100 Mega Bit Network

Page 26: Railscale

Setups

Page 27: Railscale

4 Setups

Page 28: Railscale

Passenger. Rails 3. Capistrano.

Page 29: Railscale

Default Rails Installation1 Box. Nginx. MySQL.

Page 30: Railscale

Default Rails Installation1 Box. Nginx. MySQL.

AppDatabase

Page 31: Railscale

Distributed Rails Installation3 Boxes. 2 Nginx Boxes. 1 MySQL Box.

Page 32: Railscale

Distributed Rails Installation3 Boxes. 2 Nginx Boxes. 1 MySQL Box.

LBApp

App

Database

Page 33: Railscale

Distributed Rails Installation3 Boxes. 2 Nginx Boxes. 2 Replicated MySQL Boxes.

Page 34: Railscale

Distributed Rails Installation3 Boxes. 2 Nginx Boxes. 1 Redis Box.

Page 35: Railscale

Distributed Rails Installation3 Boxes. 2 Nginx Boxes. 1 Redis Box.

LBApp

App

Redis

Page 36: Railscale

Distributed Rails Installation5 Boxes. 4 Nginx Boxes. 1 Redis Box.

Page 37: Railscale

Distributed Rails Installation5 Boxes. 4 Nginx Boxes. 1 Redis Box.

LBApp

AppRedis

App

App

Page 38: Railscale

Performance

Page 39: Railscale

Default Rails Installation1 Box. Nginx. MySQL.

Page 40: Railscale

Default Rails Installation1 Box. Nginx. MySQL.

Page 41: Railscale

Default Rails Installation1 Box. Nginx. MySQL.

Page 42: Railscale

Default Rails Installation1 Box. Nginx. MySQL.

Page 43: Railscale

Default Rails Installation1 Box. Nginx. MySQL.

Page 44: Railscale

Default Rails Installation1 Box. Nginx. MySQL.

Page 45: Railscale

Default Rails Installation1 Box. Nginx. MySQL.

Page 46: Railscale

48.755 Requests / 30 Minutes

Page 47: Railscale

27 Requests / Second

Page 48: Railscale

Distributed Rails Installation3 Boxes. 2 Nginx Boxes. 1 MySQL Box.

Page 49: Railscale

Distributed Rails Installation3 Boxes. 2 Nginx Boxes. 1 MySQL Box.

Page 50: Railscale

Distributed Rails Installation3 Boxes. 2 Nginx Boxes. 1 MySQL Box.

Page 51: Railscale

Distributed Rails Installation3 Boxes. 2 Nginx Boxes. 1 MySQL Box.

Page 52: Railscale

Distributed Rails Installation3 Boxes. 2 Nginx Boxes. 1 MySQL Box.

Page 53: Railscale

Distributed Rails Installation3 Boxes. 2 Nginx Boxes. 1 MySQL Box.

Page 54: Railscale

Distributed Rails Installation3 Boxes. 2 Nginx Boxes. 1 MySQL Box.

Page 55: Railscale

62.138 Requests / 30 Minutes

Page 56: Railscale

35 Requests / Second

Page 57: Railscale

Distributed Rails Installation3 Boxes. 2 Nginx Boxes. 1 Redis Box.

Page 58: Railscale

Distributed Rails Installation3 Boxes. 2 Nginx Boxes. 1 Redis Box.

Page 59: Railscale

Distributed Rails Installation3 Boxes. 2 Nginx Boxes. 1 Redis Box.

Page 60: Railscale

Distributed Rails Installation3 Boxes. 2 Nginx Boxes. 1 Redis Box.

Page 61: Railscale

Distributed Rails Installation3 Boxes. 2 Nginx Boxes. 1 Redis Box.

Page 62: Railscale

Distributed Rails Installation3 Boxes. 2 Nginx Boxes. 1 Redis Box.

Page 63: Railscale

95.861 Requests / 30 Minutes

Page 64: Railscale

53 Requests / Second

Page 65: Railscale

Distributed Rails Installation5 Boxes. 4 Nginx Boxes. 1 Redis Box.

Page 66: Railscale

Distributed Rails Installation5 Boxes. 4 Nginx Boxes. 1 Redis Box.

Page 67: Railscale

Distributed Rails Installation5 Boxes. 4 Nginx Boxes. 1 Redis Box.

Page 68: Railscale

Distributed Rails Installation5 Boxes. 4 Nginx Boxes. 1 Redis Box.

Page 69: Railscale

Distributed Rails Installation5 Boxes. 4 Nginx Boxes. 1 Redis Box.

Page 70: Railscale

Distributed Rails Installation5 Boxes. 4 Nginx Boxes. 1 Redis Box.

Page 71: Railscale

Distributed Rails Installation5 Boxes. 4 Nginx Boxes. 1 Redis Box.

Page 72: Railscale

397.896 Requests / 30 Minutes

Page 73: Railscale

111 Requests / Second

Page 74: Railscale

411% faster

Page 75: Railscale

Performance Coding

Page 76: Railscale

No Joins

Page 77: Railscale

user.friend_ids = “234, 2546, 123, 4, ...”

Page 78: Railscale

SELECT * FROM user WHERE id IN (user.friend_ids)

Page 79: Railscale

Publish / Subscribe Redundancy

Page 80: Railscale

friends

user_3_feed

user_4_feed

user_9_feed

user_12_feed

user_43_feed

new status

new status

new status

new status

new status

new status

Page 81: Railscale

Read Feed? Lookup Key.

Page 82: Railscale

Current State

Page 83: Railscale

Fully Hardware Scaleable.

Page 84: Railscale

How far?

Page 85: Railscale

Done.

Page 87: Railscale

Volker TietzThomas Fankhauser