Real WorldRails Deployment    Alan Hecht
Deployment Options• Heroku - PaaS• Shared Web Hosting• Virtual Private Server• Amazon Web Services - IaaS
Heroku - PaaS• No setup & no system administration  -   Easy to deploy• Free when using one web process  -   Pay as you sc...
Shared Web Hosting• Cheap - $5 to $10 per month• Web hosting control panel (i.e. cPanel) to  configure web server & web ap...
Virtual Private Server• Starts at around $25 per month• Extremely flexible, can load anything you want• System administrat...
Amazon Web Services - IaaS• Building a virtual data center  • Netflix runs on AWS• Can load instances with a pre-built O/S...
Running Rails• WEBrick should only be used in a  development environment• Need a web server to handle static  requests  - ...
Web Server• Apache & Nginx the two most popular  choices• Rack is used as an interface between  the web server and Rails
Apache• Most popular web server and has the  many options & features• Process-based web server• Good for handling dynamic ...
Nginx• Light weight web server that only  handles static content• Event-based web server• Low memory usage
Apache or Nginx• Pick one - either works• Nginx better on a VPS because of low  memory usage• Apache is full-featured• Ngi...
Rails Web App Servers• Phusion Passenger, Thin, and Unicorn  currently the most widely used Rails app  servers• Can be ins...
Phusion Passenger• Acts as an Apache or Nginx module• Philosophy – same as Rails (DRY,  convention over configuration)• Ea...
Thin• Event based Rails server• Philosophy – tiny, fast, and secure• Used by Heroku
Unicorn• Process-based Rails server• Philosophy – Unicorn is Unix• Used by Twitter & GitHub
Nginx + Unicorn Architecture
Sample Nginx Configuration
Which One?• People have built scalable sites with all  three• Thin & Unicorn need configuration,  Passenger does not• Perf...
Capistrano•Tool for deploying Rails (or Rack)applications•Similar in structure to Rakefile
Sample Capistrano Script
What Does a Scalable Site Architecture Look Like?          Content Delivery Network                Nginx SSL              ...
Upcoming SlideShare
Loading in...5
×

Real World Rails Deployment

2,561

Published on

ATLRUG Emerald City presentation given on June 16, 2012

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,561
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
22
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Real World Rails Deployment

  1. 1. Real WorldRails Deployment Alan Hecht
  2. 2. Deployment Options• Heroku - PaaS• Shared Web Hosting• Virtual Private Server• Amazon Web Services - IaaS
  3. 3. Heroku - PaaS• No setup & no system administration - Easy to deploy• Free when using one web process - Pay as you scale• App will idle after inactivity if only using one process (“dyno”)• Additional “dyno” + database > 5MB is $50/month
  4. 4. Shared Web Hosting• Cheap - $5 to $10 per month• Web hosting control panel (i.e. cPanel) to configure web server & web application• Limited to what is on the server• Not recommended - Constrained by CPU usage
  5. 5. Virtual Private Server• Starts at around $25 per month• Extremely flexible, can load anything you want• System administration knowledge required - Must maintain server• Good for one or two standalone servers
  6. 6. Amazon Web Services - IaaS• Building a virtual data center • Netflix runs on AWS• Can load instances with a pre-built O/S• Pay as you scale• Most expensive option
  7. 7. Running Rails• WEBrick should only be used in a development environment• Need a web server to handle static requests - Images, HTML, JavaScript, CSS• Need a Ruby web application server to handle Rails requests (i.e. Unicorn, Thin, or Passenger)
  8. 8. Web Server• Apache & Nginx the two most popular choices• Rack is used as an interface between the web server and Rails
  9. 9. Apache• Most popular web server and has the many options & features• Process-based web server• Good for handling dynamic content via modules
  10. 10. Nginx• Light weight web server that only handles static content• Event-based web server• Low memory usage
  11. 11. Apache or Nginx• Pick one - either works• Nginx better on a VPS because of low memory usage• Apache is full-featured• Nginx does a few things well
  12. 12. Rails Web App Servers• Phusion Passenger, Thin, and Unicorn currently the most widely used Rails app servers• Can be installed as a web server plugin or as a separate Ruby Gem
  13. 13. Phusion Passenger• Acts as an Apache or Nginx module• Philosophy – same as Rails (DRY, convention over configuration)• Easy to deploy & maintain - No separate configuration file
  14. 14. Thin• Event based Rails server• Philosophy – tiny, fast, and secure• Used by Heroku
  15. 15. Unicorn• Process-based Rails server• Philosophy – Unicorn is Unix• Used by Twitter & GitHub
  16. 16. Nginx + Unicorn Architecture
  17. 17. Sample Nginx Configuration
  18. 18. Which One?• People have built scalable sites with all three• Thin & Unicorn need configuration, Passenger does not• Performance depends on the application - “Hello World” apps not useful for profiling
  19. 19. Capistrano•Tool for deploying Rails (or Rack)applications•Similar in structure to Rakefile
  20. 20. Sample Capistrano Script
  21. 21. What Does a Scalable Site Architecture Look Like? Content Delivery Network Nginx SSL HA ProxyNginx Nginx Nginx + + +Unicorn Unicorn Unicorn
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×