Slideshare.net (beta)

 
Post: 
Myspace Hi5 Friendster Xanga LiveJournal Facebook Blogger Tagged Typepad Freewebs BlackPlanet gigya icons



All comments

Add a comment on Slide 1

If you have a SlideShare account, login to comment; else you can comment as a guest


Showing 1-50 of 23 (more)

Deploying Rails Applications

From vivek_prahlad, 1 year ago

Covers the different options for scaling Rails applications, Nginx more

7661 views  |  0 comments  |  22 favorites  |  7 embeds (Stats)
 

Tags

barcampbangalore3 rails deployment monit nginx mongrel scale ror thoughtworks ruby

more

 
 

Groups/Events

 
 

Privacy InfoNew!

This slideshow is Public

 
Embed in your blog
Embed (wordpress.com)
custom

Slideshow Statistics
Total Views: 7661
on Slideshare: 7573
from embeds: 88* * Views from embeds since 21 Aug, 07

Slideshow transcript

Slide 1: Deploying Rails Applications Vivek Prahlad © ThoughtWorks, 2006

Slide 2: Agenda Typical Rails deployment scenarios  Mongrel  Nginx vs. Apache vs. Lighttpd  Shared vs. Virtual vs. Dedicated hosting  Monitoring Rails Applications  © ThoughtWorks, 2006 2

Slide 3: Typical Rails Deployment Setup Web Server Rails App Database (Static Content) (Mongrel) (MySQL / PostgreSQL) © ThoughtWorks, 2006

Slide 4: Lots of Static content? Load Balancer Web Server Rails App Database ) (Static Content) (Mongrel) (MySQL / PostgreSQL) Cluster © ThoughtWorks, 2006

Slide 5: Heavy database load? Web Server Rails App Database (Static Content) (Mongrel) (MySQL / PostgreSQL) Cluster © ThoughtWorks, 2006

Slide 6: Very dynamic application? Web Server Rails App Database (Static Content) (Mongrel) (MySQL / PostgreSQL) Cluster © ThoughtWorks, 2006

Slide 7: Installing the stack using Deprec cd /path/to/railsapp  deprec --apply-to . --name projectname --domain  www.projectname.com # edit config/deploy.rb to add svn details  cap install_rails_stack  cap setup  cap deploy_with_migrations  cap restart_apache  © ThoughtWorks, 2006 7

Slide 8: Mongrel © ThoughtWorks, 2006

Slide 9: Mongrel Pure Ruby web server for Ruby applications  Supports Rails, Camping, Og + Nitro  Need a cluster due to Rails threadsafety issue  Significant footprint increase with Rails 1.2  • Approximately 60MB / Mongrel / Mephisto instance Dash B logging for detecting memory leaks  © ThoughtWorks, 2006 9

Slide 10: © ThoughtWorks, 2006

Slide 11: Nginx Web server from Igor Sysoev: best used as a reverse  proxy Rapidly becoming preferred choice of Rails community  10MB footprint with 10,000 concurrent connections  Load balancing  Weighted load balancing  Relatively straightforward configuration  © ThoughtWorks, 2006 11

Slide 12: Nginx vs. Apache Apache: Relatively Larger footprint  Thread per request  Nginx: Low footprint  Non blocking IO  © ThoughtWorks, 2006 12

Slide 13: Issues with Lighttpd Stability  Memory leaks  Non-trivial URL rewriting  © ThoughtWorks, 2006 13

Slide 14: Nginx: configuring mongrel upstream mongrel { server 127.0.0.1:10000; server 127.0.0.1:10001; } proxy_pass http://mongrel; © ThoughtWorks, 2006 14

Slide 15: Nginx: load balancing upstream backend { server backend1.example.com weight=5; server backend2.example.com:8080; server unix:/tmp/backend3; } © ThoughtWorks, 2006 15

Slide 16: Nginx: Caveats Primary documentation in Russian  • (Documentation is rapidly improving, though) No X-sendfile support (useful for serving large files)  Virtual host support poor  © ThoughtWorks, 2006 16

Slide 17: Rails Hosting Rails 1.2+ unsuitable for shared hosting  Most shared hosts have published / unpublished  memory caps • Textdrive: 47 MB per process Dedicated hosting expensive  • Starts at ~ $70 per month (e.g. ServerPronto) © ThoughtWorks, 2006 17

Slide 18: Virtual Private Server (VPS) Hosting Fits in between Shared and Dedicated hosting  Nice performance / price ratio (starts @ $20 / month)  Can potentially exploit superior hardware  Alternatives:  • Xen • Virtuzzo Baked in kernel level virtualization support is coming  Caveat: Need to manage your own setup  © ThoughtWorks, 2006 18

Slide 19: Advantages of VPS hosting Entire CPU available when other users are idle.  Disk I/O usually faster than dedicated box (due to RAID  etc.) Can take advantage of SANs if required.  Hosting company takes care of the VPS server  Fairly easy to scale VPS setup (just add more VMs)  © ThoughtWorks, 2006 19

Slide 20: Monitoring Rails applications Monit (http://www.tideslash.com/monit)  Process monitoring tool  Can monitor:  • HTTP server • Processes • Databases (MySQL and PostgreSQL) © ThoughtWorks, 2006 20

Slide 21: Cron Jobs Clear stale sessions  Database maintenance  Clear logs  Best practice: get Cron to call out to a script  Don't hardcode commands in the crontab  Makes it easy to test  © ThoughtWorks, 2006 21

Slide 22: Putting it all together Can use Monit to create 'self healing' setup  PostgresQL  Nginx  Mongrel  Cron  © ThoughtWorks, 2006 22

Slide 23: Additional Information http://nginx.net/  http://railsexpress.de/blog (performance tuning)  http://hostingfu.com (blog on hosting)  http://www.slideshare.net/Georgio_1999/how-to-scale-your-web-app/  (scaling Rails) © ThoughtWorks, 2006 23

Slide 24: Thank You http://blog.vivekprahlad.com/ © ThoughtWorks, 2006