A topic I hear from clients fairly regularly these days is a plan to move to "the cloud", or we take over a site built by someone else that's hosted in "the cloud". However in virtually every case it's an IaaS setup and they don't really know what the difference between IaaS and PaaS is.
What is IaaS?
So what is infrastructure as a service (IaaS for short)? To put it quite simply, IaaS in the cloud, be that Azure or AWS takes away the burden of managing your own or rented servers.
Anyone who's worked in a corporate environment can tell you getting some new servers can be a lengthy process. Someone needs to arrange for them to be purchased, placed in a physical location, software installed etc. Even when the management of this has been outsourced to another company, it still remains a lengthy process.
Equally anyone working for a small company can tell you its not much better. There may be a lot less approval processes to jump through, but your on your own trying to buy and set up this kit from somewhere.
IaaS solves this by providing a very very quick service where you request a specific setup and a VM gets created for you ready to go in a couple of minutes. You can pick from a range of locations around the world and when you don't need it any more you turn it off. There's no large commitments to keeping a server for 6 months, you pay by the minute scaling up and down as needed.
IaaS is very simple to replace your current setup as its essentially the same thing just with much better management control around it.
What is PaaS?
Platform as a service (PaaS), is what people really mean when they talk about the future and the cloud. If you go to a conference and hear Microsoft talk about Azure, you can be 99% certain its a PaaS service they're talking about.
To understand it think about the process of getting some office space. You could buy a plot of land, have a building placed on it and turn it into your office. But when the roof leaks you'll need to arrange for that to be fixed, you'll need to arrange regular fire alarm tests to make sure everyone remains safe, and when an issue is discovered in the buildings security you'll need to get that fixed to. You didn't really want to be a building manager, but that's what's happened.
The alternative is to rent some office space and leave the management to somebody else. All you have to do is follow some rules like don't go on the roof and don't go in that cupboard where all the fire alarm equipment is.
PaaS is a bit like this, we didn't really want a box running Windows Server that we need to keep secure and up to date. We just want a SQL Server DB and that traditionally comes with a need to have a server to run it on. Equally for hosting a website we really just want somewhere our sites going to run, in the same way that for office space we just want somewhere for our staff to sit. It's unlikely that we're ever going to use these servers for more than one purpose so we don't really need a generic system that allows us to install a multitude of things.
So with PaaS rather than buying a server your buying a service, which could be a web application, a db or many other things. As this is no longer just buying server space there are a number of restrictions. For example with a web application saving anything on the file system is rules out. Your application is going to be there but part of what makes it possible for all the server updates to be done for you is that at any time your application could be moved to a brand new server, anything not in the package to set it up will be lost.