Real World Rails Deployment
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Real World Rails Deployment

on

  • 3,366 views

ATLRUG Emerald City presentation given on June 16, 2012

ATLRUG Emerald City presentation given on June 16, 2012

Statistics

Views

Total Views
3,366
Views on SlideShare
3,365
Embed Views
1

Actions

Likes
4
Downloads
17
Comments
0

1 Embed 1

http://www.hanrss.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Real World Rails Deployment Presentation Transcript

  • 1. Real WorldRails Deployment Alan Hecht
  • 2. Deployment Options• Heroku - PaaS• Shared Web Hosting• Virtual Private Server• Amazon Web Services - IaaS
  • 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. 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. 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. 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. 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. Web Server• Apache & Nginx the two most popular choices• Rack is used as an interface between the web server and Rails
  • 9. Apache• Most popular web server and has the many options & features• Process-based web server• Good for handling dynamic content via modules
  • 10. Nginx• Light weight web server that only handles static content• Event-based web server• Low memory usage
  • 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. 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. 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. Thin• Event based Rails server• Philosophy – tiny, fast, and secure• Used by Heroku
  • 15. Unicorn• Process-based Rails server• Philosophy – Unicorn is Unix• Used by Twitter & GitHub
  • 16. Nginx + Unicorn Architecture
  • 17. Sample Nginx Configuration
  • 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. Capistrano•Tool for deploying Rails (or Rack)applications•Similar in structure to Rakefile
  • 20. Sample Capistrano Script
  • 21. What Does a Scalable Site Architecture Look Like? Content Delivery Network Nginx SSL HA ProxyNginx Nginx Nginx + + +Unicorn Unicorn Unicorn