First things first: The Cloud Foundry Platform as a Service (PaaS) offering is not exclusively Java-based. The vision behind the platform, a VMware-led project, is larger than that. Cloud Foundry aspires to support multiple development frameworks and cloud infrastructures. Aside from the standard PaaS value proposition — freeing developers from having to worry about the underlying infrastructure that powers their apps and allowing them to deploy and scale apps in seconds — Cloud Foundry aims to allow developers to deploy their apps to the cloud using their existing tools and without any modification to their code.
With Cloud Foundry, developers can build, deploy and run cloud apps using a number of languages and frameworks, including Spring for Java and Rails and Sinatra for Ruby. Completed apps can run on a public cloud, a private cloud, and offline on a desktop or laptop. Similar to Spring, Cloud Foundry is published under the Apache License, version 2.0 — a widely adopted license that helps to create strong, diverse communities.
Cloud Foundry provides a particularly convenient platform for Java applications on public and private clouds. The idea is that Java developers don’t need to architect their applications in a special way or work with a restricted subset of language or framework features, nor do they need to call APIs specific to Cloud Foundry.
What Does Cloud Foundry Include?
When VMware launched the product earlier this year, it “modestly” proclaimed that Cloud Foundry breaks new ground in PaaS by supporting choice for programming models, services (from VMware and third parties), and deployment clouds. The product also was delivered in open source.
Cloud Foundry is available as:
- CloudFoundry.com — a complete hosted PaaS environment
- CloudFoundry.org — an open-source project where developers and community members can collaborate and contribute to the project
- Micro Cloud Foundry — a complete version of Cloud Foundry that runs in a virtual machine on a developer’s Mac or PC.
CloudFoundry.com is a multi-tenant PaaS that runs on vSphere and is hosted, managed and supported by VMware. This flavor of Cloud Foundry supports Spring for Java apps, Rails and Sinatra for Ruby apps, Node.js apps and apps for other JVM languages/frameworks including Groovy, Grails and Scala. Cloud Foundry also offers MySQL, Redis, and MongoDB data services, as well as the RabbitMQ messaging service.
Micro Cloud Foundry is a micro-PaaS that is available as a free download for personal use. It provides the flexibility of local development while preserving a developer’s options for future app deployment and scaling.
At its core, Cloud Foundry includes a self-service application execution engine, an automation engine for application deployment and lifecycle management, and a scriptable command line interface (CLI). It also comes with an application services interface, a cloud provider interface, an open architecture for quick development, and a set of development and deployment tools.
The Open PaaS Approach of Cloud Foundry
Cloud Foundry’s open approach to Platform as a Service differs from many PaaS offerings, which restrict developers’ choices of frameworks, application infrastructure services and deployment clouds. Open source technology allows rapid progress while avoiding lock-in — a major concern in the adoption of cloud computing.
The platform is open in three notable ways:
- Open to multiple frameworks and developer communities
- Open to multiple services (provided by VMware or other vendors or communities)
- Open to a choice of underlying deployment destinations
Choice of deployment destination is particularly important to the Java community, as Java is heavily used to build enterprise applications and many organizations are not willing to run their enterprise applications in a public cloud. Using Cloud Foundry, developers can run their apps wherever they choose.
Recently, Cloud Foundry added a new feature that allows developers to open a “tunnel” to any Cloud Foundry data service via a local port. Now, developers can use familiar client apps to directly analyze, manipulate or port data in the data services tied to their Cloud Foundry apps. The new feature is in a preview release of the Cloud Foundry command-line tool VMC. Underlying it is Caldecott, a simple Ruby application that provides an HTTP endpoint that facilitates a port forward on a local box. VMC contains built-in scripts to run some popular client software in the local environment and automatically connect to specified services, or simply create the connection to the service.
This solution is ideal for importing and exporting data when moving an application between different clouds running Cloud Foundry (e.g. CloudFoundry.com and Micro Cloud Foundry), for debugging during development, as well as for ad-hoc queries and modifications to data in a deployed application.