Platform as a service (PaaS) is an enabler for software development where a third-party service provider delivers a platform to customers so they can develop, run, and manage software applications without the need to build and maintain the underlying infrastructure themselves.
Most platforms as a service include templates or build packs, which provide an opinion as to how certain types of applications should be built, typically around the popular 12-factor methodology. This is why PaaS options are often labeled “opinionated” and are best suited for new, greenfield applications.
The advent of cloud computing opened the door for companies like Amazon Web Services, Microsoft, and Google to pull together the key building blocks required to launch an application into an opinionated platform, with the aim of simplifying many of the trickier and repetitive tasks required to deploy code down to a single command or click of the mouse.
This simplification enables faster and easier software development, as well as reduces the scope of a developer's work by hiding the underlying compute, storage, database, operating system, and network resources required to run the application. A PaaS provider does charge for use of these resources and sometimes for use of the platform itself, either per user (or “seat”) or by the number of applications being hosted.
What makes a PaaS
As with other cloud services such as infrastructure as a service (IaaS) and software as a service (SaaS), a PaaS is typically accessed over the internet but can also be deployed on-premises or in a hybrid mode. Regardless, the underlying infrastructure an application runs on is managed by the service provider. In many cases, the customer can decide where their application is physically hosted and is given a choice over how performant or secure that environment is, often at an additional cost.
The building blocks of a typical PaaS include:
- Managed infrastructure: The provider manages the servers, storage, data centers, and networking resources required to run your application.
- Design, testing, and development tools: An integrated development environment brings together the tools required to actually build software, including a source-code editor, compiler, and debugger. Some providers also include collaboration tools that let developers share and contribute to each other’s work.
- Middleware: A PaaS often includes the tools required to integrate various operating systems and user applications.
- Operating systems and databases: A PaaS provides the operating systems for applications to run on, as well as a variety of managed database options.
PaaS vs. IaaS
For many people, the PaaS-vs.-IaaS debate has been settled by the market, but the decision between consuming the underlying building blocks themselves (IaaS) versus an opinionated PaaS is still a decision many look to make today in the pursuit of speeding applications to market.
As with anything in software development, this decision is fraught with trade-offs and depends on what your organization is looking to achieve.
One of the biggest advantages of using a PaaS is the ability to create and deploy applications quickly and without the heavy lifting required to set up and maintain the environment in which they will run. This, in theory, gives developers the ability to deploy faster and more regularly, as well as focus on differentiating factors rather than solved problems like infrastructure provisioning.
Because a PaaS is maintained by a service provider, with service-level agreements and other guarantees, developers don’t have to worry about tiresome and repetitive tasks like patching and upgrades, and they can feel confident that their environment will be highly available and stable, although outages do still occur.
A PaaS can also be a handy gateway to new cloud-native development techniques and programming languages, without the upfront investment of building a new environment
Most of the risks associated with using a PaaS come down to the loss of control professional developers must allow for by handing over their applications to a third-party provider. These risks include information security and data residency concerns, vendor lock-in fears, and unscheduled outages.
With a PaaS, developers have limited scope to change their development environment, which can lead to some team members feeling hemmed in. The inability to make changes to the environment or get feature requests deployed by the service provider can lead to companies outgrowing their PaaS and building their own internal developer platform.
As Ben Kepes wrote for Computerworld in 2017, PaaS has been broadly subsumed by the idea of container management and automation, with the major providers like Red Hat, VMware, and the Big Three cloud providers duly pivoting in the direction of easing adoption of containers and Kubernetes in recent years.
That doesn't mean PaaS is dead, necessarily, but that PaaS has evolved as the industry broadly shifted to containerized applications orchestrated by Kubernetes. There will always be a market for simplifying software development, but the underlying platform for doing so has changed with the times.
The Big Three cloud providers of AWS, Microsoft Azure, and Google Cloud have all made major investments into easing adoption of their services over the past decade, bringing together their own cloud components into an opinionated PaaS for easier adoption.
Some of the leading PaaS options still on the market today include the following.
AWS Elastic Beanstalk
One of the first PaaS options, AWS Elastic Beanstalk enables quick deployment and management of cloud applications without having to learn about the underlying infrastructure. Elastic Beanstalk automatically handles the details of capacity provisioning, load balancing, scaling, and application health monitoring.
Cloud Foundry is an open source PaaS governed by the Cloud Foundry Foundation (CFF). It was originally developed by VMware and then transferred to Pivotal Software, a joint venture of EMC, VMware, and General Electric, before transferring to the CFF in 2015. Like OpenShift, Cloud Foundry is designed for building and running container-based applications, using Kubernetes for orchestration.
Google App Engine
Google App Engine is a PaaS offering for developing and hosting web applications in Google-managed data centers. Applications are sandboxed, run, and scaled automatically across multiple servers.
Microsoft Azure App Service
Microsoft Azure App Service is a fully managed PaaS that combines various Azure services into a single platform.
Red Hat OpenShift
Red Hat OpenShift is a family of PaaS offerings that can be cloud-hosted or deployed on-premises, for building and deploying containerized applications. The flagship product is the OpenShift Container Platform, an on-premises PaaS built around Docker containers orchestrated and managed by Kubernetes on a foundation of Red Hat Enterprise Linux.
An early and much-loved PaaS, Heroku may have lost its way since being acquired by the SaaS giant Salesforce in 2010. Today, Heroku is part of the broader Salesforce Platform of developer tools, supporting a wide range of languages and thousands of developers who run applications on it. In practice, using Heroku involves building on a common runtime deployed in virtualized Linux containers—or dynos, as Heroku calls them—spread across a dyno grid of AWS servers.
The evolution of PaaS
Platform as a service has matured into a significant cloud service category of its own, but it is increasingly at risk of being overtaken by containers (and by the managed container-as-a-service (CaaS) options being developed by the major vendors), serverless computing, and function-as-a-service (FaaS) options, which provide many of the same advantages of a PaaS but also promise greater portability, flexibility, and, in the case of serverless computing, an environment where you truly only pay for what you use.