ubi:paastunnel Platform-as-a-Service Tunneling for Cross-platform Applications Deployment, Migration and Execution
Platform as a Service (PaaS) is currently at its peak. The very positive economic outlook for the Cloud market as a whole as well as for software and platform as a service is undoubtable, not only in terms of revenues but also in terms vendors active in the sector. Although giant vendors occupy this emerging space, gaining the lion’s share of the market and evolving into mutually incompatible de-facto standards, many startups try to enter the market. However, this incompatibility increases the lock-in of customers in a single Cloud platform, preventing the portability of data or software created by them. But even if application and/or data portability is supported, the high complexity and the switching costs discourage customers from doing so.
To this end, the UBITECH R&D team has implemented a Cloud Platform-as-a-Service Management Utility, called ubi:paastunnel, which resolves the data and application portability issues that exist in the Cloud PaaS market through a flexible and efficient deployment and migration approach. From a business perspective, ubi:paastunnel aims at lifting the barriers that cause the vendor lock-in problem, allowing Cloud customers and Cloud application developers to choose freely the Cloud PaaS offering that best fits their needs.
ubi:paastunnel handles mainly the deployment, undeployment, start, stop and migration of an application on a selected PaaS offering, by defining how applications can be executed on a particular PaaS offering. Applications often have a multitude of dependencies starting with the operating system, executable formats, programming languages, compilers and ending with middleware or libraries for specific functions. In ubi:paastunnel, tunneling among PaaS offerings and virtual execution of an application in a selected PaaS offering includes these dependencies. Security is a major concern for ubi:paastunnel, as we consider crucial to keep different applications from interfering with each other and to safeguard both data stored on the persistent storage and the data that are in memory at runtime.
The enabling technology of the aforementioned tunnelling and virtual execution capabilities of the ubi:paastunnel relies on the realization of the unified PaaS Application Programming Interface (API) that acts as an intermediary between ubi:paastunnel and the PaaS offerings, where the deployed applications are actually executed, as well as between heterogeneous PaaS offerings, thus facilitating their interconnection in a uniform manner. Therefore, the heterogeneity of the numerous PaaS providers introducing their own platforms, models and programming paradigms is handled and masked by this unified API, containing a number of operations that support the management of the deployed applications independent of the specific API of the underlying PaaS offering.
Given that each PaaS offering uses its own API, an adapter is developed as a middleware (or a proxy) between our unified PaaS API and the native API of the PaaS offering. More specifically, the adapter translates the functions of our unified PaaS API to the native API of the PaaS offering, and vice versa. In order to achieve maximum flexibility, the core decision that an application developer has to made is either to host one adapter per application, or, in case hosting is not feasible, to centrally host an adapter (per PaaS offering) that will undertake the work of “proxying”. At any case, the use of the adapter enables the seamless communication between the ubi:paastunnel and individual PaaS offerings and contributes significantly to the removal of vendor lock-in and application portability barriers.
Currently, ubi:paastunnel supports the following Platform-as-a-Service platforms: Amazon Elastic Beanstalk, Cloudbees, Openshift, Heroku and Cloudfoundry (that can be deployed as private PaaS ). In principle, ubi:paastunnel supports the deployment (either through .war files or though Git) and management (start/stop/delete) of applications on the aforementioned PaaS platforms, as well as the management (create/delete) of databases of these applications. Especially for MySQL, ubi:paastunnel supports the automated upload and download of the data of the application database. The figure that follows presents the supported functions per native PaaS API. Of course, the work is still in progress and we are currently in the process of harmonizing our unified API with the one drafted and proposed by the OASIS Cloud Application Management for Platforms (CAMP) Technical Committee (wherein UBITECH actively participates).
* importing and exporting data to a database is done by using the database configuration parameters and is supported to a limited set of database systems.
** migration of application and its data between different PaaS platforms and/or PaaS offerings is supported, but it is only possible between specific platforms.