Platform as a service (PaaS) is a cloud-computing and software development paradigm aimed at supporting rapid development. But how did these 'As a Service' concepts come about? PaaS as you may know was introduced formally at EuroOSCON in 2006... PaaS aims to attach itself to, and extend pre-existing virtualized infrastructure offerings. PaaS adds to these offerings the ability to automatically configure a virtualized environment and install ready-to-use software stacks. By adding the software layer this model provides a highly scalable self-service solution, which can be leveraged for development and delivery purposes. This helps alleviate the long-standing tradition of manually configuring virtual machines, their operating systems and base-level configurations in preparation for development. The primary objective of PaaS or any automation solution is to aid developers by making them more efficient. Abstracting and automating commonly tedious infrastructure and configuration management tasks makes PaaS an alluring development paradigm for modern software organizations.
Effective PaaS implementations provide a set of virtual machines and an A la Carte menu of software stacks, which are configured upon request. Most PaaS service providers will wrap the entire system into a uniquely accessible entity and provide a common interface where end-users can select the desired OS and preferred software stacks. This allows them to spin up environments (complete with attached applications and development infrastructures) via a button click. At the time of its inception the PaaS the paradigm was quite novel and innovative. It expanded on the self-service model of Infrastructure as a Service ("IaaS") and saved significant amounts of time. This in turn made developers more productive.
PaaS is most commonly seen as a logical extension of IaaS. This evolutionary nature is very popular across modern software technologies in engineering. What once started as bare metal hardware slowly evolved into progressive virtualized machines and then finally into micro-sized containers and PaaS offerings. This evolutionary nature has led to many innovations related to virtualized systems, software configuration management and the coupling of the two. The figure below illustrates the historical milestones, which led to the fruition of PaaS based solutions in 2006.
As the innovative concept of PaaS gains traction and becomes more widely adopted throughout the technology industry, concrete implementation examples and best practices are also evolving. To date there are a number of documentary whitepapers and high-level architectural best practices. The next figure presents a high-level architecture diagram of a PaaS based service. It is based on research of implementations by industry pioneers; including IBM, NetFlix and others.
From the diagram above we can visualize PaaS service providers and begin to understand the interconnected interfaces of PaaS, and IaaS. As we can see the base level VMs are provisioned via modern IaaS interfaces and then configuration management software (Ansible, Salt Stack, Chef, Puppet, Vagrant etc.) is leveraged by the PaaS interface to install and manage the requested software solutions. Finally the appropriately requested appliance is delivered to the requesting user via a seamless virtual interface. Once the appliance has served its purpose, it is torn down and removed. This automatic teardown faculty helps alleviate the need for IT management of individual VMs and keeps the system scalable.
As PaaS solutions have evolved a new era of container based applications, micro architectures, and PaaS service providers have materialized. The crop up of scalable virtualized solutions and related ancillary tools is a result of the continuing decline in infrastructure costs and the increasing availability of reliable virtualized systems. Gone are the days of expensive hardware spin-up routines and costly datacenters. Gone are the days of tiny data storage capacities. In this new era speed and flexibility are the ally.