Cloud Foundry was created by VMware to streamline deployment for application developers, application operators, and cloud operators. Then in April 2011, Cloud Foundry was announced as open source under the Apache 2.0 license, with the pitch to developers that they could code in the language and Web framework of their choice without worrying about the IT environment.
In February 2014, VMware spin-off Pivotal announced the formation of the Cloud Foundry Foundation, with Pivotal, EMC, IBM, Rackspace, and VMware as Platinum sponsors. The foundation has since expanded to 33 members and 42 contributing companies. One differentiator for Cloud Foundry is support for Pivotal HD Hadoop MapReduce, HAWQ SQL for Hadoop, and GemFire XD analytics. Another is the availability of the Pivotal Mobile Services Suite, thanks to last year's acquisition of Xtreme Labs. Pivotal's big data services and mobile services are both now integrated with Pivotal CF, the company's enterprise version of Cloud Foundry.
[ Also on InfoWorld: PaaS shoot-out: Cloud Foundry vs. OpenShift | Review: OpenShift shines for developers and ops | Work smarter, not harder -- download the Developers' Survival Guide | Keep up with the latest developer news with InfoWorld's Developer World newsletter. ]
Several Cloud Foundry Foundation members have released their own distributions of Cloud Foundry, including ActiveState with its Stackato product. The free Stackato Micro Cloud comes packaged for VirtualBox, VMware Fusion/Player, VMware vSphere, and KVM.
Although the open source Micro Cloud Foundry VM has not yet been updated to Cloud Foundry v2, you can install Cloud Foundry open source locally using either bosh-lite or cf_nise_installer. Bosh-lite supports VMware Fusion/Player, VirtualBox, and Amazon Web Services, while cf_nise_installer only supports VirtualBox.
Cloud Foundry architecture and features
The Cloud Foundry Elastic Runtime runs applications in packages called "droplets" in DEAs (Droplet Execution Agents). DEAs are managed by the Cloud Controller and monitored by the Health Manager, while Routers manage application traffic, do load balancing, and combine logs. In turn, DEAs call on service broker nodes, which communicate over a message bus. The Cloud Controller has access to a blob store and a database of application metadata and service credentials.
To deploy an application, the developer basically uploads the app bits and metadata, using the Cloud Foundry command line or plug-ins from Eclipse, Maven, or Gradle. In addition, the developer needs to create and bind services. This all boils down to building a WAR archive and uploading the WAR.
The Cloud Controller will automatically detect and load any necessary system buildpacks, create a droplet, deploy the application droplet to the DEAs, register the routes, and forward the ports. Once the DEAs are active, the Health Manager compares the expected state of DEAs from the Cloud Controller with the actual state from the DEAs. If the Health Manager detects a deviation, it will ask the Cloud Controller to restart any DEAs not in the expected state.
Administrators use BOSH, as opposed to other IT automation tools, such as Puppet or Chef, to manage the underlying infrastructure of Cloud Foundry. An open source tool chain for release engineering, deployment, and lifecycle management of large-scale distributed services, BOSH has its own command line, separate from the
cf command line, but you don't need it to deploy an application. BOSH is for deploying VMs, not droplets.
At a very high level, BOSH clones new VMs from a "stemcell" to create the VMs needed for a deployment. A stemcell contains an operating system and an embedded BOSH agent that allows BOSH to control VMs cloned from the stemcell. A BOSH release is a collection of source code, configuration files, and startup scripts, with a version number that identifies these components. The BOSH deployment manifest is a YAML file defining the layout and properties of the deployment.
Deploying applications with buildpacks
Buildpacks provide framework and runtime support for your applications. Four buildpacks are standard in Cloud Foundry and Pivotal CF: Java, Node.js, Ruby, and Go. (Stackato has Python instead of Go.) The good news is that buildpacks are readily available, easy to install, and even easy to construct, assuming you can write a few lines of Ruby or another scripting language. In most cases, the open source language and framework you want will be available as a buildpack, and all you'll need to load it will be a mention of the Git repository on the
cf command line when you push your app:
$ cf push my-new-app -b git://github.com/johndoe/my-buildpack.git
Alternatively, mention the buildpack in your manifest. For example, a working WordPress for Cloud Foundry is available in this repository created by Daniel Mikusa. To install it, you simply clone the repo, which is not very big; create a MySQL service in your Cloud Foundry instance; edit the manifest and config files on your local machine; and
cf push the app. The manifest.yml file looks like this before editing:
- name: mywordpress
As you can guess, the buildpack line in the manifest references the Git repository of a PHP and Apache buildpack.
According to Pivotal, in practice an administrator defines a service pool of HDFS and MapReduce instances, which take about five minutes to provision from scratch on Pivotal CF. Then a developer or an application can ask for an instance from the pool, obtain it in about two seconds, and a new instance can be created for the pool in the background. When the requested instance is no longer needed, it can be released.
Pivotal also offers a Mobile Services Suite that's integrated with both Pivotal CF and Pivotal HD. This is based on the seven years and 400 apps' worth of know-how acquired with Xtreme Labs last year. It's basically an MBaaS (mobile back end as a service) on Pivotal's PaaS, with the integration extending out to the mobile application level.
Cloud Foundry installation and use
Signing up for Pivotal Web Services was painless. I had no trouble with the developer console, and downloading and installing the
cf command line was a matter of a minute or two. The documentation made the steps needed to deploy an application with
cf quite clear.
As I mentioned earlier, the Micro Cloud Foundry VM has not yet been updated to Cloud Foundry v2. While I found two methods for installing the current Cloud Foundry open source into a local VM, each promised to be a multihour process. It was much easier for me to download a Stackato Micro Cloud VM (10 minutes) and install it into VMware Fusion on my MacBook Pro (two minutes). I also installed the Stackato command line, which is a superset of
cf. Using the Stackato developer console in a browser turned out to be very similar to using the Pivotal Web Services developer console.
With the exception of the current lack of a Micro Cloud Foundry VM, which is kind of a pain, installation and setup of Cloud Foundry are very good. Everything you need is available for download, and the installations are self-explanatory. You can start small either online (in a couple of minutes) or on premise and grow your cloud incrementally, or you can install an enterprise cloud on an appropriate VM host in a few hours.
Managing Cloud Foundry clouds isn't hard, but BOSH is a complicated, powerful tool that has a significant learning curve. Administrators accustomed to Puppet and other popular configuration management and orchestration tools won't have any trouble learning BOSH, but they will have to dedicate some time to doing so.
Overall, Cloud Foundry is a strong PaaS in its open source form and in both proprietary forms from Pivotal: online as Pivotal Web Services, and on premises as Pivotal CF. While I haven't evaluated all the proprietary PaaS offerings based on Cloud Foundry by Foundation members, I have looked at Stackato from ActiveState and found that it streamlined a few items not yet cooked in the open source edition, adding value for cloud management and language support.
Cloud Foundry at a glance
|Platforms||VMware vSphere, OpenStack, Amazon Web Services, Google Cloud Platform|
|Cost||Cloud Foundry, free open source; Pivotal Web Services, 3 cents per gigabyte per hour after two-month free trial with up to 2GB of app memory and 10 free Marketplace services; Pivotal CF, priced by number of application instances running and number of Operations Manager instances running, with a 90-day evaluation license available for free|
This article, "Review: Cloud Foundry brings power and polish to PaaS," was originally published at InfoWorld.com. Follow the latest developments in application development, cloud computing, and open source at InfoWorld.com. For the latest business technology news, follow InfoWorld.com on Twitter.