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 application.
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 worldwide.
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 RightScale customers.
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.
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.