Cloud-Aware Applications and PaaS Architecture
David Linthicum has an excellent post bashing vendor-driven Cloud ‘thought leadership’ and Cloud offerings. Dave’s summer 2012 outlook on the Cloud Platform market:
“What’s missing is innovation and creativity. There are many problems that still need solving in the cloud computing space, and new approaches should be created to solve them.”
Unfortunately, David didn’t attend my Cloud aware application talk at Cloud Open 2012, and I don’t think that I have yet grabbed his attention on activity at WSO2. Since 2009, we both have been waiting for vendors and consumers to realize existing application architecture limitations and adopt new innovative paradigms. I agree with David, a recent review of 20 Cloud reference architecture models found little innovation or creativity.
Cloud Native PaaS run-time environments and Cloud aware applications should significantly exhibit essential Cloud characteristics. To fully achieve cloud characteristics, new architecture design paradigms and capabilities are required. In a selecting a cloud platform white paper, I mention DevOps tooling, automated governance, service level management, and consumption based pricing as key PaaS capabilities. In his blog post, Dave mentions a few key focus areas:
“Service governance comes to mind, as does service management. Also, most provisioning systems I see clearly need new and innovative approaches.”
Cloud native solutions shield teams from infrastructure details and inject new behavior into the application. Within WSO2 Stratos, familiar middleware services are available (enabling an apples-to-apples comparison), and Cloud native, innovative provisioning infrastructure increases tenant density and streamlines code deployment and synchronization. Multi-tenancy within middleware containers enables teams to customize applications and services per consumer by changing run-time configuration settings instead of provisioning new instances.
Improving service governance will require more rigorous policy definition, defined service catalogues, and tiered service levels. Extending SOA Service governance with a consumer store delivering on-demand subscription will extend the life of SOA investment.
Service management is the run-time application of service governance policies. As user demand grows and shrinks, an elastic and distributed platform will right-size application resources based on utilization, quality of service, and cost optimization policies. When resources are added, subtracted, or moved, the automated service management components dynamically re-wire resource connections. How many PaaS offerings are policy-aware and dynamically re-shape topology?
Cloud aware applications and cloud optimized PaaS architecture requires familiar and new infrastructure components. The list below and Figure 1 outlines main components and sub-components:
- Cloud Platform
- Cloud Management
- PaaS Manager
- Cloud Governance
- Identity Management
- Asset Repositories and Registries(tenant code, service endpoints, meta-data, configuration, policies)
- Infrastructure as a Service (AWS, Eucalyptus, OpenStack, CloudStack)
- Platform as a Service Run-time Framework (i.e. WSO2 Stratos, Cloud Foundry, RedHat OpenShift)
- Service-aware, tenant-aware
- Elastic Load Balancer
- Stratos Controller
- Asset/Code Deployer
- Asset/Code Synchronizer
- Metering and Billing
- Cloud Native Container(s)
- Application Platform Services (web server, database, ESB)
- Tenant 1
- Tenant (n)
Figure 1. Cloud aware PaaS architecture components.
Dave, I look forward to talking with you about Cloud aware application architecture, patterns, and practices.