Cloud Foundry Core: Portability Across Cloud Foundry Vendors
The Cloud Foundry team has recently introduced Cloud Foundry Core, a web application that verifies public instances (Cloud Foundry Endpoints) against a common set of features. This capability allows cloud users to know in advance if they can port their Cloud Foundry application to another cloud provider by detecting the services and runtimes it supports.
Cloud Foundry is an open source PaaS that was originally developed by VMware/SpringSource. Since the code is open, anyone can create their own private cloud instance in order to deploy locally compatible applications. Some companies/partners have even created public instances of Cloud Foundry implementations, that attempt to differentiate on extra features or pricing.
Thus, at the time of writing the following Cloud Foundry implementations exist:
- The official public instance of VMware
- Micro Cloud Foundry that is used during development (running locally on a single VM)
- A public instance by AppFog (added support for PHP)
- Iron Foundry public instance by Tier 3 (focused more on .NET)
- A public instance by Uhuru (also offers .NET support).
While those implementations share a common set of services, they are not exactly the same. Some support completely different programming platforms, and in some cases even different versions of the same platform. So while in theory a cloud application should be compatible with all of them, in practice it may use a service that is either not present or has a different version. This is a major disadvantage for users who don't want to invest into a specific cloud provider.
To promote interoperability between cloud provides a set of common Core Services has been defined. These includes specific versions of specific programming runtimes. As this common set is evolving different runtimes are marked as deprecated. Cloud vendors can support extra runtimes on top of the core set in order to compete. For example AppFog supports MongoDB 1.8 while Uhuru supports MongoDB 2.0 so attempting to move a cloud application from Uhuru to AppFog that takes advantage of MongoDB might need some tweaking.
To cover the different offerings from cloud providers, Cloud Foundry Core also comes with a web application that allows for real-time querying of Cloud Foundry endpoints. The result is a compatibility report that mentions which standard services/platforms are supported (or not). The input fields supports auto-complete for the public instances of the vendors listed above, but it should work with any public instance of Cloud Foundry, or even company instances that have an accessible URL.
Along with the introduction of Cloud Foundry Core, a new version of Micro Cloud Foundry has been released. This version is fully compatible with the core definition as already mentioned and also comes with several enhancements on its own:
- Support for stand alone applications such as Spring background tasks
- Support for JRuby applications
- Auto-reconfiguration for Ruby applications
- Java 7 support (allows for vert.x)
- Development in Scala via the Play 2.0 framework
- Auto-reconfiguration for node.js applications
- Support for Node Package Manager (NPM)
For more information see the official Cloud Foundry site.