Provisioning is not that hard, nor scaling -- you can always create a image and create servers from that image. In my case, I usually create a server that listens to git and the rest is synced by some program who is also listening the folder where the git repo is.
Heroku looks cool, but I am used to compile things...
Heroku covers this very well.