We get asked this sort of wide open question a lot on the #node.js IRC channel. Honestly it very much depends on your experience and capabilities.
There's a massive range of services to consider, from simple no-devops-required systems like Heroku ranging up to installing your own hardware in datacenters. The problem with answering it is that it really does depend on the requirements and the experience of the person/company implementing it.
It's very rare for VERY large scale systems to end up implementing on cloud services (the only major exception I can think of is Netflix). But that shouldn't put off most people because the needs of Facebook and Google and other large scale places aren't required by everyone else.
99% of the time a cloud solution is fine. Whether you choose PaaS (Heroku style) or cloud servers (Linode or Digital Ocean style) depends on your devops experience - Heroku is more expensive but requires less skill. Choose what you have the skill to pay for and implement easily.
I don't recommend switching from Heroku to AWS though. I personally find AWS to be very crowded and performance just isn't there. Consider another provider instead, unless you really need the AWS APIs that allow very quick scaling up under peak loads (like Netflix does).