Learning Center
Plans & pricing Sign in
Sign Out

Cloud Foundry_ The Cloud by Spring


									Cloud Foundry, The Cloud by Spring
                               Eperon Julien
                        15th December 2010
1. Introduction
The goal of this article is to investigate Spring Cloud technology as provided by Spring Cloud
Foundry, to evaluate its maturity and possible use in enterprise. In order to understand how
this technology can be used, it is also compared to other equivalents on the currently maturing
cloud-based solutions.

As a reminder here is a brief recapitulation the three main families of cloud-based solutions:

   1. Software-as-Service (SaaS)

Software distribution model in which applications are hosted by a vendor or service provider

        this company is providing a Customer Relationship Management
           solution as a service. It has already been around for 10 years and has built a solid
           reputation in their area
          BPOS: Business Productivity Online Standard is the solution provided by Microsoft
           as the online alternative to Microsoft Office product series.

   2. Platform-as-a-Service (PaaS)

Paradigm for delivering operating systems and associated services over the Internet without
any download or installation

          Windows Azure: a cloud infrastructure provided by Microsoft
          Google App Engine: the cloud infrastructure solution by Google

   3. Infrastructure-as-a-Service (IaaS)

Delivery of computer hardware (servers, networking technology, storage, and data center
space) as a service

          Amazon EC2: the well known cloud computing solution from Amazon, used by
           Cloud Foundry in the background

2. Cloud Foundry definition
Cloud Foundry comes on top of Amazon EC2 and S3. It adds a layer of abstraction over it,
providing a management console for your Java-based web application. The management
console lets you upload your application and related files to the cloud, after what a
deployment can be made and you’ll quickly have your Java application running on the public

The management console aims to stay as simple as possible and provides only the most
common options such as Java virtual machine options. It also provides a view of the logs and
displays a simplistic health status of the web application. In addition, you also have a summary
of the cost of the current deployment and an approximation of the monthly cost that a given
instance might have. . . Info-Tel. 0800 87 482 347 . Datum 20.01.2011 . Seite 2 / 8
However the console does not provide a direct access to the command line. Any fine tuning
should be done directly via Amazon EC2. In some cases this can be cumbersome as any new
deployment might require those changes to be applied separately due to the nature of the
Amazon EC2 cloud where every new instance is blank. The management console provides
options concerning only the web application server and the web application; it does not
provide any fine grained option concerning the operating system or the database server. For
example the creation of a new user on the operating system is not possible.

                                Figure 1: Cloud Foundry - Home page

Cloud Foundry obviously speeds up the time to have a Java application running online
leveraging the popular Amazon EC2 technologies. The hardware setup is removed by the cloud
and the basic OS and application setup is handled by Cloud Foundry.

It also goes a little bit further by letting you modify the topology of your web application
server setup. You can have a cluster of application servers and a cluster of MySQL server,
enabling an application under a sudden peak of demand to scale rapidly.

The target platform is imposed (see chapter 3 for technical details), however the Amazon EC2
instance running behind the scene remains available and can be accessed normally (via SSH for
example). This allows specific needs to be addressed at levels not provided by the Cloud
Foundry management console. . . Info-Tel. 0800 87 482 347 . Datum 20.01.2011 . Seite 3 / 8
   Compared to other technologies like Google AppEngine, where the platform is hidden, you
   have a deeper control and a far greater flexibility, whereas the application running on both
   platforms can be very similar. The ability to scale can be debated as you’ll have a greater
   responsibility to make your application scalable, where Google AppEngine will guide you and
   force you to build your application in a scalable manner from the start, allowing Google
   AppEngine to auto-scale more smoothly.

                          Amazon EC2                 Spring Cloud Foundry       Google AppEngine
OS                        Any                        Cent OS                    Google proprietary
Language                  Any                        Full Java stack            Partial Java stack or
Deployment                Vary a lot                 Guided, a few click        Shortcuts, scripted
Maintenance/Suppo         Very large community       Still beta                 Average community
Platform locking          Locked to infrastructure   Locked to                  Locked to platform, but
                          only                       infrastructure, OS and     platform tries to be the
                                                     proposed applications      most standard with Java
Pricing                   Various price plans        Same as Amazon EC2,        Simple price plans
                                                     but can be more
                                                     expensive in the future
                                Table 1: Cloud Found and AppEngine Comparison

   The price of Cloud Foundry is currently free. So the price of deploying an application using it
   totally depends on the prices of Amazon and the type of instances you choose for your
   application to run on.

   3. Technical details
   Cloud Foundry proposes its own series of Amazon images (AMIs), providing the following

             Java 1.6 (JRE 1.6.0_4-b12): The Java virtual machine by Sun
             Apache HTTP Server 2.2.3-11: an open source web server from Apache
             tc Server 6.0.19: The re-implementation of the Tomcat web application server by
             Tomcat 5.5: The widely used open source Java web application server from Apache
             MySQL 5.0.45: an open source relational database
             JMeter 2.2: an open source Graphical server performance testing tool
             Jets3t 0.5: an open-source Java toolkit and application suite for Amazon Simple Storage
              Service (Amazon S3)
             CentOS 5.2: a Linux based operating system . . Info-Tel. 0800 87 482 347 . Datum 20.01.2011 . Seite 4 / 8
