Open Source PaaS Solutions Analysis

Open Source PaaS Solutions Analysis

Part 1: Presentation of the PaaS solutions

An open source PaaS solution enables a developer to contribute and share his/her source code and his/her extensions with the community of developers. This kind of PaaS solutions allows users to have a well tailored PaaS to their requirements, and a good support from the open source community.

In general, this kind of solutions integrates common open source technologies that are in vogue nowadays. For instance, the majority of these solutions are using application containers (e.g. Docker), containers orchestration tools (e.g. kubernetes), Linux based operating systems (e.g. CoreOS), etc. In addition, these solutions are including the same notions and methodology. The most widespread ones are the buildpacks and the twelve factors methodology.

Presentation of the PaaS solutions

In this light, developers are facing an abundance of open source PaaS solutions and they have to choose the most suitable to their requirements. To alleviate the burden of selecting the most appropriate one, we present a list of the most famous open source PaaS solutions nowadays. Thus, we gather this list in a single document that developers only need to consult it.

  • OpenShift is a Red Hat’s PaaS solution enabling applications management on top of Red Hat enterprise Linux operating systems. It is offered in three forms: a private PaaS which is the OpenShift Enterprise, a public PaaS which is the OpenShift Online and an open source application hosting platform which is the OpenShift Origin project. OpenShift may be integrated with Jenkins for continuous integration, Cron for scheduling jobs, and SwitchYard for managing service oriented applications. Since 2014, OpenShift’s architecture has been enhanced by integrating Docker and Kubernetes in order to better manage applications’ lifecycles. This new version is referred to as OpenShift V3.
  • DEIS is a free and open-source PaaS. It enables to manage Twelve-Factor methodology based applications in either a public or a private cloud. The key ingredients of this PaaS are threefold: (1) it allows to deploy and to horizontally scale an application as Docker containers,(2) it is based on a cluster of CoreOS machines as its exclusive operating system with an inspired workflow from Heroku, and (3) it includes Kubernetes in order to automatically manage the containerized applications lifecycle. The application deployment is supported by Heroku buildpacks. It is worthy to say that DEIS does not have its proprietary data services and it enables to use the services of Engine Yard.
  • Dokku is an open source PaaS which is based on Docker. It is referred to as a mini Heroku. Indeed, it is very lightweight and easy to set up in local machines in order to own a PaaS. To deploy an application in Dokku, users should execute the git push command and Dokku will take into charge the deployment process thanks to the integrated Heroku’s buildpacks. It is written in less than 100 lines of Bash. In fact, it is built out of three components which support the majority of the work that are Docker, Buildstep, and Gitreceive.
  • Flynn is a Docker based PaaS solution written in the Go programming language. It is designed to run any application on Linux. It is introduced as a Heroku-like PaaS. Unlike Heroku, Flynn can be self-hosted, is free and open source. It is based on buildpacks to deploy applications with the git push command. It is IaaS centric and is based on either paying solutions (e.g. AWS, Microsoft Azure, etc.) or deployed clusters in the Flynn servers.
  • PaaSTA is a very special open source PaaS solution. In fact, it plays the role of the glue by integrating existing open source tools to create a PaaS. For instance, it uses Docker for applications’ containerization, Apache Mesos/Marathon for containerized applications orchestration, Sensu for monitoring and alerting and Jenkins for continuous deployment. It has been designed as the internal PaaS of Yelp application. This PaaS may be useful whenever a developer has a ready application to deploy.

Analysis - First part

This blog post is not meant to be a comparison between every PaaS solution, but instead, it is designed to give a general overview about the different open source PaaS solutions existing nowadays. It would be certainly worthwhile to the developers to choose the most appropriate PaaS solution to his/her application’s requirements. Doing so, we first introduce the list of selection criteria that we fixed to review the different open source PaaS solutions.

  • Hosting (Private/public): According to the users requirements, a PaaS can be provisioned as either a public or a private one. Indeed, a public PaaS enables that one PaaS may be owned and managed by different users/organizations. Whereas a private PaaS is owned by a single user/organization. This latter is responsible for the maintenance and the management of the PaaS.
  • Scalability: Inthe PaaS layer, an application can scale either in a vertical or in a horizontal way. On the one hand, it vertically scales when the PaaS adds more computing power (i.e. CPU, RAM) to an existing virtual machine. On the other hand, it horizontally scales when the PaaS provisions new virtual machines/containers. We can find some PaaS solutions that automatically enable the scalability by combining these two ways.
  • Status: As PaaS solutions offer new versions frequently, the developer should ensure that the version he intends to use is stable. A version can be alpha, beta or production.
  • Declarative/imperative: Depending on the PaaS solution philosophy, a PaaS can be either declarative or imperative. Indeed, using a declarative PaaS, the developer should write in his/her source code what the program is supposed to do. The configuration of his/her application is ensured based on external model that the developer can edit without modifying his/her source code. Contrariwise, using an imperative PaaS, the developer should code how the program will be executed. The configuration of his/her application is hard-coded in the source code.
  • Pricing: Each PaaS solution bills its services according to a specific pay-as-you-go model. Users can find free and not free PaaS solutions.
  • Run-time (Programming languages): One of the important points to take into account when selecting a PaaS solution is the programming languages set that it provides.
  • Frameworks and middlewares: Each PaaS solution exposes a set of middlewares and frameworks, and the developer should be sure that the capabilities of a given PaaS meet his/her requirements.
  • Data services: Each Paas solution ensures a pool of data services enabling an application to store and interact with its data. These data services may be of type relational and/or NoSQL. A developer should take into account the verification of the data services that a PaaS solution exposes before using it.

In the following figure, we expose a comparison chart presenting the analysis of the considered PaaS solutions. Indeed, we showcase for each PaaS, whether it responds or not to our criteria. It is worth noting that shaded cells denote that a given PaaS does not meet a criterion. Based on this table, we sortlist the studied solutions in a list of five PaaS solutions. Indeed, we decide to test OpenShift Origin since it is a well known PaaS solution and widely used today. In addition, we have selected DEIS, Dokku, Flynn et PaaSTA. These solutions meet the our criteria as much as possible. They integrate various open source tools for managing application. Hence, we will be able to correctly test and analyze their behaviors over various use cases.

tableau_part1_en {PNG}