Which framework to choose - OpenStack, AWS, Heroku, CloudFoundry!

Ashutosh Bijoor

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:

Cloud_Platform_Framework_By_Mendix.png

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

1: Software Defined Datacenter Users: Infrastructure Engineers

Compute

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

Communicate

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

Store

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

Compute

Application Containers: an isolated, self-described, infrastructure-agnostic container for running apps. Examples: Docker, Dyno, CloudFoundry Warden, Imctfy

Communicate

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

Store

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

Compute

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

Communicate

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

Store

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

Compute

Business EngineersBusiness 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

Communicate

Model-Driven iPaas:higher level DSLs in the integration domain runtimes as a service often including graphical design environments Examples: MuleSoft CloudHub,IFTTT

Store

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

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

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

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