Platform as a Service is today being used by a large number of enterprises. This article covers the characteristics, adoption patterns and architecture components of a PaaS platform. It also looks at why this service is so popular today.
Platform as a Service (PaaS) is a category of cloud computing services that provides a platform for customers to develop, run and manage applications without the complexity of building and maintaining the infrastructure associated with developing and launching applications. This is the core platform on which cloud native applications and supporting systems are based.
PaaS typically involves diverse application software infrastructure capabilities including application platforms, integration platforms, business analytics platforms, event-streaming services and mobile back-end services. In addition, a PaaS includes a set of monitoring, management, deployment and related capabilities.
There is always a conflict between the developers and the operations teams in the software development process. Developers are keen on getting their environments up and running, without having to wait. The operations team cares about performance and stability. PaaS creates a peaceful environment for both the groups. An application platform delivered as a service is described as PaaS and it is used to deploy the user code. Cloud Foundry, Cloudify and OpenShift open source environments can be used as PaaS.
Industry adoption of PaaS
451 Research’s Market Monitor forecasts that the total market for cloud computing — including PaaS, IaaS and Infrastructure Software as a Service (ITSM, backup, archiving, etc) – will hit US$ 44.2 billion by 2020.
Gartner predicts that within the PaaS category, the fastest-growing segment is the Database Platform as a Service (dbPaaS), which is expected to reach almost US$ 10 billion by 2021.
Forbes forecasts that 83 per cent of enterprise workloads will be in the cloud by 2020.
By 2021, enterprise applications will shift towards hyper agile architectures, with 80 per cent of application development being done on cloud platforms (PaaS) using microservices and cloud functions (e.g., AWS Lambda and Azure Functions). Over 95 per cent of new microservices deployed will be in containers (e.g., Docker).
Let’s now look at the characteristics and adoption patterns of a PaaS platform.
PaaS adoption patterns
A cloud computing service must satisfy five essential characteristics – it should be available as an on-demand service, have access to a network, have resource pooling, have elasticity and offer measured services. To achieve these essential characteristics, cloud computing provides three kinds of service models: Software as a Service (SaaS), Platform as a Service (PaaS) and Infrastructure as a Service. Figure 1 shows the cloud computing PaaS adoption pattern.
The key business drivers of PaaS adoption are:
- Reduced capex and opex to deliver business services
- Minimised IT costs by improving delivery time and the quality of the app
- Increased flexibility and integration between middleware components
Simple PaaS is the entry point into the PaaS space. It allows the provisioning of application services and exposing them as services into a self-service catalogue, automating the deployment and metering the resources used by this service.
Manage PaaS manages the SLA and QoS aspects of the provisioned applications like resiliency, application performance, security, etc.
Programming PaaS allows the applications to integrate with external applications or public clouds in order to implement auto-scaling and cloud bursting scenarios.
Process oriented PaaS allows the implementation of a DevOps process by creating a continuous delivery flow that automates the building, testing and delivery of an application into a cloud environment.
In addition to the above adoption patterns, the other variations of PaaS are listed below. These variations might align to one of the patterns explained above.
iPaaS: Integration Platform as a Service (iPaaS) is a suite of cloud services enabling the development, execution and governance of integration flows connecting any combination of on-premises and cloud-based processes, services, applications and data within individual or across multiple organisations. Examples include MuleSoft CloudHub, BizTalk Services, etc.
mPaaS: Mobile Platform as a Service (mPaaS) is the provision of an interactive development environment (IDE) to create mobile apps. mPaaS supports multiple mobile operating platforms.
dbPaaS: Database Platform as a Service is an on-demand, secure and scalable self-service database platform that automates the provisioning and administration of databases. When using dbPaaS, database assets make scaling easier and offer better reliability.
IoTPaaS: This provides common infrastructure to enable communication, security, analytics and the management for heterogeneous IoT topologies. It provides simpler and more agile models for building IoT solutions.
bpmPaaS: This is a complete pre-integrated BPM platform hosted in the cloud and delivered as a service. It is leveraged for the development and execution of business process and workflow centric applications across enterprises. Examples are Pega Cloud, OpenText Cordys Cloud, etc.
Characteristics of PaaS
The following are some basic characteristics of PaaS:
- Offers services to develop, test, deploy, host and maintain applications in the same integrated development environment
- Multi-tenant architecture in which multiple concurrent users use the same development application
- Built-in scalability of deployed software, including load balancing and failover
- Integration with heterogeneous platforms and systems
- Support for collaboration within the development team
- Tools to handle billing and subscription management
PaaS reference architecture
The PaaS cloud delivery model exclusively focuses on application development and delivery. PaaS advocates a new kind of development based on native support for concepts like agile development, unit testing, continuous integration and automatic scaling, while providing a range of middleware capabilities. Applications developed on these can be deployed as services and managed across thousands of application instances, which are referred to as nodes.
The significant PaaS architecture components are described below.
Application layer: This comprises reusable components for the reconstruction of native components in the cloud.
Resilience: The circuit breaker pattern is commonly used to ensure that when there is a failure, a failed service does not adversely affect the entire system. A circuit breaker is an always-live system keeping watch over dependency invocations. In case of a high failure rate, the circuit breaker stops the calls from going through for a short period of time.
Service discovery: In a modern, cloud-based microservices application, service instances have dynamically assigned network locations. Moreover, service instances change dynamically because of auto-scaling, failures and upgrades. Consequently, client code needs to use a more elaborate service discovery mechanism to identify the available instance.
Configuration: This externalises application configuration to a centralised repository across all the environments. It decouples the configuration from the implementation and it is possible to update the configuration without impacting any of the applications. Each update on the configuration files in the repository is automatically propagated to the running application instances.
Processes and integration: This involves transversal solutions, which facilitate the implementation of business processes and integration between the various services making up the system.
Messaging: Provides stable communication patterns that scale across multiple network topologies. It supports communication via point-to-point or the pub sub-model. Applications are likely to be written in multiple programming languages, so it is necessary that the communication be ‘polyglot’ and therefore data-centric. This provides maintainability, scalability, efficiency and robustness for applications.
Logging and metrics: This is a system for aggregating and streaming logs and metrics from all applications. Metrics are important to measure and monitor an application or a service’s health and performance. A few critical metrics to be captured are: service/system availability, reliability, response time, throughput/bandwidth, capacity, scalability, latency, etc. Also, logs from all the applications will be aggregated and can be used or archived by third-party applications for further analysis.
Security: This is responsible for authentication and securing the service endpoints. Other aspects like the access control and encryption types used are also covered.
Application framework: This provides various platform runtimes for cloud native applications to execute, as well as visual assembly capability to assemble an application on the cloud.
Data layer: This offers flexible and scalable information storage, together with the tools necessary to exploit and obtain the maximum value from data.
IaaS: This provides self-service for infrastructure elements which sustain the application’s components.
Containers as a Service: This allows users to have a massively scalable, easily automated and replicated execution environment.
Zero downtime deployments: This is about frequently deploying a new version of a service without impacting its availability. Multiple configurations need to be done in PaaS to achieve zero downtime deployments.
Failover and recovery: This deals with failover, disaster recovery strategies and the configurations to be implemented.
Scaling: This is responsible for scaling the application(s) when required. It deals with scaling strategies and configurations.
Security patching: This is responsible for applying security patches to various components of the platform.
Platform upgrades: This is responsible for applying product upgrade patches as required.
Cloud services: Any external dependency that the cloud native application has is a backing service. Cloud services will be plugged to the cloud native application using the PaaS application framework. User defined services can also be plugged to the cloud native application as cloud services. This might depend on the PaaS platform in question. The categories of cloud services are databases, analytics, Big Data, object stores, etc.
Operation: This ensures that the system can be monitored and managed in a simple way by the operations team.
Key considerations when selecting open source PaaS platforms
The key factors to be taken in consideration when choosing a PaaS platform are listed below:
- Deployment flexibility
- Ease of operations
- Choice of application stacks
- Language, database and framework support
- Scaling capabilities
- Tooling for development and operations
- How well it meets the needs of the business
Key open source PaaS platforms
a) Cloud Foundry: This is an open Platform as a Service that provides a choice of clouds, developer frameworks and application services. Cloud Foundry makes it faster and easier to build, test, deploy and scale applications. It has different distributions, of which Pivotal and IBM are popular. It contains the application runtime and container runtime. It also has the Pivotal application and container services.
b) OpenShift: This is Red Hat’s cloud computing PaaS offering. It is an application platform in the cloud where developers and teams can build, test, deploy and run their apps.
c) Cloudify: This was developed and designed on the principles of openness, in order to power the IT transformation revolution. It enables organisations to design, build and deliver various business applications and network services. The latest version of Cloudify is 4.3, which incorporates enhanced features like advanced security, control and true self-service. Cloudify 4.3 has introduced a totally new concept for container orchestration with Kubernetes (Kubernetes Cloud Native Orchestration).
Table 1 shows the basic functionalities of the Cloud Foundry, Cloudify and OpenShift architectural components. This is purely based on our views and the authenticity of the features should ideally be revalidated by the cloud provider.
To summarise, PaaS is a computing platform that enables the quick and easy creation of Web applications without the necessity of buying and maintaining the underlying software and infrastructure.
From the industry adoption statistics (as shown earlier in the article), it can be seen that PaaS adoption is picking up very rapidly. PaaS provides a huge relief to enterprises by helping them bring down their capital and operational expenditures when delivering their services. It enables the enterprise applications to be run on any cloud platform, whether public or private. This means that a PaaS application developed on Amazon AWS can easily be ported to Microsoft Azure, and from there to VMware vSphere and to Red Hat RHEV, etc.
PaaS is useful when multiple developers are working on a project or when other external users need to collaborate with the development process, i.e., it is best suited for agile software development, because it eases the difficulties around the rapid development of software.
The authors would like to thank Hari Kishan Burle and Raju Alluri of the Global Enterprise Architecture Group of Wipro Technologies for giving their time and support to bring out this article.