BACKGROUND IMAGE: iSTOCK/GETTY IMAGES
Platform as a service (PaaS) is a cloud computing model in which a third-party provider delivers hardware and software tools -- usually those needed for application development -- to users over the internet. A PaaS provider hosts the hardware and software on its own infrastructure. As a result, PaaS frees users from having to install in-house hardware and software to develop or run a new application.
PaaS architecture and how it works
PaaS does not typically replace a business's entire IT infrastructure. Instead, a business relies on PaaS providers for key services, such as application hosting or Java development.
A PaaS provider builds and supplies a resilient and optimized environment on which users can install applications and data sets. Users can focus on creating and running applications rather than constructing and maintaining the underlying infrastructure and services.
Many PaaS products are geared toward software development. These platforms offer compute and storage infrastructure, as well as text editing, version management, compiling and testing services that help developers create new software more quickly and efficiently. A PaaS product can also enable development teams to collaborate and work together, regardless of their physical location.
PaaS pros and cons
The principal benefit of PaaS is simplicity and convenience for users -- the PaaS provider supplies much of the infrastructure and other IT services, which users can access anywhere via a web browser. PaaS providers then charge for that access on a per-use basis -- a model that many enterprises prefer, as it eliminates the capital expenses they traditionally have for on-premises hardware and software. Some PaaS providers charge a flat monthly fee to access their service, as well as the apps hosted within it.
Service availability or resilience, however, can be a concern with PaaS. If a provider experiences a service outage or other infrastructure disruption, this can adversely affect customers and result in costly lapses of productivity. Provider lock-in is another common concern, since users cannot easily migrate many of the services and much of the data produced through one PaaS product to another competing product. Users must evaluate the business risks of service downtime and lock-in before they commit to a PaaS provider.
Internal changes to a PaaS product are also a potential issue. For example, if a PaaS provider stops supporting a certain programming language or opts to use a different set of development tools, the impact on users can be difficult and disruptive. Users must follow the PaaS provider's service roadmap to understand how the provider's plans will affect its environment and capabilities.
PaaS vs. SaaS vs. IaaS
With IaaS, a provider supplies the basic compute, storage and networking infrastructure along with the hypervisor (the virtualization layer). Users must then create virtual machines, install operating systems, support applications and data, and handle all of the configuration and management associated with those tasks.
With PaaS, a provider offers more of the application stack than IaaS providers, adding operating systems, middleware (such as databases) and other runtimes into the cloud environment.
With SaaS, a provider offers an entire application stack. Users simply log in and use the application that runs completely on the provider's infrastructure.
Leading PaaS vendors
There are many examples of PaaS providers that supply the tools and services needed to build enterprise applications in the cloud.
Google App Engine supports distributed web applications using Java, Python, PHP and Go. Red Hat OpenShift is a PaaS offering for creating open source applications using a wide variety of languages, databases and components. The Heroku PaaS offers Unix-style container computing instances that run processes in isolated environments, while supporting languages like Ruby, Python, Java, Scala, Cloture and Node.js.
Microsoft Azure supports application development in .NET, Node.js, PHP, Python, Java and Ruby, and allows developers to use software developer kits (SDKs) and Visual Studio to create and deploy applications. AWS Elastic Beanstalk allows users to create, deploy and scale web applications and services developed with Java, .NET, PHP, Node.js, Python, Ruby, Go and Docker on common servers, such as Apache, Nginx, Passenger and IIS.
While many PaaS providers offer similar services, each provider can pose unique nuances and limitations. It is important for users to test prospective providers to ensure their services meet any business or technical requirements, such as languages supported and service availability.