Thanks to Alex Popsecu’s NoSql blog, found a well articulated thesis by Johan den Haan, CTO at Mendix. Johan proposes a framework that describes the various layers of cloud platform services starting from virtualized hardware up to end-user software applications. This framework can also be used to categorize various cloud platforms such as OpenStack, Amazon Web Services, Heroku and CloudFoundry.

He defines a 3 column, 6 layer framework that outlines the various components required to run an application in “the cloud” as below:

A framework to categorize and compare cloud platforms

This is such a neat framework! For my reference, have expanded the table with salient points from Johan’s article here:

Layer, UsersComputeCommunicateStore
**1: Software Defined Datacenter** *Users*: Infrastructure Engineers**Virtual Machines**: *pool resources of many different servers, thereby creating a virtual layer that offers automatic load balancing and higher levels of availability than the underlying hardware can offer* **Examples**: [Amazon EC2](http://aws.amazon.com/ec2/), [OpenStack Nova](http://docs.openstack.org/developer/nova/), [MS Windows Azure](http://www.windowsazure.com/en-us/services/virtual-machines/), [Google Compute Engine](https://cloud.google.com/products/compute-engine), [IBM SmartCloud](http://www.ibm.com/cloud-computing/us/en/iaas.html?lnk=iaas-body)**Software Defined Networking (SDN)**: *decouples and isolates virtual networks from the underlying network hardware and provides higher utilization of the hardware, more flexibility, and easier management* **Examples**: [Nicira](http://nicira.com/), [OpenStack Neutron](https://wiki.openstack.org/wiki/Neutron)**Software Defined Storage (SDS)**: *decouples storage volumes from the underlying physical hardware with features like caching, snapshotting, high availability, etc. and also minimizes performance degradation due to server virtualization* **Examples**: [Virsto](http://virsto.com/), [OpenStack Cinder](https://wiki.openstack.org/wiki/Cinder)
**2: Foundational PaaS** *Users*: DevOps**Application Containers**: *an isolated, self-described, infrastructure-agnostic container for running apps*. **Examples**: [Docker](https://www.docker.io), [Dyno](https://devcenter.heroku.com/articles/dynos), [CloudFoundry Warden](http://docs.cloudfoundry.com/docs/running/architecture/warden.html), [Imctfy](https://github.com/google/lmctfy)**Routing, Messaging**: *routing messages among app containers, storage systems, and external systems as well as load balancing incoming requests to application instances* **Examples**: [CloudFoundry Messaging/NATS](http://docs.cloudfoundry.com/docs/running/architecture/), [Heroku Routing Layer](https://devcenter.heroku.com/articles/http-routing), [CloudFoundry Router](http://docs.cloudfoundry.com/docs/running/architecture/)**Object Storage**: *storage and retrieval of objects via an HTTP API without requiring mounting, partitioning or formatting* **Examples**: [Amazon S3](http://aws.amazon.com/s3/), [OpenStack Swift](https://wiki.openstack.org/wiki/Swift), [Ceph Storage](http://ceph.com/ceph-storage/object-storage/)
**3: PaaS** *Users*: Professional Developers**Application PaaS (aPaas)**: *language runtimes such as JVM and others that allows deployment of code written in different languages such as Java, Python, Go, Node.js, Grails, Scala, PHP etc. into Application Containers* **Examples**:[Google App Engine](https://developers.google.com/appengine/), [Heroku Buildpacks](https://devcenter.heroku.com/articles/buildpacks), [CloudFoundry Buildpacks](http://docs.cloudfoundry.com/docs/using/deploying-apps/buildpacks.html)**Integration PaaS (iPaas)**: *provides the communication among applications whether it is in the cloud or on-premise with features like routing, transformations, queuing in the form of an Enterprise Service Bus (ESB) in the cloud* **Examples**: [TIBCO Cloud Bus](https://cloudbus.tibco.com/), [WSO2 StratosLive](http://wso2.com/products/enterprise-service-bus/), [Windows Azure BizTalk Services](http://www.windowsazure.com/en-us/services/biztalk-services/)**Database PaaS (dbPaas)**: *relational, key-value or column-oriented database delivered as a service, including things like availability and scalability, in most cases in a multi-tenant setup* **Examples**: [SimpleDB](http://aws.amazon.com/simpledb/), [DynamoDB](http://aws.amazon.com/dynamodb/), [Amazon Relational Database Service](http://aws.amazon.com/rds/), [Redshift](http://aws.amazon.com/redshift/), [Heroku Postgres](https://postgres.heroku.com/), [Windows Azure SQL Database](http://www.windowsazure.com/en-us/services/data-management/), [Salesforce Database.com](http://www.database.com/)
**4: Model-Driven PaaS** *Users*: Business Engineers**Business Process Management PaaS (bpmPaaS), Model-Driven aPaaS**: *higher level [domain-specific languages (DSLs)](http://www.theenterprisearchitect.eu/archive/2009/05/06/dsl-development-7-recommendations-for-domain-specific-language-design-based-on-domain-driven-design) runtimes as a service enabling [Model-Driven Development (MDD)](http://www.theenterprisearchitect.eu/archive/2009/08/05/a-metaphor-for-model-driven-engineering)* **Examples**: [Effekit](http://www.infoq.com/news/2013/03/baeyens-activiti), [Mendix App Platform](http://www.mendix.com/application-platform-as-a-service/)**Model-Driven iPaas**: *higher level DSLs in the integration domain runtimes as a service often including [graphical design environments](http://www.mulesoft.com/mule-studio)* **Examples**: [MuleSoft CloudHub](http://www.mulesoft.com/cloudhub/ipaas-cloud-based-integration-demand), [IFTTT](https://ifttt.com/wtf)**Business Analytics PaaS (baPaaS)**: *tools that focus on making data storage, data retrieval, and data processing accessible for business engineers including support for big data* **Examples**: [TIBCO Spotfire](http://spotfire.tibco.com/en/discover-spotfire/why-spotfire/self-service-data-discovery.aspx), [QlikView](http://www.qlikview.com/us/explore/products/big-data), [SAP BusinessObjects BI OnDemand](http://www.biondemand.com/businessintelligence), [Platfora](http://www.platfora.com/how/)
**5: App Services** *Users*: Citizen Developers**Compute App Services**: *pre-built computing services that can be configured and composed to extend existing applications or build completely new ones* **Examples**: [Google Prediction API](https://developers.google.com/prediction/), [force.com](http://www.force.com/why-force.jsp), [AppXpress](http://developer.tradecard.com/), [GT Nexus](http://www.gtnexus.com/), [Mendix App Services](http://www.mendix.com/application-platform-as-a-service/#modelDrivenDevelopment), [MuleSoft Anypoint connectors](http://www.mulesoft.com/cloud-connectors-full)**Communicate App Services**: *pre-built communication services that can be configured and composed to extend existing applications or build completely new ones* **Examples**: [Amazon Simple Email Service](http://aws.amazon.com/ses/), [force.com](http://www.force.com/why-force.jsp), [AppXpress](http://developer.tradecard.com/), [GT Nexus](http://www.gtnexus.com/), [Mendix App Services](http://www.mendix.com/application-platform-as-a-service/#modelDrivenDevelopment), [MuleSoft Anypoint connectors](http://www.mulesoft.com/cloud-connectors-full)**Store App Services**: *pre-built storage services that can be configured and composed to extend existing applications or build completely new ones* **Examples**: [Dropbox API](https://www.dropbox.com/developers/core), [force.com](http://www.force.com/why-force.jsp), [AppXpress](http://developer.tradecard.com/), [GT Nexus](http://www.gtnexus.com/), [Mendix App Services](http://www.mendix.com/application-platform-as-a-service/#modelDrivenDevelopment), [MuleSoft Anypoint connectors](http://www.mulesoft.com/cloud-connectors-full)
**6: Software as a Service (SaaS)** *Users*: End-users**Applications**: *end-user applications that could be built on top of previous layers (or on dedicated hardware)* Examples: [salesforce.com](http://salesforce.com), [Google Apps](http://www.google.com/enterprise/apps/business/), [Flickr](http://flickr.com), [GoToMeeting](http://www.gotomeeting.com/), [Workday](http://www.workday.com/), [Constant Contact](http://www.constantcontact.com/), [Basecamp](https://basecamp.com/)
Do read the original [full article by Johan here](http://www.theenterprisearchitect.eu/blog/2013/10/12/the-cloud-landscape-described-categorized-and-compared/) for a more detailed explanation of the above framework. And see how this framework can be used to compare the different cloud platforms such as OpenStack, Amazon Web Services, Heroku and CloudFoundry.