There is this new setup--a new level of existing,
which is like the Google App Engine/Heroku model, which is completely managed.
You don't even really think the concept of machines.
With Google App Engine, you just upload your code.
You don't think about OS. You don't think about anything.
You just give it a wad of Python, and they just run it.
They run machines with databases. They do the charting.
They do the replication on this basically zero sysadmin,
which is a great way to get started and depending on
how you like to work on your technical sophistication, on the complexity of your website,
this may work fine. A lot of big websites have been built in this system.
Udacity, being one of them, runs on Google App Engine, but it also means
when you want to customize things, it's really difficult to do things that
the providers of these services haven't thought of ahead of time for you.
And that's kind of the continuum of setups.
There is no penalty for choosing wrong when you start because you can always switch in between.
It's not always easy--when we switched from colocation to AWS,
Reddit was a fairly large website at that time, so that was a little bit tricky.
We had two infrastructures and slowly migrated traffic from one to the other
at a very high level, which actually worked okay.
I'd suggest when you feel like you've outgrown Google App Engine or you want to do something
that App Engine won't quite allow you to do
take a look at some of these other services and see if they get the job done right and then
maybe as you should get really, really big you hire a dedicated sysadmins,
and maybe you want to have your own machines because it's a little bit cheaper
and bandwidth requirements are higher than what Amazon can do,
for example, or your storage requirements or data needs, you need more, more, more.
That's when you start thinking about having your own cage or having your own data center.