PaaS (Platform as a Service) is a layer over IaaS (Infrastructure as a Service) that provides the following:
- Some kind of deployement interface
- coupled with a load balancer - HAProxy
- a service provisioning system
- Scaling in/out support
- Optional add-on services:
- Backup and restore service
- Caching or data grid service
- Different DB types - relational, in-memory, no-sql
The above is generally controlled by a service management layer that exposes all of the above operations of PaaS as REST endpoints. The implementation of the endpoints will use IaaS service endpoints to perform infrastructure related operations (like say adding/removing a VM etc).
Generally some devops toolkit like chef (solo)/puppet combined with some bash scripts are used to provision the platform (like say application server or database server) in the VM after the VM has been created.
The tenant user can either use the REST endpoints directly or through some SDK or CLI or through a web UI to request say, creation of platform instance(s).
Once the platform instance is created, user can deploy their applications on the platform through the platform specific administration tools (like tomcat admin console or a DB client).
Examples of PaaS:
Heroku (see my other posts summarizing the salient features of Heroku platform)