Platform as a Service (PaaS)

Platform as a Service, abbreviated as PaaS, is a descriptive term for one type of cloud-based service offering.   PaaS is one of three terms used to describe the most common cloud service offerings, the others being Infrastructure as a Service (IaaS) and Software as a Service (SaaS).  While references to many other “as a Service” models can be found, these additional categorizations are mostly finer-grained ways of describing different SaaS offerings (for example, Database as a Service or Caching as a Service).

As a group, these terms help differentiate the different ways in which responsibility can be divided up between a cloud service provider and a user. The primary distinction between these different service arrangements is how much of the total software and hardware stack is managed by the user vs. by the cloud provider. The chart below shows how responsibility is shared in each model.

Comparing On Premise with Infrastructure as a Service, Platform as a Service, and Software as a Service.
In the on-premises model at left, there is no cloud provider, and everything is the responsibility of the user. As you move from left to right, each deployment model increases the role of the cloud service provider, and consequently offloads work from the user.

The PaaS Service Model

Platform as a Service is the middle tier of cloud service models, falling between the IaaS model (which is basically an on-premises model using somebody else’s hardware) and the SaaS model (which is a turnkey, ready-to-run software stack). PaaS is preferred when the user wants to offload the responsibility for managing the operating system (updates and patches) and middleware.

A common consumer for PaaS services is the developer community. In order for PaaS to be economically viable for the provider, there has to be a sufficiently large community of potential customers who want to run essentially the same software stack (OS and middleware). There are several good candidates for this when you look at what developers want in their development environment – for example, LAMP (originally Linux operating system, Apache Web Server, MySQL database, PHP programming language; variations of this will switch out the database or language components). JavaScript developers may instead prefer the MEAN stack (MongoDB, ExpressJS, AngularJS, NodeJS – still using Linux as the underlying OS).

In a developer-oriented stack like those described above, the cloud provider will leave it up to the user to install their preferred IDE and other tools, although some of those tools (source repositories, build environments) may be hosted elsewhere as SaaS services.

Common Advantages of All Cloud Service Models

There are certain advantages that are common to all cloud-based service models. These are the agility and flexibility that comes from being able to bring additional hardware resources online on-demand, and to only pay for the resources consumed.  This makes it easy to adapt to either regular seasonal demand spikes or unusual one-time or infrequent surges. With cloud deployments you can take advantage of the distributed resources of your cloud provider to place resources in the countries or regions that are consuming them, resulting in lower latency and better overall performance, as well as conforming with local regulations regarding cross-border data movement.

Advantages of PaaS

As mentioned above, one of the larger markets for PaaS architectures is software developers.  Moving some or all software development activities into a PaaS environment, rather than self-hosted on developer workstations, can improve collaboration, especially for geographically distributed teams. Many of the best practices of agile development teams assume a shared environment for source control, continuous integration, testing, and deployment, and many PaaS solutions cater to this by offering a suite of integrated tools for these functions.

PaaS may make it easier for teams to develop for and support different hardware environments, as the cloud provider can provide access to many different environments, so that multiple versions of Linux, Windows, and various proprietary operating systems can all be part of the pool of resources available for development and CI/CD activities.

The ability to access the PaaS environment from anywhere is very important for developers who may need to work from multiple locations.

Disadvantages of PaaS

The tools that a development team has used for on-premises development may not be available via PaaS, so moving to a cloud-based solution may be disruptive, especially when trying to support existing or legacy software that must still be maintained on the old infrastructure, while moving work on new releases or brand-new project development into the PaaS environment.

Security policies will be set and enforced by the PaaS provider, and these may or may not be ideally suited for the type of security appropriate for the project (collaborative development of free, open source software would suggest a different security model than proprietary development work in highly regulated industries such as medical or financial services.

Examples of PaaS

Some examples of PaaS offerings include:

  • AWS Elastic Beanstalk
  • Google App Engine
  • Microsoft Azure
  • OpenShift
  • Hazelcast Cloud
  • Apache Stratos
  • IBM Cloud