A framework for categorizing and comparing cloud platforms – OpenStack, AWS, Heroku, CloudFoundry!

Cumulus_cloud

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, Users Compute Communicate Store
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, OpenStack Nova, MS Windows Azure, Google Compute Engine, IBM SmartCloud
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, OpenStack 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, OpenStack Cinder
2: Foundational PaaS
Users: DevOps
Application Containers:
an isolated, self-described, infrastructure-agnostic container for running apps.
Examples: Docker, Dyno, CloudFoundry Warden, Imctfy
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, Heroku Routing Layer, CloudFoundry Router
Object Storage:
storage and retrieval of objects via an HTTP API without requiring mounting, partitioning or formatting
Examples: Amazon S3, OpenStack Swift, Ceph 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, Heroku Buildpacks, CloudFoundry Buildpacks
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, WSO2 StratosLive, Windows Azure 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, DynamoDB, Amazon Relational Database Service, Redshift, Heroku Postgres, Windows Azure SQL Database, Salesforce Database.com
4: Model-Driven PaaS
Users: Business Engineers
Business Process Management PaaS (bpmPaaS), Model-Driven aPaaS:
higher level domain-specific languages (DSLs) runtimes as a service enabling Model-Driven Development (MDD)
Examples: Effekit, Mendix App Platform
Model-Driven iPaas:
higher level DSLs in the integration domain runtimes as a service often including graphical design environments
Examples: MuleSoft CloudHub, IFTTT
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, QlikView, SAP BusinessObjects BI OnDemand, Platfora
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, force.com, AppXpress, GT Nexus, Mendix App Services, MuleSoft Anypoint connectors
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, force.com, AppXpress, GT Nexus, Mendix App Services, MuleSoft Anypoint connectors
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, force.com, AppXpress, GT Nexus, Mendix App Services, MuleSoft Anypoint connectors
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, Google Apps, Flickr, GoToMeeting, Workday, Constant Contact, Basecamp

Do read the original full article by Johan here 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.