Cloud Foundry: VMwares PaaS
The market for Cloud solutions for Java applications remains very exciting.
At the heart of each Cloud system is virtualization – Vmware’s
core competence. After the acquisition of SpringSource it was to be
expected that new products with a focus on Java and on developers
would be created. Now, Vmware has announced the Cloud
Foundry platform that aims at exactly that market.
While virtualized computers are referred to as IaaS
(Infrastructure as a Service), Cloud Foundry is a PaaS (Platform as
a Service). In essence, a PaaS is like a Cloud application server:
applications can be deployed directly to a PaaS. On an IaaS you
would need to install a runtime environment with an application
server, an operating system and a database before you can add your
Cloud Foundry is available as a public PaaS at cloudfoundry.com:
After registering for a currently free account, you can start to
deploy your applications in the cloud provided by Cloud Foundry.
This offering is quite different from VMware’s traditional
business: So far, VMware developed and sold solutions for
virtualization. Some of VMware’s customers even used them to
operate Public Clouds. Now, VMware is present in the Public Cloud
market itself and competes against other providers of Public Clouds
like Amazon, Google and Microsoft. These companies have a lot of
experience with the cost-efficient operation of large data centers
and have already invested heavily in building data centers
The software that is used to build the Cloud Foundry offering is
an Open Source project with an Apache license. It is available at
cloudfoundry.org. Thus, it is possible for anyone to build its own
PaaS with this software. The project even includes a guide on how
to install a Cloud on a Ubuntu machine. A similar
“Micro Cloud” will be available free of charge. It is essentially a
Cloud as a virtual machine that you can use with VMware Fusion or
VMware Player on a computer to test and develop applications. But
you can do even more with the software: RightScale has already
shown that it is possible to use Cloud Foundry on the Amazon EC2
infrastructure. The EC2 images needed are already available for
But what is the technology behind Cloud Foundry? Cloud Foundry
offers a set of services. These are infrastructure components –
currently MySQL and the NoSQL databases Redis and MongoDB are
supported. They are provisioned and managed by the Cloud Foundry
environment. Cloud Foundry can be used to create and delete
instances of such services. When an application is deployed in
Cloud Foundry, services can be bound to the application. The
binding must be configured accordingly using the Cloud Foundry
tools. But how can the application code actually use the services?
This is where the integration of Cloud Foundry into the different
frameworks comes in. For example in Spring an existing DataSource
in the application will be automatically replaced with a DataSource
for a Cloud Foundry MySQL service. Or you can use the new cloud Spring XML namespace to bind to other
services, or if you need more control. Similar support is available
for Grails and Spring Roo is also supported. Java applications
are installed on a Tomcat web server, so you can also install Java
applications on Cloud Foundry that were not created with any of the
supported frameworks. However, in this case, you cannot use Cloud
Foundry services. The code for the framework integration is also
available as Open Source. So support for other frameworks should
not be difficult to implement. In essence, you have to determine
the services from an environment variable and make them available to the application.
Also, the code that integrates the various services like MongoDB
or MySQL in Cloud Foundry is available as Open Source. So adding
support for other services should also be easy to implement. Cloud
Foundry even supports frameworks beyond Java: The list of supported
Rails and Sinatra.
The infrastructure can be managed with the command line tool vmc or with the integration
into Eclipse / SpringSource Tool Suite. Cloud Foundry is
presented as just another server in the Eclipse Server view and
also the services can be administered there.
Cloud Foundry is interesting from a technical perspective, since
its service approach makes it different from other PaaS solutions.
Using services avoids direct references to the specific services
such as IP addresses. Therefore the applications can run without
modification in different Cloud Foundry environments such as a
local Micro Cloud for testing and cloudfoundry.com for production.
The disadvantage is the needed support in the framework. Also Cloud
Foundry is a good foundation to create a private PaaS, which is
useful in cases where a Public Cloud cannot be used for reasons of
data privacy or security. So far there are only very few private
PaaS so Cloud Foundry fills a niche there.
From a strategic perspective Cloud Foundry is interesting
because VMware is now a Public Cloud provider and at the same time
creates a technology on which other companies such as Right Scale
can base their offers. So the market for Cloud solutions for Java
applications remains very exciting.