Short form: I'm trying to decide between shared, VPS, and cloud hosting for a few Django webapps.
Long form: I'm currently hosting around half-dozen sites (a mix of Django and PHP) on two Webfaction accounts. They are pretty low-traffic, but I'm sort of feeling the strain of shared hosting. Notably:
- A mediawiki install on my account went a bit funny, soaked up a bunch of RAM spawning zombie PHP processes, and Webfaction's automatic script killed the other websites on the account (which is fair enough, but not ideal).
- One of the accounts is on a semi-overloaded server (right now uptime shows a load average of 9.56, 6.91, 4.43), and my sites on that account are behaving a bit sluggishly.
In addition, I fondly hope that One Day we'll have a lot more traffic. So (potential) scalability would be nice. I've been just wonderfully amazed at Webfaction's price/performance, but it's still shared hosting.
The next step seems like it should either be a VPS or some sort of cloud/PaaS option.
If I went for the VPS route then...I guess I'd get a small Linode (or maybe more than one?) and start migrating apps from Webfaction. The question here is....do I try and jam them all into a single VPS? Try and put 1-2 apps on each VPS? Or split stuff up by function, so I have one VPS for the databases for all the apps, and another for serving static media, etc. Thoughts?
The cloud/PaaS option I'm a bit more vague on. I guess I could try migrating the Django apps to something like Heroku (which just launched Django support) or http://gondor.io/. The downside here is I'm not really familiar with them, and all the cloud options I've looked at seem quite expensive compared to a simple VPS. I guess the scalability is good, but none of my sites are actually using much in the way of resources.
Or, maybe I should just stick it out with shared hosting. It's more-or-less working, it's cheap, and it's nice to have someone else be responsible for hardware and OS issues.
Are there any good rules of thumb to apply here? Do I want a single (medium) Linode and try and run everything, or a few small ones (and if so, split by app or split by role?), or is Heroku and similar services just hands down better. Anyone have any thoughts?