Platform-as-a-Service (PaaS) is one of the three major categories of cloud computing services (along with IaaS and SaaS).
PaaS provides the user with the requisite hardware architecture (the platform) and software subsystems and components (the solution stack) to deliver the user’s product or service. In a PaaS model, the user uses tools and libraries from the provider to build the software implemented on the PaaS platform. Depending on the tools that the provider supports, the customer can sometimes implement their own custom stack of development tools.
PaaS is appealing to clients who don’t want to devote resources to hosting, maintaining, and managing the underlying hardware and software used in the implementation of their service or product. PaaS is composed of an operating system and middleware (software that allows applications to run on the cloud), with the provider handling security and scaling.
With a PaaS model, the client is free to focus on its application and its customers. The development environment is set up and automatically maintained, from hardware to tooling.
Speed of development: customers can spend more time developing their application and less time managing hardware and software.
Cost: The PaaS model allows the customer to consume resources on-demand, reducing overhead cost by preventing the customer from investing in additional hosting capacity that may go unused. A PaaS also eliminates the overhead cost of maintaining hardware and software.
Scalability: As the load fluctuates, the PaaS model allows infrastructure to scale computing resources to meet demand while facilitating uninterrupted end-user experience.
Less Flexible than IaaS: A PaaS typically handles or streamlines more of the complications in building software and maintaining the development environment, but the downside is a more prescriptive framework. Your development team may need more control over the inner workings of their environment than a PaaS allows. In most cases, the more complexities your cloud service handles, the less control you have over your development process.
Definitions were taken from DZone (thank you guys)