Node deployment – Getting my node app out there for the minimum fuss and expense

I’ve been looking at different deployment options of late, particularly for Node apps. The sci-telligent webspace provided by my hosting solution (which happens to be 1&1) isn’t going to do the business because I can’t open up my own ports on what is essentially a shared server. I could install node, but only have it running within my console which defeats the purpose really. This rather good post goes into the details of how to achieve that.

Another option I’ve considered is use my home NAS box and expose it as a Node server via the static IP provided by my ISP. It could work, with the right routing. Someone awesome has provided a package for the Synology line of NAS boxes, the source code and installation instructions can be found here. The biggest problem here is the squeeze on uploads from most ISPs, I think this will be frustratingly slow to deploy and serve pages (without paying a substantial premium), even though my ISP, Zen Internet is one of the best around.

Then there are the multifarious cloud options. Many of these exist and the number is expanding. I’ve looked at a couple so far:

The free tier for Amazon web services would work fine, and my exploits so far have been moderately successful. The problem is one day in the interface I saw the words “Elastic Beanstalk” and thought, that sounds like fun. So I clicked, and before I knew it, unbeknown to myself, was being charged for something I didn’t want. My own fault really I can’t really blame Amazon (, blame Amazon. They’re not even a real country anyway… Sorry drifted off into South Park for a second). As a solution it’s absolutely fine, however they do take your payment details so they can charge you if you inadvertently slip outside of their free offering. This is pretty poor in my book, they should find a way of alerting you in plenty of time if you are doing something for which you may get charged, and make the default option to squeeze or prevent actions which lead to charges without your specific authorisation.

The reality is, it’s just like having a convenient server set up next to you to deploy stuff, and very easy to use. One of my colleagues did a fabulous session recently on how to automate and script deployments, building deployment testing into his integration stack. this isn’t something that had occured to me to do and it makes a lot of sense – if you are frequently pulling instance up and down, you probably want a way to shortcut the process and validate that you end up with the server configuration you intended

My early experiments with Heroku have been excellent so far. A kind of free tier is available without submitting credit card details, so you know you aren’t going to get ripped off. The tutorials and step by step guides make the deployment process seem trivially easy. The whole thing comes bundled with a suite of client tools for driving the whole stack out of a Git repository, so you instantly have a useful deployment platform set up without having to go through and set up all those things yourself. I’m sure Amazon builds exist that allow just that, you just have to dig a bit more, and frankly, I don’t really trust them not to slap on a charge when you aren’t looking, the sneaky things.

There are many, many other options available, but I don’t have time to explore much further for now, as actually building some functionality is the pressing issue, not playing with platforms! Any suggestions and comments gratefully received.