This blog post describes the Selecting a Cloud Platform White Paper.
Cloud benefits are compelling, and your peers are starting to demonstrate successful test projects, but you realize slick product demonstrations often do not mirror real world complexity. You find your personal Cloud experience challenged by disconnected platform silos, complicated application architecture, diverse infrastructure technologies, and cloud washed services. How can Cloud and Platform as a Service (PaaS) improve a development team’s ability to rapidly deliver high value business applications and meet user demand?
To improve application and information service delivery, teams must transform the development experience. Cloud native solutions shield teams from infrastructure details and inject new behavior into the application. Cloud native solutions are natively multi-tenant, elastic, dynamically wired, and incrementally testable. The entire application platform stack spanning virtual machine, managed code containers, application platform engines (e.g. business process, presentation, enterprise service bus, business activity monitor), and persistence should support multi-tenancy. Multi-tenancy enables teams to customize applications and services per consumer by changing run-time configuration settings instead of provisioning new instances. 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. To further increase business agility, the PaaS environment must enable rapid release iterations and incremental solution testing.
When attempting to improve software application delivery using Cloud services, development teams often specify the following IT objectives:
- Ensure an application satisfies consumer demand while maximizing resource utilization
- Scale workload processing and increase performance while minimizing infrastructure spend
- Allocate, provision, monitor, manage, and administer resources and policies across multiple tenants, nodes, and locations
- Rapidly deploy application and service components on a preferred topology that meets deterministic performance requirements (e.g., replication, utilization, latency, bandwidth, and coherency)
Platform as a Service (PaaS) should improve the infrastructure’s ability to a support IT objectives. The following PaaS capabilities are used to achieve these objectives:
- DevOps Tooling
- Automated Governance
- Service Level Management
- Consumption based pricing
While all middleware vendors purport to deliver a platform powering the Cloud, all PaaS offerings do not deliver appropriate granularity, abstraction, capabilities, simplicity, and solution breadth. To ascertain how a PaaS supports achieving IT objectives, teams can evaluate and compare PaaS offerings across the following categories:
- Cloud Characteristics
○ Measures characteristics (i.e. on-demand self-service, resource pooling, rapid elasticity, and measured service) used to distinguish Cloud solutions from traditional application solutions.
- Cloud Dimensions
○ Measures how widely the solution can be shared, who is responsible for PaaS environment management, and where the PaaS is located
- Production Ready
○ Measures PaaS maturity and suitability for enterprise, mission critical use
- DevOps Activities and Lifecycle Phases
○ Measures how to design, construct, deploy, and manage applications and services using DevOps practices (i.e. continuous integration, continuous delivery, automated release management, and incremental testing)
- Cloud Architecture
○ Measures architecture principles, concepts, and patterns enabling applications to dynamically execute parallel workloads across a highly distributed environment
- Platform Services
○ Measures how completely the PaaS satisfies development of complex applications by providing comprehensive application middleware components and services
- Programming Model
○ Measures programming languages and frameworks, which facilitates building applications and services exhibiting Cloud characteristics
A scorecard can help enterprise architects and solution architects evaluate and select PaaS offerings. The scorecard can be used to shortlist PaaS providers, build questions posed in a Request for Proposal (RFP) document, or generate use case scenarios. The scorecard should list detailed criterion and visually illustrate strengths and weaknesses. When your team is selecting a PaaS provider, road test the PaaS offerings. At a minimum, become comfortable with your team’s ability to realize goals, measure improvements using key metrics, and confidently design, build, deploy, and manage cloud-enabled applications.
Platform as a Service can deliver limited, incremental benefits, or provide a transformational opportunity. To maximize innovation and transformation, shield development teams from hardware infrastructure details, raise the level of abstraction, and inject new Cloudy behavior into the application. Choose Cloud native solutions that are natively multi-tenant, elastic, dynamically wired, and incrementally testable. I have created an evaluation framework and quick start roadmap to assist your selection process.