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 developers from having to install in-house hardware and software to develop or run a new application.
How PaaS works
As mentioned above, PaaS does not replace a company's entire IT infrastructure for software development. It is provided through a cloud service provider's hosted infrastructure with users most frequently accessing the offerings through a web browser. PaaS can be delivered through public, private and hybrid clouds to deliver services such as application hosting and Java development.
Other PaaS services include:
- Development team collaboration
- Application design and development
- Application testing and deployment
- Web service integration
- Information security
- Database integration
Users pay for PaaS on a per-use basis. However, some providers charge a flat monthly fee for access to the platform and its applications.
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. The ability to pay on a per-use basis allows enterprises to eliminate the capital expenses they traditionally have for on-premises hardware and software.
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.
Vendor 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 vendor lock-in when they select 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 plan will affect its environment and capabilities.
Many PaaS products are geared toward software development. These platforms offer compute and storage infrastructures, 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 architectures keep their underlying infrastructure hidden from developers and other users. As a result, the model is similar to serverless computing and function-as-a-service architectures, where the cloud service provider manages and runs the server and controls the distribution of resources.
Types of PaaS
Various types of PaaS are currently available to developers. They are:
Public PaaS is best fit for use in the public cloud. A public PaaS allows the user to control software deployment while the cloud provider manages the delivery of all other major IT components necessary to the hosting of applications, including operating systems, databases, servers and storage system networks.
Public PaaS vendors offer middleware that enables developers to set up, configure and control servers and databases without the necessity of setting up the infrastructure side of things. As a result, public PaaS and infrastructure as a service (IaaS) run together, with PaaS operating on top of a vendor's IaaS infrastructure while leveraging the public cloud. Unfortunately, this means the user is tied to a single public cloud option that they may not want to use.
Some small and medium-sized businesses have adopted public PaaS, but bigger organizations and enterprises have refused to embrace it due to its close ties to the public cloud. This is primarily a result of the large number of regulations and compliance issues that fall on enterprise app development within the public cloud.
Private PaaS aims to deliver the agility of public PaaS while maintaining the security, compliance, benefits and potentially lower costs of the private data center. A private PaaS is usually delivered as an appliance or software within the user's firewall which is frequently maintained in the company's on-premises data center. A private PaaS can be developed on any type of infrastructure and can work within the company's specific private cloud.
Private PaaS allows an organization to better serve developers, improve the use of internal resources and reduce the costly cloud sprawl that many companies face. Furthermore, private PaaS allows developers to deploy and manage their company's applications while also abiding by strict security and privacy requirements.
Hybrid PaaS combines public PaaS and private PaaS to provide companies with the flexibility of infinite capacity provided by a public PaaS and the cost efficiencies of owning an internal infrastructure in private PaaS. Hybrid PaaS utilizes a hybrid cloud.
Communication PaaS (CPaaS) is a cloud-based platform that allows developers to add real-time communications to their apps without the need for back-end infrastructure and interfaces. Normally, real-time communications occur in apps that are built specifically for these functions. Examples include Skype, FaceTime, WhatsApp and the traditional phone.
CPaaS provides a complete development framework for the creation of real-time communications features without the necessity of a developer building their own framework, including standards-based application programming interfaces, software tools, prebuilt apps and sample code.
CPaaS providers also help users throughout the development process by providing support and product documentation. Some providers also offer software development kits as well as libraries that can help build applications on different desktop and mobile platforms. Development teams that choose to use CPaaS can save on infrastructure, human resources and time to market.
Mobile PaaS (mPaaS) is the use of a paid integrated development environment for the configuration of mobile apps. In an mPaaS, coding skills are not required. MPaaS is delivered through a web browser and typically supports public cloud, private cloud and on-premises storage. The service is usually leased with pricing per month, varying according to the number of included devices and supported features.
MPaaS usually provides an object-oriented drag-and-drop interface which allows users to simplify the development of HTML5 or native apps through direct access to features such as the device's GPS, sensors, cameras and microphone. It often supports various mobile OSes.
Companies often use mPaaS for the creation of applications that will provide both internal and customer-facing uses. This implementation can promote a BYOD environment and productivity apps without the requirement of mobile app developers or extra IT support.
OpenPaaS is a free, open source, business-oriented collaboration platform that is attractive on all devices and provides useful web apps, including calendar, contacts and mail applications. OpenPaaS was designed to allow users to quickly deploy new applications with the goal of developing a PaaS technology that is committed to enterprise collaborative applications, specifically those deployed on hybrid clouds.
PaaS solutions are frequently used in the development of mobile applications. However, many developers and companies also use PaaS to build cross-platform apps since it provides a flexible and dynamic solution that has the ability to create an application that can be operated on almost any device.
Another use of PaaS is in DevOps tools. PaaS provides application lifecycle management features as well as specific features to fit a company's product development methodologies. The model also allows DevOps teams to insert cloud-based continuous integration tools that add updates without producing downtime. Furthermore, companies that follow the waterfall model can deploy an update using the same console they employ for everyday management.
PaaS can also be used to reduce an application's time to market by automating or completely eliminating housekeeping and maintenance tasks. Additionally, PaaS can decrease infrastructure management by helping to reduce the burden of managing scalable infrastructure. PaaS removes the complexities of load balancing, scaling and distributing new dependent services. Instead of the developers controlling these tasks, the PaaS providers take responsibility.
Furthermore, with the support that PaaS now provides for newer programming languages and technologies -- such as serverless functions and containers -- developers can use the model to introduce new channels of technical growth. This is especially relevant to industries where technical change is a slow process, like banking and manufacturing. PaaS allows these organizations to adapt to the newest offerings without completely changing their business processes.
Platform as a service examples
There are many examples of PaaS providers that supply the tools and services needed to build enterprise applications in the cloud. Among the leading providers are:
- Amazon Web Services (AWS)
- Red Hat
- Engine Yard
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, Clojure 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 and Azure DevOps 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 has 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.
Differences between PaaS, IaaS and SaaS
PaaS is one of three main categories of cloud computing services. The other two are software as a service (SaaS) and infrastructure as a service (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 solutions, 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.