Thursday, April 23, 2009

two nodes, not a crowd on my cloud, baby

At Brewerfan.net, we've been blessed to have some of the best free amateur draft coverage on the 'net (a quick plug here... our 'draft guy', Patrick Ebert, has started a new venture called 5-tool talk which sort of spins this off). While it's been an awesome thing for the site, day one of the draft has historically caused the site to crash really badly under the load.

I had a conversation with my current provider about moving to Grails, and they said they were OK with it, but the fact remains that I'm saddled with a RAM limit of 150 MB. One of the drawbacks to Grails is that it does have pretty significant RAM usage (especially since I'm planning on caching a fair amount of data), so even if I were to look at this problem in isolation, I just don't think my current provider is going to cut it anymore.

After search for a while for Grails hosts, I ran across one of them, Mor.ph. One of the newest buzzwords in the industry is "cloud computing", which basically can be summed up as a shift from a traditional "site on a server" model to a virtualized model where you really are just paying for scalable computing costs.

Anyways, Mor.ph offers developer accounts which allow you to deploy your application for free. The only drawback appears to be that your URL has to be yourname.morphexpress.com (no top level domain). I'm also assuming that there are other limitations in place that would dissuade you from using a free developer account for a production environment. Mor.ph allows you to buy credits at a dollar a piece, which buys you a "cube" for a day (where, in their Grails world, means an instance of Jetty with 256MB of RAM). Not too shabby. So, basically, for $30 a month, I get two nodes, each of which have 100+ MB more ram than I currently have on the server I pay $50 for. Seems like a no-brainer.

The other very interesting thing is that this ties back to a solution for my draft day problem. Mor.ph allows you to scale up to 12 "cubes" for your app, and you can change the number of cubes you use in real-time with their very slick web control panel. So, I could run things in such a way where I pay $1 a day in the offseason, $2 a day during the season, and $6 on draft day (or any other combination) and can keep my app feeling zippy.

There's a custom deployment program that Mor.ph distributes to deploy your war file (although there's a Grails plugin which makes setting up your war file for Morph a breeze). That's the only unusual thing about the process (and even that's very painless). The other snag is that you have to refer to the file system using a specific virtual path (which in a clustered environment would be required anyway), but it's very well documented.

All in all, I'm pretty excited to move Brewerfan into the "cloud".

Over and out,
Brian

No comments:

Post a Comment