Platform as a Service
is a term that can be fairly confusing for many people. Normally the
term is associated with Google App Engine from Google and Force.com
from Salesforce.com as the main references for this model. From a
technical point of view, it is aimed to provide a similar type of value
to the one that is currently provided by many of the application
servers i.e. it provides a generic container that can host different
applications and shield them from the details of the underlying
operating system, network, database implementation. Unlike most of the
existing application servers it was designed for massive scaling from
day one. Another big difference is in the way it is being consumed.
With PaaS you don’t need to install any software and go through all the
hoops to setup a cluster environment etc. PaaS is provided as a hosted
service that is pre-configured and installed. You get a production
ready environment right at the start.
Key Characteristics of a Cloud/SaaS Enabled Application Platform
Last week I came across David Mitchel Smith
presentation from Gartner. David provided a good definition to the main
PaaS characteristics. A snippet from his presentation covering this
area is given below:
interesting is the great emphasize on Multitenancy support. The fact
that the platform is going to be shared between multiple applications
and potentially even different customers require various levels of
tenancy support and isolation to ensure that even though were taking
advantage of the fact that we can share resources between applications,
each application needs to be able to use the platform as if it is
running on its own dedicated resources. Another interesting point is
the need for XTP support. Many would view XTP as a niche that is
normally referenced in the high end part of the market, so it is fair
to ask why would XTP fit into a general PaaS solution? XTP represents
a model for supporting enterprise transaction processing applications
in an extremely scalable environment. In our case, scalability is not
necessarily driven from the demand of a particular application but from
the fact that many applications are going to run on a shared
environment. A PaaS targeted to enterprise applications would need to
provide support for this level of scalable transaction processing
support as a core service.
Can you run your existing business applications with GAE or Force.com?
No. Unfortunately as in anything in life reality can really spoil the party.
was designed to make it simple to run business applications that are
database centric i.e. CRM, Reporting etc. It provides a rich set of
high level services that make building such applications extremely
simple. Google provides a more generic application platform and
recently announced support for Java which is a big step towards
reducing vendor lock-in concerns. Google seems to be geared for
consumer based applications. Force.com offers a more high level
platform that is based on its proprietary services. This means that in
order to take advantage of their service you will need to go through a
Force.com is based on a database centric
architecture. They also seem to be limited in scalability as they
partition their database per application. This means that if your
application needs to scale more than what a single database can
provide, you can find yourself pretty much locked.
Google’s recent support for Java makes their offering closer to standard JEE application servers, however their current support impose a lot of limitations
due to their sandbox model. These limitations mean that at the end of
the day GAE can be applicable only to a small set of relatively simple
applications. Since there is no guarantee or control over the
resources that you are going to receive from their underlying
infrastructure, it is likely that the application performance will be
unpredictable and will therefore be affected by other applications that
are sharing the same hardware.
The fact that the platform as a
service shields you from the details of the underlying infrastructure
is what makes it simple and that is both the advantage and limitation.
You can’t control the environment, you can’t choose your operating
system, you can’t install your own set of services and you can’t
control the performance characteristics of this platform.
This puts a huge adoption barrier for most current enterprises.
IaaS vs PaaS
as a Service provider provides a hosted service model that offers plain
machine level access. This model is also known as Server as a Service.
The fact that you get access to the bare metal allows you to run almost
any application on this hosted environment. Unlike PaaS, IaaS gives you
extreme flexibility. You can choose your own operating system, install
any package that you want, you can setup your firewall, security etc.
Amazon is known to be the leader in this space and also provides a set
of services on top of their infrastructure such as SimpleDB, SQS and
MapReduce. Having said all that, this flexibility comes at the cost of
complexity. In many cases you will need to install your own software,
configure it, tune it etc. before you could make it run effectively on
the cloud. Many application developers don’t have the skill-set to do
that. This exposes many operational challenges as many organizations
are not geared to support this type of environment from their own IT.
The high level services provided by Amazon are still proprietary and
would require a complete re-write if you plan to use such services.
PaaS for Enterprise applications – doing it right
The ideal solution would be to combine the best of the two worlds i.e. the flexibility of IaaS and simplicity of PaaS, and here is how:
- Build a Generic PaaS on top of AWS
– To build a PaaS we don’t need to re-invent the wheel. Unlike Google
and Force.com we don’t need to own the infrastructure, we can actually
use Amazon infrastructure or even better build our PaaS such that it
can be portable between Amazon IaaS and a VMware IaaS. By doing so, the
PaaS can provide us the ability to deploy applications in a simple way
just as in GAE but would still enable us to control the environment,
install our own software and get the full flexibility that IaaS
- JEE as first class citizen – Many of the
existing enterprise applications are built in JEE. Making JEE a first
class citizen within our PaaS environment will enable you to leverage
the existing skill-sets within those organizations. Similar to the
standard model that has more than one implementation out there,
reducing the lock-in factor significantly.
- Pre-configured for extreme scalability
– All the services provided through the PaaS will need to be
implemented and pre-configured for extreme scaling and come with a
production ready setup to enable dynamic scaling and fault-tolerance.
Next generation application Server?
In my opinion, PaaS represents the next wave in middleware technology.
One that is targeted for virtualized enterprises, one that was designed
for scale-out from the get go, one that fits the new way of delivering
SaaS applications and one that can be extremely simple to use. The
current PaaS players i.e Google and Salesforce and to a lesser degree
Microsoft represent one type of player, those that own it all, i.e. the
infrastructure and the platform. There is already a new emerging
category of players in the PaaS market, Application PaaS players.
Application PaaS players would specialize on delivering only the
platform and not the hardware and network infrastructure. They act as
the bridge that will enable portability between different
infrastructure providers including the internal IT (a.k.a
private-cloud). The application PaaS players will also be segmented in
similar ways to the way application servers are segmented today, i.e
there would be the one targeting the low-end consumer market in similar
ways to Google App Engine, the ones that will be aimed toward the high
end of the market and those who will be specialized in certain
languages or development framework, i.e. Ruby/ Java/ .Net etc. In the
PaaS type of world, those who would be able to provide a holistic
solution that works smoothly across all the application tiers would
have an advantage over those who are providing point solutions.
What about my existing applications ?
people would categories PaaS as a platform that is delivered through
the internet. That statement would make the idea behind PaaS irrelevant
for a large part of the existing enterprise applications, as a majority
of them are not ready to run their application in a hosted service over
the internet. Let’s examine that statement:
Many of the existing
IT run farms of application servers in their internal IT. Those
application servers are running in an internal data center that is not
that different from any other hosted services, only that it is a
specialized hosted service tailored for the needs of the specific
organization. I would therefore argue that those organizations that are
already running such application server farms would find it easier to
evolve such server farms to PaaS model than to change their entire IT
infrastructure into internal cloud. The reason is that those
applications were already written to run in an application container
model, therefore a large part of the transition work can be done within
the container implementation and outside the application code.
Targeting them first would therefore be potentially easier transition
than trying to transform all your other applications into a virtualized
I know that there are many people out there that
would argue that internal PaaS is not a PaaS because it doesn’t answer
the exact definition of PaaS. However in my view the similarities
exceed the differences and the value to the enterprise would be almost
identical to the one that I would receive by any of the internet based
Will I lose control?
PaaS will provide
the internal IT much better control over the applications that are
running on their environment. You can have high visibility as to ways
the application consume resources. In the same way, you can control
fairly tightly the application security, scalability, resource
management and fault-tolerance which can finally be managed in a
consistent way across all the applications.