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.

Share on Facebook26Tweet about this on Twitter5Share on Google+2Share on LinkedIn3