Easily Maintainable and Horizontally Scalable
Being very early rails adopters, we quickly started asking the question: how will it scale? It’s amazing that four years later, this question is still being asked in the community. A month into our first rails deployment (on webrick, eek!) we realized that to be used as anything more than a toy, a new architecture was necessary. Looking to our experience as system, network, and security administrators, we looked to see how this was solved with other scripting languages. As we all had experience supporting and writing perl web applications, it seemed the support for fastcgi gave us a simple, solid, well-tested and trusted solution. eM.A.S.H. is the glue between fastcgi and a few other standard unixy services which allows for:
- Separation of Web Server from Application Services
- On-demand scaling (increase and decrease capacity)
- Simple deployment
- Automated administration (never have to restart an application)
- Running upgrades (upgrade an application without restarting the webserver)
- Very broad scaling options. From 1 to thousands of application listeners.
Main Components
- Lighttpd - Fast and lightweight webserver. Excellent fastcgi support.
- FastCGI - Original C implementation, lightning-fast performance and some built-in features which promote redundancy.
- IPVS - IP Virtual Services - A kernel level virtual service framework available in Linux and FreeBSD (from ports)