On the very excellent Hacker News, someone recently asked the question, "Yes or no: Should web startups host on Amazon?". There are a couple of recent events which I think force this question to be particularly relevant. First, AWS (Amazon Web Services) recently suffered a massive outage, covered here on O'Reilly Radar. Second, a variety of competitors to EC2 (Mosso and Joyent) as well as S3 (EMC) have recently cropped up. Lastly, I continue to more frequently get questions along the lines of, "What's with this PaaS (Platform as a Service) thing?".

What is Platform as a Service?
Let's start with the basics. Platform as a Service, or PaaS as it is more commonly referred to, can be thought of as being like a utility (such as electricity or water). When you need water, you turn on the faucet and you turn it off when you're done. You're only billed for what you use. Likewise with PaaS, when you need "platform" (storage, compute, etc) you simply "turn it on" until you are done.

This is in contrast to a traditional platform model, where you have a significant investment in hardware such as network infrastructure (such as switches, routers and firewalls), storage (SAN, NAS, Fibre Channel, etc) and servers. Not to mention, in this traditional model you typically need experts to manage each of these.

Enter the "managed hosting" platform, Colo, etc. All of these are variations on the traditional hosted model but with changes to cost. At a Colo, you may not be paying for the hardware you may be leasing it. Many of these colocation providers also have "managed services" which allow you to leverage their experts, reducing costs as you now don't need your own. None of these platforms are "pay per drink"/utility however. In other words, these are different from PaaS.

Traditional hosted models are typically much more expensive than the utility model, since at a minimum they typically require monthly contracts (or a huge up front investment). So if you need one more server, even if it's just for testing for a few hours (or handling some additional load for a few days), you are billed for the entire month (or for a whole server).

When should I use PaaS?
This is where the utility model comes in, and where the original question with regard to startups becomes relevant. At a startup you are typically resource constrained in terms of time and treasure (cash). This makes the PaaS model alluring, seductive even. But, and I seem to keep beating this drum, there is no free lunch.

In the best case, such as with Amazon, you simply have an outage that lasts a few hours. In the worst case, your hosting company goes out of business and you lose everything. There is however, a sweet spot. A place where PaaS and a traditional hosting model complement each other very well.

PaaS is a killer for "edge services"; e.g. a CDN, log processing, content proxies, caches, etc. Things where, if it goes away, you're not going out of business. There is a reason that the tried and tested concept of a CDN always uses an origin server, that is, a server that it fetches data from (a master). You want fast delivery, replication, and to leverage a fairly inexpensive infrastructure. What you don't want, is for the CDN to lose a server and now you are missing data.

I still believe that a hosted model is the appropriate place to keep your primary application though. Your data is too important to simply give over to another company. I believe this will change in the future as these PaaS providers start to provide better SLA's, improve reliability and can be held accountable for hours of downtime. Until that happens though, use PaaS for the things it is well suited for, ephemeral tasks and data.