Swiftiply: A step forward in Rails serving?
A few days ago Kirk Haines announced the release of Swiftiply, an "agnostic clustering proxy for web applications that is specifically designed to support HTTP traffic from web frameworks." In particular, it's a fast, clustering proxy that uses untraditional methods to deliver a lot of dynamism, reliability and performance. Naturally, the first target for Swiftiply's benefits is Rails, in the shape of a replacement to the mongrel_rails script (merb is also directly supported).
This all sounds like sales talk, but merb creator Ezra Zygmuntowicz has posted about his experiences with using Swiftiply to serve one of his Rails apps and has noticed a significant increase in daemon performance. From FastCGI to lighttpd to Apache/mod_proxy_cluster to Mongrel/Pound to Nginx, developments in serving Rails applications have come quickly.. perhaps Swiftiply will provide another step forward?
May 15, 2007 at 2:54 am
I'd love to see the rails community focus on making some of the current solutions better rather than yet another web server :)
One of the hardest decisions I found when deciding to use rails was what platform do you use to serve your application. It's a moving target.
May 17, 2007 at 3:09 am
Actually, Rails wasn't the first target. It's just one I made sure to support. My original motivation was to develop a fast custering proxy for Swiftcore IOWA. It's just that after it all came together, I decided that other frameworks could benefit from it, as well. :)
Michael, it's not a web server. It's a clustering proxy. You can put a web server in front of it. You can let your framework serve static files itself, if it's fast enough, too. I am experimenting with adding _minimal_ file serving to swiftiply. Just enough to serve static files correctly and very quickly. The motivation being that for many applications, that would let the application be deployed very simply, with high performance. Swiftiply right to your cluster of swiftiplied mongrels; no mucking with other components; minimal configuration; high reliability and performance; better ability to monitor the health of the cluster, and more are my overall goals.