11. “FWIW: Twitter currently has no plans to
abandon RoR. Lots of our code is not in
RoR, already, though. Maybe that's why
people are confused.”
- Evan Williams, Twitter CEO
11 Scaling Rails: a system-wide approach to performance optimization
12. YellowPages
12 Scaling Rails: a system-wide approach to performance optimization
13. More users?
“Just throw hardware at it.”
13 Scaling Rails: a system-wide approach to performance optimization
14. Rails doesn’t scale
14 Scaling Rails: a system-wide approach to performance optimization
15. Hulu
15 Scaling Rails: a system-wide approach to performance optimization
16. Scribd
16 Scaling Rails: a system-wide approach to performance optimization
17. They scaled
They gave keynotes on
HOW
17 Scaling Rails: a system-wide approach to performance optimization
19. No general approaches to scaling
19 Scaling Rails: a system-wide approach to performance optimization
20. Problem Overview
20 Scaling Rails: a system-wide approach to performance optimization
21. < Problem Overview >
Rails doesn’t scale?
Twitter
YellowPages
Rails doesn’t scale?
Hulu
Scribd
General approaches to scaling?
21 Scaling Rails: a system-wide approach to performance optimization
22. < Motivation >
22 Scaling Rails: a system-wide approach to performance optimization
23. WEB
WEB
WEB
WEB
WEB
23 Scaling Rails: a system-wide approach to performance optimization
24. USERS
USERS
USERS
USERS
USERS
24 Scaling Rails: a system-wide approach to performance optimization
25. IMPORTANCE
IMPORTANCE
IMPORTANCE
IMPORTANCE
IMPORTANCE
25 Scaling Rails: a system-wide approach to performance optimization
26. Better web
26 Scaling Rails: a system-wide approach to performance optimization
27. Better tools
27 Scaling Rails: a system-wide approach to performance optimization
28. UX involves reasonable response
times and service uptime
28 Scaling Rails: a system-wide approach to performance optimization
29. Most recent tools are great
29 Scaling Rails: a system-wide approach to performance optimization
30. “Ruby on Rails is a breakthrough in lowering the
barriers of entry to programming. Powerful web
applications that formerly might have taken
weeks or months to develop can be produced in
a matter of days.”
- Tim O'Reilly, Founder of O'Reilly Media
30 Scaling Rails: a system-wide approach to performance optimization
31. Everything can be improved
There is no perfect tool
There are always pitfalls
31 Scaling Rails: a system-wide approach to performance optimization
33. Fixing pitfalls on great tools
Improving UX for everyone
33 Scaling Rails: a system-wide approach to performance optimization
34. Motivation Overview
34 Scaling Rails: a system-wide approach to performance optimization
35. < Motivation Overview >
Web keeps growing
More users, importance
Web 2.0
User Experience
Also dependant on:
Response times and availability
Recent tools are great
There are always pitfalls
Fixing pitfalls on great tools
Improving UX for everyone
35 Scaling Rails: a system-wide approach to performance optimization
36. < Goals >
36 Scaling Rails: a system-wide approach to performance optimization
37. What about scaling?
37 Scaling Rails: a system-wide approach to performance optimization
38. Everything is easy
Scaling should also be easy
38 Scaling Rails: a system-wide approach to performance optimization
39. Creation of
39 Scaling Rails: a system-wide approach to performance optimization
40. Guidelines and conventions
for high performance
Rails applications
40 Scaling Rails: a system-wide approach to performance optimization
41. Optimal Rails-oriented
configurations for every involved
component
41 Scaling Rails: a system-wide approach to performance optimization
42. Patches to improve the
components performance from a
Rails-perspective
42 Scaling Rails: a system-wide approach to performance optimization
43. Objectives Overview
43 Scaling Rails: a system-wide approach to performance optimization
44. < Objectives Overview >
Scaling should be easy
Creation of:
Generic guidelines and conventions
Optimal configurations
Patches for all components
All from a performance-oriented philosophy centered
in Ruby on Rails!
44 Scaling Rails: a system-wide approach to performance optimization
45. < State of the Art >
45 Scaling Rails: a system-wide approach to performance optimization
46. < Operating Systems >
46 Scaling Rails: a system-wide approach to performance optimization
47. Most used OS in servers: Linux
47 Scaling Rails: a system-wide approach to performance optimization
48. BSD faster than Linux
48 Scaling Rails: a system-wide approach to performance optimization
49. Linux faster than BSD
49 Scaling Rails: a system-wide approach to performance optimization
50. Linux Ruby 1.8 2x faster
than Windows Ruby 1.8
50 Scaling Rails: a system-wide approach to performance optimization
51. Linux Ruby 1.9 70% faster
than Windows Ruby 1.9
51 Scaling Rails: a system-wide approach to performance optimization
52. Rails widely deployed in Linux
52 Scaling Rails: a system-wide approach to performance optimization
53. < Ruby >
53 Scaling Rails: a system-wide approach to performance optimization
54. Ruby 1.8 is the most widely used
54 Scaling Rails: a system-wide approach to performance optimization
55. JRuby is the fastest implementation
55 Scaling Rails: a system-wide approach to performance optimization
56. Ruby 1.8 will soon be outdated
56 Scaling Rails: a system-wide approach to performance optimization
57. Ruby 1.9 will soon be outdated
57 Scaling Rails: a system-wide approach to performance optimization
58. Ruby 1.9 has only one interpreter
58 Scaling Rails: a system-wide approach to performance optimization
59. Ruby MRI 1.9
59 Scaling Rails: a system-wide approach to performance optimization
60. Ruby MRI 1.9
Rails bottleneck: GC
60 Scaling Rails: a system-wide approach to performance optimization
61. < Web servers >
61 Scaling Rails: a system-wide approach to performance optimization
62. Webrick
62 Scaling Rails: a system-wide approach to performance optimization
63. Webrick
Pioneer, slow
63 Scaling Rails: a system-wide approach to performance optimization
64. Mongrel
64 Scaling Rails: a system-wide approach to performance optimization
65. Mongrel
Much faster, excellent HTML parser
65 Scaling Rails: a system-wide approach to performance optimization
66. Thin
66 Scaling Rails: a system-wide approach to performance optimization
67. Thin
Mongrel’s HTML parser
67 Scaling Rails: a system-wide approach to performance optimization
68. Thin
New I/O back-end: EventMachine
68 Scaling Rails: a system-wide approach to performance optimization
69. Thin
Faster than those before
69 Scaling Rails: a system-wide approach to performance optimization
70. Passenger
70 Scaling Rails: a system-wide approach to performance optimization
71. Passenger
Not self-contained
71 Scaling Rails: a system-wide approach to performance optimization
72. Passenger
Module for Apache/Nginx
72 Scaling Rails: a system-wide approach to performance optimization
73. Passenger
Good performance, great at scaling
73 Scaling Rails: a system-wide approach to performance optimization
74. Thin is the fastest
Passenger scales better
74 Scaling Rails: a system-wide approach to performance optimization
75. < Database >
75 Scaling Rails: a system-wide approach to performance optimization
76. MySQL
76 Scaling Rails: a system-wide approach to performance optimization
77. PostgreSQL
77 Scaling Rails: a system-wide approach to performance optimization
78. MySQL is faster and more popular
78 Scaling Rails: a system-wide approach to performance optimization
84. Major improvement in all DB:
Caching, caching, caching!
84 Scaling Rails: a system-wide approach to performance optimization
85. < Rails >
85 Scaling Rails: a system-wide approach to performance optimization
86. Rails 2.3
86 Scaling Rails: a system-wide approach to performance optimization
87. Many performance pitfalls
improved in Rails 3
87 Scaling Rails: a system-wide approach to performance optimization
88. Rails 3
Beta release in February
88 Scaling Rails: a system-wide approach to performance optimization
89. Immediate need: form helpers, i18n
89 Scaling Rails: a system-wide approach to performance optimization
90. < Application >
90 Scaling Rails: a system-wide approach to performance optimization
91. Porting to Ruby 1.9 (from 1.8)
91 Scaling Rails: a system-wide approach to performance optimization
92. Porting to Rails 3 (from 2.3)
92 Scaling Rails: a system-wide approach to performance optimization
93. Check code for common pitfalls
Eager loading
Fetching records in batches
Database Indexes
Caching
93 Scaling Rails: a system-wide approach to performance optimization
94. < Methodology >
94 Scaling Rails: a system-wide approach to performance optimization
95. State of the Art narrows options down
95 Scaling Rails: a system-wide approach to performance optimization
96. Benchmarking
Controlled tests to choose the best
software for each component
96 Scaling Rails: a system-wide approach to performance optimization
97. Tweaking
Try out different configurations and
architectures
97 Scaling Rails: a system-wide approach to performance optimization
98. Testing
Measuring of results, finding bottlenecks
98 Scaling Rails: a system-wide approach to performance optimization
99. Developing
Improving over bottlenecks
99 Scaling Rails: a system-wide approach to performance optimization
100. Benchmarking
Tweaking
Testing
Developing
and
Improving
100 Scaling Rails: a system-wide approach to performance optimization
101. Recipe: repeat for all components
101 Scaling Rails: a system-wide approach to performance optimization
102. Rails perspective!
102 Scaling Rails: a system-wide approach to performance optimization
103. Escolinhas
103 Scaling Rails: a system-wide approach to performance optimization
104. 104 Scaling Rails: a system-wide approach to performance optimization
105. Butterfly Effect
105 Scaling Rails: a system-wide approach to performance optimization
106. 106 Scaling Rails: a system-wide approach to performance optimization
108. < Work schedule >
108 Scaling Rails: a system-wide approach to performance optimization
109. 109 Scaling Rails: a system-wide approach to performance optimization
110. Activity Start Date Duration (weeks)
OS testing and choosing 15/02/2010 1
OS kernel testing and tuning 22/02/2010 1
Web server testing and bottleneck research 01/03/2010 1
Web server bottleneck improvements 08/03/2010 1
Ruby interpreter testing and bottleneck research 15/03/2010 1
Ruby interpreter bottleneck improvements 22/03/2010 1.5
DB testing and bottleneck research 31/03/2010 1
DB bottleneck improvements 07/04/2010 1
Rails bottleneck research 14/04/2010 1
Rails bottleneck improvements 21/04/2010 2.5
Escolinhas analysis and bottleneck research 10/05/2010 1
Escolinhas improvements 07/05/2010 3
Writing of dissertation report 07/06/2010 4
110 Scaling Rails: a system-wide approach to performance optimization
111. < Thank you >
http://snaprails.tumblr.com
Gonçalo S. Silva
Advisor: Ademar Aguiar
http://goncalossilva.com
http://twitter.com/goncalossilva