*-as-a-Service is all the rage these days. Everywhere you turn you see Software-as-a-Service, Platform-as-a-Service, and Infrastructure-as-a-Service. It reminds me of the late 90s when everything was Internet, Intranet, and Extranet – you know, back when it was so new and important that we capitalized the words.
Even though we're seeing some serious overuse, my problem isn't with the terms it's that the root words are incorrectly swapped around so much that folks have a hard time thinking about them correctly. Sometimes everything is lumped into SaaS since it was first. Other times Platform and Infrastructure are used synonymously. My goal here isn't to introduce you to SaaS, PaaS, and IaaS . . . chances are you have an idea of what these are if you read this blog. Instead, my goal is to show you a way to think about them to know what fits where including a 2-part value proposition of each. This is especially important if you're building software that falls into one of these 3 groups.
Unless you work for Amazon, Rackspace, GoGrid, or one of the other big providers chances are good that you're not building IaaS. Infrastructure is just that: the foundation where you run your system. This service is all about providing you infrastructure components like servers and networking goodies such as load balancers, firewalls, and VPNs. The "service" part of it is the management software that lets you click (or programmatically call) to provision new resources. Click: new server. Click: new network segment. You get the idea. The important takeaway here is that you are renting infrastructure that lets you do what you want, but it's pretty much up to you to make it do something valuable. The 2-part value proposition of IaaS is that you can rent infrastructure instead of buying it and that someone who is better than you will be running it, provided you go with a quality provider.
At the other end of the spectrum, we have Software-as-a-Service. SaaS should do something of value immediately after you sign up for it. Sure, there may be some customization involved but the bulk of a valuable problem should be solved by the software that you're renting. If you work for a software startup, then there's a good chance that you're working on a SaaS product or that there will be a SaaS version of your product offered in the near future (either by your company or a new competitor). The SaaS 2-part value proposition is that you only have to pay for software you use and you have a solution to the problem that's better than what you can build in the time you have. That last part is especially important since if you can't find something worthwhile to rent, then you've just stumbled upon a great market opportunity (or you're awful at using Google, but I'll give you the benefit of the doubt).
This is actually the term that's been stuck in my head and led to this post. PaaS should let you build something of value after signing up. It's a step away from infrastructure in that you don't have to worry about the underlying servers and networking, but it's also a step from being SaaS because it doesn't do anything of general value until you get to work. I think that a lot of the confusion around the term can be credited to the success of Salesforce.com. They started as a SaaS offering and then created the first really successful PaaS offering (while continuing to offer plenty of SaaS goodness). Their hosted Customer Relationship Management system is often cited as the first successful SaaS product. Later they created Force.com which lets developers build new applications on top of their infrastructure. Another factor that contributes to confusion about what constitutes PaaS is the use of the word "platform", one of the most nebulous terms in the tech industry. I think that Architecture-as-a-Service may be a more accurate (though not necessarily better) description because what you're paying for is someone else's solutions to common development tasks. Instead of worrying about collecting data, storing it, retrieving it, searching for it, etc., you use the provided platform – its architecture. The 2-part value proposition is that you can use the platform to build software without having to solve all of the problems common to software development.
To give a little perspective, I'm currently working on a PaaS system that will be used to create several SaaS products. I'm using IaaS (Amazon EC2) for testing and production deployment. So I rent from Amazon and others rent from me. The spread between what I pay and what I charge is dependent upon my solutions to both development problems (the PaaS layer) and business problems (the SaaS apps).