Cloud Computing has become nowadays a buzzword in the Web applications world. It is defined as a model for enabling on-demand remote access to a shared pool of configurable computing resources that can be released as fast as they have been provisioned to users. These resources are available in self service and without human interaction from Cloud service providers. This latter allows users to consume computing resources as needed.
Cloud services are delivered under three well discussed layers :
If at this level, the difference between the various types of cloud services is difficult to identify, we recommend you to read this article which offers an analogy: Pizza as a Service!
Over the past years, companies have been facing the complexity to deliver applications which have to be highly available and scalable. An Infrastructure as a Service layer offers compelling benefits such as time, scalability and hardware utilization savings. However, building an application from its design to its deployment involves many cumbersome tasks that are costly in terms of time and manpower. These tasks consist of setting up application servers, configuring virtual machines, load balancers, monitoring tools and many more. To overcome these tasks and simplify this process, the Platform as a Service layer can be an effective solution. This Cloud category adds to the advantages provided by the IaaS that includes the use of the underlying infrastructure, such as servers, network, storage, or operating systems.
This blog post aims to explain what is a PaaS layer and what are its advantages and limitations. In order to motivate the use of the PaaS, a real industrial use case presenting the case of Opal Solutions is given. Indeed, the CETIC helped this company in supporting their developers to migrate their application to a PaaS solution and to be more productive by improving software release cycles.
What is exactly the PaaS?
The PaaS is devised to provide utmost benefits to the developers and to get rid them of the onerous task of managing applications lifecycle. Indeed, it enables high scalability and on demand cloud services provisioning by automating its allocation/deallocation to optimally support the requirements of an application. In addition, it ensures a high level of availability and reliability thanks to the load balancing and the failover of services capabilities with respect to the application requirements. It is also characterized by the automation of operations tasks in order to ensure an end-to-end support for the applications’ lifecycle. Last but not least, it allows developers to use multiple operating systems, multiple run-time and frameworks, and multiple databases to collaborate with other developers.
The PaaS lets enterprises avoid infrastructure investment when using or provisioning cloud applications. It allows companies to completely focus on developing cloud applications without caring about time-consuming tasks, such as server setup and configuration, required to get a suitable platform up and running. The PaaS provides appropriate middleware services, runtime container and operating system for an application, minimizes downtime costs and abstracts apps from infrastructure dependencies. Moreover, it allows also the execution of applications which do not necessarily run on the same machine. Indeed, the selected PaaS solution can distribute the application on a set of machines, which guarantees the scalability of running applications. The application distribution is automatically managed by the PaaS and in a transparent manner for the developers, where they don’t need to worry about it in the IaaS level anymore.
The PaaS level is also more and more used and proposed over the world. "As of 2019, the total PaaS market contains more than 360 vendors, offering more than 550 cloud platform services in 21 categories", according to Gartner. Gartner expects that the market will nearly double 2018’s market value by 2022 and that PaaS will be the prevailing platform delivery model moving forward.
It exists a lot of PaaS offers. Some tools are open source such as OpenShift OKD, Dokku, PaaSTA PaaSTA or even DC/OS that you need to install on premise or on a public cloud and maintain it. Some other PaaS platforms are offered from Cloud providers such as Elastic Beanstalk from AWS or Heroku which are fully-managed platforms where you pay only for the resources used.
Choosing a PaaS solution could be a cumbersome task. We already did this work for you by making an article which can be found on the CETIC blog . This article reviews the most popular open source solutions and analyzes each one based on a set of criteria that we fixed by taking into account common requirements of industrial partners. 
PaaS Opportunities & Challenges
The PaaS offers some additional advantages against the IaaS category. Companies typically use PaaS for these reasons:
The PaaS model is not meant as the silver bullet to solve all the problems. It exposes some limitations that are:
Migrate to a PaaS, a concrete use case
The CETIC is currently helping Opal Solutions migrating their application - referred to as Interneo - from the IaaS to the PaaS. Indeed, Interneo is an internship management software for schools and hospitals. When we joined the project, Opal Solutions was manually deploying their solution on OVH servers which was really time-consuming and error-proneness for the developers. In order to cover this gap, we proposed to migrate their project to AWS by using the Elastic Beanstalk PaaS solution in order to reduce these operations tasks. We also use the GitLab continuous integration and continuous delivery (CI/CD) tool to automatically test and trigger the deployment of their application on multiple environments.
The Interneo solution consists in three technical components: a PHP Symfony backend, a PostgreSQL database and a frontend written with the ReactJS framework, as presented in Figure 3. In order to host these component, we proposed to use the following AWS services:
We also use GitLab CI to run test suites for immediate feedback in order to automate the integration (compilation, testing) and to trigger the deployment of the different components. Thus, when a developer makes a new commit on the SCM (Source Code Management) Gitlab repository, the application is automatically tested, built and deployed to AWS. Once it is deployed, the application is continuously monitored by the AWS Cloudwatch service. To execute the Gitlab CI script, we needed to configure the Interneo GitLab project to use a Gitlab runner, which is basically a server that executes instructions listed in the script file and reports the result back to GitLab.
The current deployment view  is illustrated in Figure 4.
What we do at CETIC about PaaS
At CETIC, we are also familiarized with PaaS technologies thanks to some research projects in which we were involved in the last years. For instance, we worked on a research project called "ModePaaS". This project aims to create an open-source model-based tool that helps developers to automatically deploy software applications on multiple PaaS solutions. It enables to declaratively describe the application requirements and the PaaS solutions capabilities. Then, it allows to deploy the application on various PaaS targets. More informations can be found on the CETIC website (ModePaas). The project results allowed to automate PaaS services discovery and application deployment steps in a multiple PaaS environment. This project also enhanced CETIC’s expertise in order to assist and help industrial partners to take advantage of cloud technologies and commercial offerings as efficiently as possible.
Then, thanks to MOBITS and CloudMedia research projects, we setup one of the most widely used open-source PaaS solution using containers: OpenShift. With the OpenShift platform, we highlight the benefits to use a PaaS solution in industry and we also use it to easily deploy some internal services and advance our research works. In this context, we wrote an article  in the ADMIN Linux Magazine where we present how OpenShift paired with the GitLab CI/CD tool can help developers to be more productive by improving software release cycles.
Finally, we are constantly helping and accompanying industrial partners companies (1) to select the most appropriate PaaS solution to their requirements, (2) to set up PaaS solutions, (3) to held workshops introducing how to use a given PaaS solution and (4) to assist them in migrating their solution to the PaaS.
 Cloud computing services: taxonomy and comparison: https://link.springer.com/article/10.1007/s13174-011-0027-x
 Open Source PaaS Solutions Analysis: https://www.cetic.be/Open-Source-PaaS-Solutions-Analysis
 Figure of the three main categories of cloud computing services: https://mycloudblog7.wordpress.com/2013/06/19/who-manages-cloud-iaas-paas-and-saas-services/
 The “4+1” ViewModel of Software Architecture: http://www.cs.ubc.ca/~gregor/teaching/papers/4+1view-architecture.pdf
 OpenSHift and Gitlab CI: http://www.admin-magazine.com/Archive/2018/47/Automatic-build-and-deploy-with-OpenShift-and-GitLab-CI