Are you about to develop a software to run natively on cloud ? If your answer is yes then you may
want to read what follows ...
Probably most of you, at this point in time, are well aware of the available cloud types, of the technical
implication of it and of the fact that PaaS is usually referred as a more "mature" cloud solution than IaaS. But
are you aware of what this exactly means from the point of view of the financial efficiency and
sustainability of your software development ?
I mean how much IaaS is expensive compared to PaaS ?
Generally speaking we usually refer to three different cloud service taxonomy:
- IaaS (Infrastructure as a Service): when the cloud provider manage the infrastructure (i.e.: storage, network, resources). You are free to run any software (including the OS) but you may be limited on selecting, configuring and setting specific infrastructural components.
- PaaS (Platform as a Service): when the cloud provider (beside the infrastructure) manage (and deploy) libraries, services and middlewares (i.e.: database, message brokers, caches etc...). You may be limited on selecting specific middlewares, vendors or versions.
- SaaS (Software as a Service): when a cloud provider (beside the platform) manage also the application. You may be limited on setting/configuring any capability underlying the application itself.
The answer to the initial questions (IaaS vs PaaS) is less obvious than it appears. First of all you should
think that in a service oriented world, the quality of a service set also the price. If your software
is offered as SaaS available 24/7 with an availability of 99,95%, then it is surely much more valuable than the same
software with "only" 99.00% of availability. It may seem to you that 0.95% is a "drop in a ocean" but it
is not like that ... We are saying that every 1000 customers, 9.5 of them (almost 10) may not be able to access your
services.
In some case this is not too bad, but in other situations, it is unacceptable... (i.e. if you are building an
online trading platform, you may need to guarantee your uptime as much as possible)
In any case, a cloud provider need to spend much more resources if he wants to deliver just an additional 0.95%
of reliability to his infrastructure/platform. Therefore he will charge a lot more for the same service to
insure higher quality...
When you compare the two model IaaS and PaaS to develop your application, you may want to consider the same
approach: if you want more reliability, you may need to develop and maintain a software that will turn out to be
more expensive in IaaS than PaaS. In fact while in PaaS the uptime of each platform component is
guaranteed by the cloud provider, in IaaS you (or your software) will need to supply this reliability. Adding
this "extra" percentage of uptime to your software on top of IaaS may be several time more expensive than buying
platform as a service components.
As an example let's take the persistence. A DB as service usually scale up according to the amount of data stored
or the number of queries. Th IaaS does usually not care if inside one or more nodes you are using more or less
resources (not always true) and it is apparently cheaper than PaaS. But on top of IaaS you have to add the DB
license (if any), the resiliency (a cluster usually) and the reliability of the data storage (usually through
replication). Moreover if you want to have geographical distribution and multi tenancy, then your software developed
on top of an IaaS solution has just become a nightmare....
We did not even mention the complexity to run and manage a resilient middleware in cloud, and the fact that some
infrastructure solution that is usually available in hosted environments (like the multicast ip used by many
clusters) may not be available on a cloud environment.
The moral of the story is: think about the costs, plan your software well layered and isolated by the platform
components and select carefully your middleware having in mind your SLA (Service Level Agreement) ....
... but this is another story ....
Stay tuned ;-)