Design choices

Monday, January 16, 2012

The most obvious choice was node.js. Having spent a few years as a javascript programmer turned enthusiast, and as previous node.js user, selecting anything but node.js was unthinkable. Rails, Django, and Express were tempting (and even YUI's node.js frameworks the more I think about it), but the reasoning really came down to starting with a comfortable level of expertise and inexperience.

Finding a host was a bit of a task. I initially went with Joyent based upon the no.de offerings but found their actual smart machines to be a little costly for starting out with not much of the no.de smartmachine infrastructure available to be used in their main cloud services. Primarily, I was interested to see if I could get a free node.js host for starting out combined with a custom domain. After having played with Heroku before, git push was pretty much required, I can't even remember the last time I used FTP or a web based offering.

With the software to be written myself, and the web host selected (Heroku), the next choice came down to a data store. Heroku has database add-ons for SQL, MongoDB and CouchDB. In an effort to learn more about what the cool kids were doing, I decided to try out one of the NoSQL offerings and see how far along they've come. I eventually settled on CouchDB after reading a document from Mongo's own website about the pros and cons of each. Frankly, having replication is not really feasible and I doubt a blog would demand many frequent writes to the database. If I had those problems, it would be godsend. What finalized my decision though was Cloudant's offerings because of the free space of 250MB, which should be plenty for a text based website for some time. The abililty to run CouchDB locally then push DB updates via replication was just icing on the cake. In this manner, I am able to keep a backup locally that is transferable to another host within seconds and get live previews before I update the main site.