The Cloud Foundry Console also provides different containers whose exact versions are not
specified and whose use is not documented:

      eXo ECM
      Liferay

Through the management console, you can upload you Java application in a standard WAR
format and provide additional files and script (SQL scripts, static files, shared libraries etc…).

                              Figure 2: Cloud Foundry - Application setup

The management console offers the notions of “applications” and “deployments” which are
very straightforward. Where applications handles the collection of files pre-cited, the
deployments enables you to choose options related to Amazon EC2, for example the type of
Amazon instances to be used, the deployment region, the topology chosen for the application
or the application server.

The deployment concept covers basic operations of an application, such as how to start and
when to stop for maintenance or definitely. It can be cloned or made a template. It can also be
put in a maintenance state. As you can see a restart would consist of a new deployment. . . Info-Tel. 0800 87 482 347 . Datum 20.01.2011 . Seite 5 / 8
                          Figure 3: Cloud Foundry - Application deployment

Cloud Foundry also offers a monitoring service of the applications deployed. Using Hyperic HQ,
the application can be set to be restarted if the instance becomes unresponsive for example.

Cloud Foundry does not provide any special connectivity with other types of databases, or
different services such as LDAP directories, web services or JMS queues. It also doesn’t provide
facilities to configure an email server automatically. All those options have to be setup
differently, either manually on the same server or simply be using its own standard EC2 server,
note that you still have a fully functional Java environment and anything that Java can be
connected to can be used in that environment.

4. Use of Cloud Foundry
Cloud Foundry is linked to an Amazon account via a key pair. So you’ll probably go for a Cloud
Foundry account per team or per project, a Cloud Foundry account is linked to an email
address. As per the Amazon side, Amazon offers the possibility to have multiple users share the
same account with different credentials, so that the billing can be centralized. Here again a
proposition would be to have an enterprise account plus a user for each administrator or
project manager or service accounts to be linked with Cloud Foundry accounts.

In all cases Cloud Foundry is link with a key pair and not a user, so a team having access to
Cloud Foundry will not have a direct access the Amazon Web Service (AWS) console, as the
private key entered is not visible on Cloud Foundry. . . Info-Tel. 0800 87 482 347 . Datum 20.01.2011 . Seite 6 / 8
The only limitation that we encountered was that elastic IPs must be allocated before you can
deploy an application, which cannot be done from the Cloud Foundry console at the moment.
The Cloud Foundry user can only choose from the list of IPs that has already been allocated
through the AWS console.

Given to people fully aware of the potential costs of EC2, it can be a powerful self-service
platform, certainly ideal for one shot demos and quick deployment of a dedicated load testing

5. Integration in a developer’s environment
SpringSource is already providing an integrated support of Cloud Foundry in their developer’s
series of tools. They have integrated Cloud Foundry in the SpringSource Tool Suite (STS), Grails
and Roo. It enables developers to proceed to deployments with a single drag-n-drop or
command line.

Apart from the tools provided by SpringSource, other tools are also available, the Cloud Tools
(on which Cloud Foundry is based) and a plug-in for Maven for easy automated deployment.

Cloud Foundry also announced that it will have its own web services API, so that even more
automated tools can be imagined.

6. Drawback and alternatives
The biggest drawback is certainly that the initial setup does not provide everything in a box.
There is no integrated backup solution, only the previous deployment can be saved as
templates for later re-use.

As the Cloud Foundry console does actively take part to a running application. We can already
consider the environment as a production-equivalent environment in the sense that Amazon
EC2 is production ready. Simple changes can also be envisioned to complete the initial pattern
provided by Cloud Foundry. You’ll probably switch the way data will be stored, for example
switching from the integrated MySQL to the Amazon RDS which provides a persistent
approach to database, or leverage the Oracle instances that Amazon can provide on EC2.

7. Future of Cloud Foundry
As we can imagine Cloud Foundry is still going to evolve. Some of the features cited for a near
future are:

      an integration with Amazon RDS
      the possibility to use other clouds, such as private clouds, VMware’s vCloud or vSphere

Cloud Foundry is still beta and the currently deployed version is build of June 2010, which is
not a good sign of active development. The platform itself is fairly stable and we encountered
no issues in the few days we actively used it. . . Info-Tel. 0800 87 482 347 . Datum 20.01.2011 . Seite 7 / 8
On the pricing side, the developer preview is still free, but there is no doubt that an enterprise
version won’t be free.

We also noticed that the literature around Cloud Foundry is pretty scarce and that can be a
sign of low interest and adoption by developers.

8. Conclusion
We found that Cloud Foundry can already be used in a development environment. In that way
a team of developers will not spend too much time on the low level aspect of setting up a new
environment. However, it is still not ready for full production use, and can be used a reference
architecture or short-lived sites, such as showcase or proof-of-concepts.

We think that Cloud Foundry is going in the right direction, in terms of user interface; it sticks
to the bare essentials for the average Java developer and requires only a short time to be

9. Bibliography
       Cloud Foundry:
       Amazon Web Services:
       Open Source Cloud tools article ateWeek:
       Integration with SpringSource’s developer tools:

10.     Thanks
Special thanks to Godefroy Riegler for the initial review of this article. . . Info-Tel. 0800 87 482 347 . Datum 20.01.2011 . Seite 8 / 8

To top