PaaS (platform-as-a-service) is a form of cloud computing that enables software developers to build, run, and manage software applications easily, without worrying about underlying infrastructure. The advent of cloud computing opened the door for vendors to bundle together the key building blocks required to create an application, with the aim of simplifying or even automating many of the trickier and more repetitive tasks required to deploy code.
PaaS accomplishes all that, but with few exceptions, it has become a service available on IaaS (infrastructure as a service) clouds rather than a separate cloud offering and often includes Kubernetes container orchestration. Serverless computing, a type of cloud platform that makes development of certain types of applications even easier, is considered an evolution of PaaS.
The simplification inherent in PaaS enables faster and easier software development, reducing the scope of a developer’s work by hiding the underlying compute, storage, database, operating system, and network resources required to run the application. Commercial PaaS offerings charge customers for the use of these resources and sometimes for the platform itself, either per seat or by the number of applications being hosted.
Most PaaS tools provide templates or build packs aimed at easing the process of constructing certain common application types by abstracting away a set of common decisions or processes for developers. This is why PaaS options are often labeled “opinionated,” as they provide developers with a clearly defined, if somewhat restricted, method for building and running applications.
PaaS defined
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.
The underlying infrastructure that applications eventually run on is fully managed by the service provider. In many cases, the customer can decide where the application is 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, the PaaS vs. IaaS debate has been settled by the market, with the vast majority of developers happy to assemble applications themselves using IaaS building blocks. Nonetheless, developers looking for the fastest route to market may still turn to PaaS in pursuit of speed and simplicity.
As with any decision in software development, this has its trade-offs and depends on what an organization is looking to achieve. For example, an organization that has invested heavily a particular PaaS solution may want to avoid the disruption of moving to a more modern development approach if that PaaS still enables developers to produce suitable applications quickly. In other cases, the limited developer choices inherent in PaaS may actually be beneficial in heavily regulated industries.
PaaS advantages and disadvantages
One of the biggest advantages of using a PaaS is the ability to create and deploy applications quickly, 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 at more frequent intervals, as well as to focus on differentiating business logic rather than solve 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 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 that professional developers must accept by handing over their applications to a third-party platform provider. These risks include information security and data residency concerns, vendor lock-in fears, quickly rising hosting costs, 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.
PaaS examples
Among the leading PaaS providers are AWS (Amazon Web Services), Google Cloud Platform, Microsoft Azure, Red Hat OpenShift, and Salesforce’s Heroku.
The Big Three cloud providers—AWS, Microsoft Azure, and Google Cloud—have all made major investments into luring developers to 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
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. Cloud Foundry is designed for building and running container-based applications, using Kubernetes for orchestration.
Google App Engine
Google App Engine was another early PaaS entry. It was designed to support the development and hosting of 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, Kubernetes-based PaaS for building containerized applications on a foundation of Red Hat Enterprise Linux.
Salesforce Heroku
An early and much-loved PaaS, Heroku may have lost its way since being acquired by the SaaS giant Salesforce in 2010, but it remains a popular option for developers.
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 rise of serverless PaaS
They may not necessarily self-associate with the term PaaS, but modern software development platforms like Vercel and Netlify have seen great success in recent years by providing developers with an elegant experience and a simple route to hosting their applications.
At their heart, these providers promise to separate the task of front-end web development (using popular web frameworks such as React) from the job of actually running that code in production.
By building out global edge networks on top of the major cloud providers, these vendors offer a managed route to deploying modern web applications, without breaking flow or having to employ a devops team to worry about running the applications at scale.
The major cloud vendors also are pushing to help customers take their code from container to production faster by abstracting operational tasks like scaling, patching and managing servers through their AWS Fargate, Azure Container Instances, and Google Cloud Run products.
At the same time, the major clouds also offer their own serverless computing options—including AWS Lambda, Google Cloud Functions, and Microsoft Azure Functions. Essentially, these PaaS-like platforms enable developers to grab functions from a library to build the constituent microservices that comprise modern applications—without having to consider the underlying server infrastructure as they code. Serverless applications have the added advantage of consuming zero cloud cycles until a user request kicks them into gear.
Kubernetes vs. PaaS
Despite its promise, PaaS never became a mainstream way to build enterprise-grade applications, as developers generally sought out greater control and scalability on their own terms. This led us instead to the era of software containers and Kubernetes.
The problem with the container orchestration tool Kubernetes is that it is a complex open source technology with a steep learning curve. For developers who outgrow their PaaS and make the move to containers orchestrated by Kubernetes, the overhead of managing that platform requires a specialized team of engineers, trading off the simplicity that a PaaS provides for developers. That decision may be worthwhile in the long run, as Kubernetes gives you a consistent way to deploy and run applications in virtually any environment, but it’s not one to be taken lightly.
PaaS may have long ago been broadly subsumed by the idea of container management and automation, with major platform vendors like Red Hat, VMware, and the public cloud providers duly pivoting in the direction of easing adoption of containers and Kubernetes in recent years. This has led to a plethora of managed Kubernetes, containers-as-a-service (CaaS), serverless computing, and function-as-a-service (FaaS) options, all aimed at easing the burden of managing container clusters and flattening out that learning curve, while still giving developers the flexibility and portability they demand.
None of this means that PaaS is dead, necessarily, but PaaS is certainly evolving as the industry broadly shifts towards 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.