A framework for categorizing and comparing cloud platforms - OpenStack, AWS, Heroku, CloudFoundry!
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](http://www.mulesoft.com/mule-studio) 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.