Cloud Foundry was created by VMware to simplify application deployment. It was later open sourced and the Cloud Foundry Foundation was formed by Pivotal, EMC, IBM, Rackspace and VMware. Cloud Foundry supports various programming languages, frameworks and databases. It provides tools for deploying, managing and scaling applications on private and public clouds. While installation can be complex, deployment of applications is straightforward for developers.
2. I N F O W O R L D . C O M 0 7 . 1 6 . 1 42
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 moni-
tored by the Health Manager, while Routers
manage application traffic, do load balancing,
and combine logs. In turn, DEAs call on ser-
vice 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 basi-
cally 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.
TheCloudControllerwillautomaticallydetect
and load any necessary system buildpacks, cre-
ate a droplet, deploy the application droplet to
the DEAs, register the routes, and forward the
ports.OncetheDEAsareactive,theHealthMan-
ager compares the expected state of DEAs from
the Cloud Controller with the actual state from
theDEAs.IftheHealthManagerdetectsadevia-
tion, 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
ofCloudFoundry.Anopensourcetoolchainfor
release engineering, deployment, and lifecycle
managementoflarge-scaledistributedservices,
BOSHhasitsowncommandline,separatefrom
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 oper-
ating 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.
Cloud Foundry includes UAA (User Account
and Authorization) and login servers. The UAA
is the identity management service for Cloud
Foundry. Its primary role is as an OAuth2 pro-
vider, issuing tokens for client applications to
use when they act on behalf of Cloud Foundry
users. However, it can also authenticate users
with their Cloud Foundry credentials and act as
an SSO (single sign-on) service. The login server
performsauthenticationfortheUAA,actingasa
back-endservice.TheloginserveriswhereCloud
Foundryadministratorssetuptheirauthentica-
tion sources, such as LDAP/AD, SAML, OpenID
(Google, Yahoo, and so on), or social.
Down at the application execution level, the
DEA uses Warden Linux containers. Warden
provides a simple API for managing isolated,
ephemeral, and resource-controlled environ-
ments, or containers. In the future, Cloud
Foundry will support Docker containers.
Deploying applications with buildpacks
Buildpacks provide framework and runtime
supportforyourapplications.Fourbuildpacks
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:
---
applications:
- name: mywordpress
memory: 128M
instances: 1
host: mywordpress
domain: cfapps.io
path: .
buildpack: https://github.com/
dmikusa-pivotal/cf-php-build-pack.git
services:
- mysql-db
As you can guess, the buildpack line in the
manifest references the Git repository of a
PHP and Apache buildpack.
Cloud Foundry does messaging among the
parts of its environment using NATS, a light-
weight and distributed publish-subscribe
messaging system written in Ruby.
The Cloud Foundry services API defines the
contract between the Cloud Controller and
A block diagram of the Cloud Foundry architecture.
Services in the Pivotal Web Services Marketplace are typically available in a variety
of plans, ranging from free to $100 or more per month.
3. the service broker. The broker is expected to
implement several HTTP (or HTTPS) end-
points underneath a URI prefix, and it may
be load-balanced. User-provided service
instances are a mechanism to deliver creden-
tials to applications for service instances that
have been pre-provisioned outside of Cloud
Foundry — for example, an Oracle cluster.
Pivotal has a big data product, Pivotal HD,
that integrates with Pivotal CF. It includes
Hadoop, Pivotal’s HAWK SQL query engine
for Hadoop, and GemFire XD analytics, as well
as the Spring for Apache Hadoop Java frame-
work. The Pivotal Big Data Suite is an enter-
prise data warehouse that includes unlimited
Pivotal HD.
According to Pivotal, in practice an admin-
istrator 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 Piv-
otal 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 min-
utes) or on premise and grow
your cloud incrementally, or you
can install an enterprise cloud on
an appropriate VM host in a few
hours.
For a developer, deploying
droplets from the command
line, Eclipse, Spring Tools Suite,
Maven, or Gradle is dead simple,
once you’ve constructed a valid
manifest file that includes any
necessary buildpacks. Managing
droplets and DEAs is straightfor-
ward, though I wish that auto-
matic scaling of applications
were fully supported instead of
being an enterprise-only beta
feature in Pivotal CF.
Managing Cloud Foundry clouds isn’t hard,
but BOSH is a complicated, powerful tool that
has a significant learning curve. Administra-
tors accustomed to Puppet and other popular
configuration management and orchestra-
tion 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 Ser-
vices, and on premises as Pivotal CF. While
I haven’t evaluated all the proprietary PaaS
offerings based on Cloud Foundry by Founda-
tion 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.
— Martin Heller
3
The Stackato Micro Cloud VM — available for VirtualBox, VMware
Fusion, VMware vSphere, and KVM — is currently the fastest way to
get Cloud Foundry on to a developer’s desktop. Here the Stackato
management console is running behind the Stackato Micro Cloud
window.
Cloud Foundry at a glance
Pros • Wide assortment of languages, Web frameworks, and databases available
and supported
• Easy and fast self-service deployment for developers and cloud operators
• Application container, service, and node health are all monitored and auto-
matically restarted if not in the expected state
• Big data and mobile services are supported in the PaaS
• Can deploy from the command line, Eclipse, Spring Tools Suite, Maven, and
Gradle
Cons • Automatic horizontal scaling is still in beta, but scheduled for Q3 release
in Pivotal CF; another PaaS based on Cloud Foundry, ActiveState’s Stacka-
to, already has it
• No downloadable “micro” VM for Cloud Foundry v2 yet, but you can down-
load Stackato Micro, or use one of two Cloud Foundry installers to install
Cloud Foundry in a local VM
• Limited to applications that run on Ubuntu Linux, unless you use the Uhuru
Windows version of Cloud Foundry, which we have not reviewed
Platforms • VMware vSphere, OpenStack, Amazon Web Services, Google Cloud Plat-
form
Cost • Cloud Foundry, free open source; Pivotal Web Services, 3 cents per giga-
byte 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 appli-
cation instances running and number of Operations Manager instances
running, with a 90-day evaluation license available for free