I was just wondering if there was anybody here who'd worked in a
Service Management environment (ITIL for example).
I'm interested to know of tools for use with planning and managing
availability, capacity, continuity and security in a RoR environment.
Particularly the first two.
How easy is it to scale RoR? Can you easily have multiple server
instances for one service - if so, how do you do it, and what problems
do there tend to be? How can you predict performance and capacity?
I'm also interested in design and testing considerations.
Much of the above is not, I know, of much direct interest to
developers, but I'd hope that somebody has been involved with this!
I’m not necessarily an ITIL expert, but I’ve worked in environments and on projects where it was essential (technical infrastructure architecture, help desk application implementation) so I can probably get you pointed in the right direction. But because this has been a subject of real interest over the past few years as Ruby and Rails have matured for serious application development, there’s a lot of information available out there, so don’t stop your investigation here.
There are a lot of different tools that are used for managing Rails applications. The best known paid options are probably New Relic RPM (http://newrelic.com/) and Scout (https://scoutapp.com/) but there are plenty of open source options that are also used in various combinations (Monit, Nagios, Ganglia, …) The free options will cover infrastructure status/history and basic service availability just fine. If you need more advanced features like performance management, troubleshooting, and inputs for capacity planning, you might be better served by the paid applications.
As far as scaling goes, there was a series of videos and podcasts done a few years back called Scaling Rails (http://railslab.newrelic.com/scaling-rails) that describes a lot of the basic techniques used to improve performance. A lot of these have to do with caching and avoiding DB hits whenever possible. Beyond that though, I think it still comes down to good architectural practices like DB management, application layering and partitioning, etc. For my money, Cal Henderson’s book Building Scalable Web Applications (http://oreilly.com/catalog/9780596102357) is still the best place to start reading if you’re looking for best practices for web applications in general. There was a Rails specific title dealing with scaling and deployment available a few years back that’s now out of print (http://pragprog.com/titles/fr_deploy/deploying-rails-applications).
Design is too general. You’d need to be more specific about what you mean by that.
Testing is an area that’s taken very seriously with a lot of competing and complementary testing tools available. Get started with the official Rails guide to testing (http://guides.rubyonrails.org/testing.html) and then if you’re interested in going deeper check out Rails Test Prescriptions (http://pragprog.com/titles/nrtest/rails-test-prescriptions) and the Rspec Book (http://pragprog.com/titles/achbd/the-rspec-book).
Thank you for all that - it's extremely helpful!
Design is a big area, I agree. I'm meaning all of it, really. You've
answered quite a bit already with your references to architectural