With my startup(s) we plan to release on a shared hosting at first (alpha) before moving to a single dedicated server (beta) and then later (assuming it takes off) to EC2 (probably).
I've always maintained: if you plan to at SOME point be utilising AWS then you need to plan that into your app. All the code we write is scalable and modular - so things that wont work on the next step up can be pulled out and replaced with bits that will w/o breaking the overall system (memcached is a good example - we have a fake caching layer on top of our database layer at the moment so that memcached can be added in later :)).
Comments
My personal approach is a mix of both.
With my startup(s) we plan to release on a shared hosting at first (alpha) before moving to a single dedicated server (beta) and then later (assuming it takes off) to EC2 (probably).
I've always maintained: if you plan to at SOME point be utilising AWS then you need to plan that into your app. All the code we write is scalable and modular - so things that wont work on the next step up can be pulled out and replaced with bits that will w/o breaking the overall system (memcached is a good example - we have a fake caching layer on top of our database layer at the moment so that memcached can be added in later :)).