In an attempt to better
understand the nature of cloud computing I tried to draw a
classification of some companies and applications that spawn in the
cloud.
Three different cloud computing levels
Infrastructure
The heart of the cloud is what
some people call Infrastructure as a Service (IaaS). This is as near to
bare metal as we can get: pure storage and compute capacity. With
virtualization techniques it is packaged into small units that are
delivered like water or electricity (notion of utility computing).
Infrastructure as a Service
Platforms
The next layer is Platform as a
Service (PaaS). Here we find more complex platforms, such as Google App
Engine or Salesforce.com AppExchange. Marc Andreessen, who coined the
phrase “Web as Platform”, once wrote: “[a] platform is a
system that can be programmed and therefore customized by outside
developers — users — and in that way, adapted to countless needs and
niches that the platform’s original developers could not have possibly
contemplated, much less had time to accommodate. [...] If you can
program it, then it’s a platform. If you can’t, then it’s not.” (Source)
Platform as a Service
Although I would not consider
Amazon EC2 or S3 to be a platform but rather IaaS, the elastic
infrastructure provided by Amazon has enabled third-party developers to
build platforms on top of it. I asked myself where in my diagram to put
the other Amazon Web services (FPS, DevPay, etc.) but haven’t come up
with a plausible place, yet. It should probably be somewhere between
IaaS and PaaS.
Apps & Services
The outer layer of my onion is
formed by all the applications and services that are built on top of
either IaaS or PaaS. I am not satisfied with the outer layer. I feel
that it needs further categorization, such as grouping by types of
applications, e.g. Social Network Apps, Backup Services, and so on.
Cloud Applications and Services
API
Each layer has a different set of APIs. Near to the core, developers
have standard Web technologies and protocols to access and use the
cloud. Further away from the core, levels of abstraction are added,
making APIs more vendor-specific. On the application & service
layer, we find a mix of standardized and less standardized APIs.
I want to improve and extend my
diagrams and find a more proper categorization of cloud vendors and
services that sit on top of the cloud. What are your ideas and comments
on this one? And another thing is: Would you consider firms that use
IaaS, like Mosso and cohesiveFT, as PaaS vendors? How are they
different from, say Joyent or FlexiScale?
[This analysis appeared originally here and is republished in full by the kind permission of the author.]
About Markus Klems Markus Klems is a research assistant at Germany-based FZI Research Center for Information Technology. His main areas of interests are cloud computing, grids, distributed programming and agile Web development - the technological point of view as well as business models. He blogs at http://markusklems.wordpress.com/.