This week I attended a tech talk about cloud computing and more in general about Microsoft Azure. It got me thinking a bit regarding PaaS vs IaaS (= virtual servers). Let me give you my thoughts.
PaaS – The good
You do not have to deal with servers, virtual or physical. You work with resources.
No software upgrades
No OS of software upgrades.
Scaling your infrastructure is already taken care of for you. You just need to make sure you follow the guide lines for developing scaleable applications on that platform.
PaaS – The bad
Limits your software stack
You might not be able to pick the best suited application server/web server/caching solution/database/other great software for your application. You are often limited in some way to what is provided by the PaaS.
Portability and lock in
Several of the PaaS solutions today require you to develop for that platform, for example Microsoft Azure and Google AppEngine. If you want to move your application anywhere else, you are out of luck. There is only one provider – so then you will have to rewrite your application (or at least parts of it), to be able to run it somewhere else. If you are using services provided by the PaaS that is not available somewhere else, for example Azure SQL Server or Googles Bigtable database, it might get even harder.
Pricing can be confusing
Can be hard to estimate how much running your application will cost. Microsoft Azure is a good example of a confusing price model.
IaaS – The good
Full control over your software stack, if you want to switch to a more cutting edge web server or cashing solution, go ahead.
If you need, it is easy to move to another provider of IaaS, to a private cloud or even to physical servers.
Easier to estimate your cost
Most PaaS you pay per computing hour of each virtual server, per GB of stored and transfered data.
IaaS – The bad
You will need sysadmins to manage your servers, just like normal physical servers
You will have to build a scaling infrastructure on your own.
The PaaS idea is great, but it means giving up too much control and flexibility over your application, and what is worst – it locks you into a provider. I know that Microsoft is working towards enabling private Azure hosting, this would allow you to host your Azure application in your private company Azure cloud, or with Microsoft, or other providers. I hope other providers move in this direction as well. Private PaaS hosting would allow us to develop our application and run it anywhere, but with IaaS we can already do this today!
To conclude things, I might be old school, but I still prefer IaaS to PaaS.