Platform as a Service resides within the space between Software as a Service (SaaS) and Infrastructure as a Service (IaaS).
IaaS delivers basic network, storage, and compute- processing capabilities as standardized, scalable service offerings. Example IaaS offerings include Amazon EC2/S3, Windows Azure VM Role, and RackSpace Cloud Servers). Software as a Service delivers business software capabilities (e.g. expense reporting, logistics, benefits enrollment) and information feeds as online web applications and web services. Pioneered in the early 2000’s, SaaS was used to by independent software vendors to efficiently deliver an application without requiring on-premise installation, remote updates, and cost prohibitive instance management. Platform as a Service is application middleware offered as a service to developers, integrators, and architects.
Infrastructure as a Service offers development team a bare-bones infrastructure environment, which requires adding middleware, application frameworks, and infrastructure services (i.e. identity, entitlement, application logging). IaaS encapsulates hardware complexity and applies operational best practices. Operation teams create IaaS Clouds by applying virtualization, automation, and standardization to hardware provisioning and allocation tasks. As teams look to apply provisioning and automation to the application platform, interest in DevOps has grown.
The DevOps movement creates a collaborative environment bridging development and operation team members. DevOps enables team members to jointly design, build, and deploy business application and service solutions. The environment closes the gap between business requirements, policies, available run- time resources, and solution development.
Development and operation teams use Platform as a Service to design, build, and deliver customized applications or information services. Instead of relying on standardized SaaS, teams using PaaS have more control over solution architecture, quality of service, user experience, data models, identity, integration, and business logic. PaaS offerings often support DevOp practices, which include self-service, automated provisioning, continuous integration, and continuous delivery.
Figure 1 illustrates the Platform as a Service space, which incorporates IaaS DevOps practices and increases solution customization options. IaaS could be considered an unfinished house requiring appliances, cabinetry, and fixtures. At the other spectrum extreme, SaaS offers a fully furnished dwelling with little customization. Even if purple dotted lime décor is not your personal style, a SaaS may require you to sit on the purple dotted lime green couch. Alternatively, a PaaS offers a finished house with an array of personalized furniture choices.
Figure 1. Relationship between Platform as a Service and other Cloud service layers
Because the industry broadly defines PaaS as the level above hardware infrastructure and below business applications, development teams do not commonly have clear comparison criteria to intelligently evaluate frameworks or determine adoption benefits. At a minimum, PaaS offerings differ from traditional application platforms by shielding teams from direct infrastructure ownership, management, and complexity. To maximize business benefit, PaaS offerings should significantly exhibit essential Cloud characteristics. The NIST Draft – Cloud Computing Synopsis and Recommendations defines Cloud characteristics as:
• On-demand self-service
• Broad network access
• Resource pooling
• Rapid elasticity
• Measured service
PaaS offerings will vary from cloud washed to cloud native. While cloud washed PaaS solutions will deliver familiar architecture and programming models, they will offer modest Cloud characteristic advancements and deliver only incremental improvement in your ability to meet user demand, rapidly deliver new capabilities, reduce time to market, and lower cost. Cloud native PaaS solutions will inject behavior into the application to decouple application code from run-time infrastructure details, increase application density, and facilitate distributed interactions. To determine whether a PaaS is cloud washed or cloud native, fully evaluate platform capabilities, attributes, and topology.
Cloud washed offerings are optimized for traditional, static single-tenant deployment. Single tenancy will force teams to provision a virtual instance for every client; consuming large amounts of machine resources (e.g. CPU, memory) and increasing administration effort. Cloud washed offerings exhibit elastic scale by provisioning (or de-provisioning) entire physical machines or virtual images, and manual effort is often required to synchronize application platform session state with hardware infrastructure changes.
Cloud washed solutions modify the architecture at the virtual machine and network level. The architecture simply adds hardware virtualization and application platform provisioning. Cloud washed solutions exhibit reference architecture models that closely correlate with those found in traditional, terrestrial on-premise environments. In a Cloud washed environment, application platform components (i.e. application server, enterprise service bus, business process management engine, identity store) are not re-factored to natively support cloud characteristics or supporting architectural attributes (i.e. tenancy, dynamic discovery).
Cloud’s roots reside in hardware infrastructure, IT operations, and web application delivery (i.e. SaaS). Many individuals believe PaaS benefits can be accrued without refactoring the application platform, and few vendors have delivered middleware supporting new application architecture and programming models, which facilitate cloud characteristics. As a result, PaaS offerings often recreate the traditional machine environment in the Cloud. The Cloud washed PaaS environments commonly do not shield application developers, integrators, and architects from infrastructure details (i.e. memory configuration, location, number of machine instances). While short-term benefit is derived by ‘quickly pushing bits into the Cloud’, the design and development experience remains the same.
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 container (e.g. Java Virtual Machine), application platform engines (e.g. business process engine, presentation engine, 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.
The Selecting a Cloud Platform White Paper describes PaaS evaluation criteria, capabilities, and attributes from an application architect’s perspective and architect’s desire to maximize Cloud characteristics while decoupling applications from infrastructure topology specifications.
I have posted a presentation Introducing Platform as a Service (PaaS)