Technology Stack

Anyone developing and deploying a web application will be aware of the numerous choices for each part of their technology stack: web host, server type, operating system, web server, database, and of course the actual application language/framework you’re using. My choices for an initial setup were constrained by personal bias and cost. Personal bias led me to use Ruby on Rails as the application framework, and MySQL as the database, since I’ve used these quite a bit in the past. Plus, I’d argue that they’re good choices in their own right.

Cost was a major driver in the choice of web hosting and the type of server I chose. Previous Rails projects have taught me that a shared web server isn’t a great idea–with many hosting companies they tend to be a overloaded, making Rails apps slow to a crawl at time. Plus, deployment is often limited to Apache+FastCGI, an often troublesome combination. So despite being cheap, shared hosting wasn’t going to work for this project. Thankfully,with the advent of virtual private server (VPS) hosts, you can get your own allotment of CPU and RAM, on a virtual server that’s entirely under your own control. My choice was slicehost, which I’ve had a very good experience with so far.

Being able to configure the server from scratch meant having any choice of web server deployment setup. I picked Ubuntu 6.06 as the operating system, since it not only is Ubuntu what I use for my desktop computer but there is also extensive documentation by other Slicehost users for Ubuntu. In order to have a small memory footprint, I picked the combination of nginx and mongrel. Mongrel seems to be vastly preferred over FastCGI, so this was an obvious choice. For the actual web server, Apache seemed like overkill as just a front end to the mongrel processes, and I noticed that nginx has been gaining popularity with the low memory footprint Rails crowd. It also supports SSL, which may be something I eventually need.

So that’s the stack I’m using: Slicehost VPS+Ubuntu+nginx+mongrel+RoR+MySQL. It’s relatively painless to set up, and an excellent opportunity to improving one’s Linux administration skills.

No comments yet

Leave a reply