Which framework to choose - 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:
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 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
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