ThinkstockPlatform as a service (PaaS) is an enabler for software development. A third-party service provider delivers a platform to customers to 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 on 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.
[ Also on InfoWorld: What is cloud computing? Everything you need to know now ]
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, to simplify 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. It 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 using these resources and sometimes for the 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 (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 model. 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 choose 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 and a variety of managed database options.
PaaS vs. IaaS
For many people, the PaaS-vs.-IaaS debate has been settled by the market. However, 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.
PaaS advantages
One of the biggest advantages of using a PaaS is creating and deploying applications quickly and without the heavy lifting required to set up and maintain the environment in which they will run. In theory, this gives developers the ability to deploy faster and more regularly and focus on differentiating factors rather than solved problems like infrastructure provisioning.
Because a PaaS is maintained by a service provider, developers don’t have to worry about tiresome and repetitive tasks like patching and upgrades with service-level agreements and other guarantees. They can feel confident that their environment will be highly available 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.
Related video: What is the cloud-native approach?
In this 60-second video, learn how the cloud-native approach is changing the way enterprises structure their technologies, from Craig McLuckie, founder and CEO of Heptio and one of the inventors of the open-source system Kubernetes.
PaaS risks
Most of the risks associated with using a PaaS come down to the loss of control professional developers must allow 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.
[ Also on InfoWorld: PaaS, CaaS, or FaaS? How to choose ]
With a PaaS, developers have limited scope to change their development environment, leading 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
The leading PaaS providers are Amazon Web Services (AWS), Google Cloud, Microsoft Azure, Red Hat, and Salesforce's Heroku.
The Big Three cloud providers of AWS, Microsoft Azure, and Google Cloud have all made major investments into easing the 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 learning 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 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 the Red Hat Enterprise Linux foundation.
Salesforce Heroku
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 many 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. Still, 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. In this environment, you truly only pay for what you use.
[ Keep up with the latest developments in software development and cloud computing. Subscribe to the InfoWorld First Look and All Things Cloud newsletters ]
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.
You must be logged in to post a comment.