New Features in the Latest Cloud Foundry

Engineering | Charles Lee | November 23, 2009 | ...

We recently updated With this update, we introduced several exciting new features that pave the way for future development. I want to take this opportunity to describe and explain these features, as well as provide some background in how they came about. We are excited for you to try them out and provide us with feedback.

Cost Tracking

While the pay-per-use model of the cloud can reduce expenditure, it is important to track the actual usage and costs so that it does not result in an unexpected hefty bill. Previously, Cloud Foundry informed the users of their current spending rate of their deployments. This is useful for understanding the meter rate, but it does not give a clear understanding or statistics on how much an application deployment actually costs. The latest update to Cloud Foundry presents a new historical feature to cost tracking. For running deployments, Cloud Foundry displays the cost so far. For deployments that are no longer active, the total cost of running that deployment over its lifetime is shown.

Screen shot 2009-11-18 at 12.59.52 PM

Aside from preventing monthly bills from surprising you, this is particularly useful when you need to compare the cost per application against the budget. If your budget is derived from correlating the business objectives to the dollars spent, then Cloud Foundry will clearly show you if you have achieved your goals. Over time, we expect to evolve this feature to be more accurate (network I/O charges are not currently included) and expand the statistic correlation between cost and other operational metrics to give you the tools for better targeting and planning.

Availability Zone

Many users have requested the ability to specify the availability zone for deployments due to the fact that reserved instances in EC2 need to be launched in specified availability zones.  Reserved instances are pre-paid and cost about a third of on-demand instances. Cloud Foundry now offers the ability specifiy the availability zone and the selection input is positioned below the region when configuring deployments.

Screen shot 2009-11-19 at 10.46.12 AM

Note: the cost tracking does not reflect the cost savings of using reserved instances as Amazon does not yet provide a convenient way of retrieving the billing details.

Maintenance Page

If you need to disable your Java web application for maintenance, the convention is to display a bumper page (a.k.a. maintenance page) informing your user of the unavailability. Cloud Foundry now provides this capability with just a single button. First, when you add or edit an application, you will notice a new field: Maintenance Page. This is the static page (from the application’s root context) that you would like to display when in maintenance mode. Once deployed, you can switch between maintenance and normal operations by going to the Deployment Details page and clicking “Begin Maintenance” to display the maintenance page; and click “End Maintenance” to revert back to serving the application normally. This is a small step towards providing full application lifecycle management support. We introduced the integration with developer tools last month, and we will be analyzing and figuring out the various lifecycle phases/stages that should be supported in the development and deployment of applications into the cloud.

Clone Deployment

There are numerous reasons for duplicating environments with the same configuration, and now Cloud Foundry provides a simple way of cloning a deployment with the Clone button on the deployment details page. Creating a duplicate deployment based on an existing deployment is particularly useful when used in conjunction with the maintenance feature to upgrade an application. The Clone button is enabled when your deployment utilizes an EBS volume. You will be prompted to give the clone a name and all the configuration will be duplicated and launched in a new deployment. Once the cloned deployment is launched, you can deploy a different version of the application or a completely different application altogether by clicking on the Redeploy button in the Applications section.

Screen shot 2009-11-18 at 2.24.05 PM

A series of steps may be involved in upgrading an active deployment of an application:
  1. Upload a tested application to Cloud Foundry
  2. Enable the maintenance page on the current deployment
  3. Clone the deployment
  4. Run a SQL script to migrate the database schema
  5. Redeploy with the newer version of the application
  6. Reconfigure the elastic IP so that the new deployment is served from the static IP address
  7. Stop the old deployment
With the clone feature, upgrading a running application can be smooth and reliable by leveraging the existing production deployment configuration.

Additional Metrics and Charts

In this latest release of Cloud Foundry beta, we have improved the monitoring capability by extending the number of metrics collected, as well as adding user-interface features. First of all, Hyperic SIGAR filesystem metrics have been added to provide monitoring of crucial disk usage information on the VM root disks and the database storage. These metrics are now visible in the areas of instance details. Next, the number of client requests has been added as a metric. Cloud Foundry collects this data and converts it to a rate based metric per minute, giving you a measure of usage of your application. This metric appears in the improved deployment details section as a chart with a listing of aggregate values (maximum, minimum, and average).

Screen shot 2009-11-18 at 3.44.20 PM

This is just the beginning of providing a dynamic monitoring display that provides useful and correlated operational metrics and data. Over time, we will be adding more metrics for performance, health, and resource consumption.

Spring 3 Type Conversion and Validation

Engineering | Keith Donald | November 17, 2009 | ...

The Spring 3 final release is right around the corner, and it's going to be a great release. In this blog entry, I will take you through some of Spring 3's type conversion and validation enhancements. Whether you are developing a traditional web application, a desktop application, or a "next-generation" RIA, data binding, type conversion, and validation are important areas. As you'll see in this entry, Spring 3 gives you a significant upgrade in each of these areas while preserving backwards compatibility with previous releases.

New System Goals

Before I get into features, I'd first like to highlight the…

Understanding the Value of Your Application

Engineering | charris | November 16, 2009 | ...

We all love building applications with the latest and greatest technology however at the end of the day we are paid to deliver applications that achieve business goals. We spend each development iteration focusing on how best to achieve these goals but how do we know if the latest iteration achieved its goals? Did the latest release effect the existing business goals being delivered by the application?

SpringSource delivers this capability by giving you visibility into the application with Spring instrumentation, monitoring tools that show trends and reporting tools that allow you to export…

Spring Framework 3.0 RC2 released

Engineering | Juergen Hoeller | November 13, 2009 | ...

It is my pleasure to announce that we released the second Spring 3.0 release candidate today (download page). This release introduces key improvements over RC1 in several areas, in particular:

  • Spring 3.0 RC2 is fully JSR-330 compliant and passes the final version of the TCK. JSR-330, a.k.a. "Dependency Injection for Java", basically standardizes an @Inject annotation with a qualifier model. The "javax.inject" annotations can now be used as alternative to Spring's own @Autowired and @Qualifier annotations. Spring's <context:annotation-config> element automatically activates JSR-330 processing as well (if the "javax.inject" API is present).

  • A dedicated AnnotationConfigApplicationContext: making programmatic bootstrapping as convenient as possible, without any XML involved. Explicit registration of annotated classes is supported as well as component scanning in the classpath. This works fine not only with Spring's @Component model but also with @Configuration classes (a.k.a. "JavaConfig") and JSR-330 compliant classes.

Cloud Foundry integrated into developer tools

Engineering | Charles Lee | November 10, 2009 | ...

Thanks to the efforts of a number of other SpringSource project teams, we are excited to have integrations of three developer tools with Cloud Foundry, namely SpringSource Tool Suite, Grails, and Roo.  The result of this is that you can create and develop your Spring or Grails applications, and run them in the cloud without having to leave your favorite IDE or command-line interface.  These tools utilize the Cloud Foundry client web services API (to be published soon) and leverage additional intelligence and SpringSource artifact repositories in the cloud for optimized, efficient uploads of…

Introducing Spring Batch Admin

Engineering | Dave Syer | November 10, 2009 | ...

Spring Batch Admin provides a web-based user interface that features an admin console for Spring Batch applications and systems. It is a new open-source project from SpringSource. A milestone release 1.0.0.M1 will be available soon with all the features below, and we hope to get to a 1.0.0 final release early in 2010.

Main Use Cases

The easiest way to get a quick overview of Spring Batch Admin is to see some screenshots of the main use cases. The user interface is a web application (built with Spring MVC).

Inspect Jobs

Jobs View The user can inspect the jobs that are known to the system. Jobs are either launchable or non-launchable (in the screenshot they are all launchable). The distinction is that a launchable job is defined and configured in the application itself, whereas a non-launchable job is detected as state left by the execution of a job in another process. (Spring Batch uses a relational database to track the state of jobs and steps, so historic executions can be queried to show the non-launchable jobs.)

Launch Job

Launch Job View Launchable jobs can be launched from the user interface with job parameters provided as name value pairs, or by an incrementer configured into the application.

Inspect Executions

Job Executions View Once a job is executing, or has executed, this view can be used to see the most recent executions, and a brief summary of their status (STARTED, COMPLETED, FAILED, etc.). Job Execution View Each individual execution has a more detailed view (shown above), and from there the user can click down to a view of each of the step executions in the job (only one in this case). A common reason for wanting to do this is to see the cause of a failure. Step Execution (Top) View The top of the step execution detail view shows the history of the execution of this step across all job executions. This is useful for getting a statistical feel for performance characteristics. A developer running a job in an integration test environment might use the statistics here to compare different parameterisations of a job, to see what effect is of changing (for instance) the commit interval in an item processing step. Step Execution (Bottom) View The bottom of the step execution view has the detailed meta-data for the step (status, read count, write count, commit count, etc.) as well as an extract of the stack trace from any exception that caused a failure of the step (as in the example shown above).

Stop an Execution

Stop Job Execution View A job that is executing can be stopped by the user (whether or not it is launchable). The stop signal is sent via the database and once detected by Spring Batch in whatever process is running the job, the job is stopped (status moves from STOPPING to STOPPED) and no further processing takes place.

Where to get it

The best place to start is the SpringSource community download page. There is also a snapshot download attached to this article, or you can get the source code from subversion and compile it yourself. Snapshot builds also go up to S3 to the Maven repository every night:
	<name>Spring Maven Snapshot Repository</name>

There are two JAR artifacts and a WAR sample (org.springframework.batch:spring-batch-admin…

dm Server 2.0.0.M6

Engineering | Ben Hale | October 27, 2009 | ...

dm Server 2.0.0.M6 is now available and can be downloaded from here.

This release follows quickly on the M5 release as we close in on the first 2.0.0 release candidate. This time we've focused very heavily on fixing outstanding defects and added just a handful of new features. Take a look at the M6 release notes for the full details of the defects that we've fixed and the features we've added. Please keep your feedback coming as comments on our blog, in the forums, and on the JIRA.

New and Noteworthy

Running dm Kernel and dm Server as a Service

The dm Kernel and dm Server can now be started as a service on windows and UNIX machines. To install the service on windows you need to edit the $HOME/bin/service/conf/wrapper.conf file to properly list the path of the kernel or server. Then you run the $HOME/bin/service/windows.bat install. There are other commands to be run and the dm Server documentation addresses the others.

UNIX users have it even easier as the $HOME/bin/service directory contains a number of init.d compatible…

Introducing tc Server Developer Edition - with Spring Insight

Engineering | Jon Travis | October 21, 2009 | ...

We are proud to present the Spring community with a new tool which helps get their applications to production even faster: tc Server Developer Edition is the standard 100% Tomcat you know and love, plus a new Spring Insight console.

Spring Insight gives deep visibility into your application’s real activity on a request-by-request basis. For any request you can see all the JDBC queries it made, how much time it took to render, or timings for any of your major Spring beans.

This fine grained information is very valuable when you are looking at a specific request in isolation, but it can be…

dm Admin Console Demo Screencast

Engineering | Christopher Frost | October 21, 2009 | ...

Here is a screencast showing the dm Admin Console for the dm Server. It gives a brief tour of the dm Admin Console and then shows some of the features by deploying a simple demo application. The application consists of a configuration file, a web bundle and a content bundle. When deployed the application simply shows the contents of the configuration file in a web browser. The application is installed in parts for the purpose of this demo, in reality you would group the application together with either a 'par' or a 'plan', to see how this is done with a 'plan' file another screencast is…

dm Kernel

Engineering | Steve Powell | October 19, 2009 | ...

In Milestone M5, for the first time, dm Kernel is available standalone. You can get it from here.

What is dm Kernel?

Basically, dm Kernel is everything good about dm Server except support for web applications. So, there are no web apps supplied (not even Admin Console or Splash) and no Tomcat —just the kernel.

Essentially, dm Kernel provides you with all that is good about dm Server’s OSGi support, including:

  • scoping
  • hot deployment
  • pars
  • bundles
  • plans
  • configuration properties
  • auto-provisioning
  • repositories
    • all repository types: watched, external and remote
    • chain support (the chain is empty by default)
  • easy configurability
  • the user region
  • full system and application tracing and dump support
  • oh, and of course, Spring beans and Spring DM support as usual,
but no web stuff.

If you want OSGi modular support for your system apps, but don’t want or need to host web applications, then dm Kernel is what you want.

This is exactly the same kernel that is shipped with a full dm Server—no modifications or adaptations. Being able to deploy and run the kernel by itself is yet another demonstration of the clean, modular design of dm Server.

Small print

How do I administer a dm Kernel without the Admin Console? (I can almost hear you ask.) Well, the answer is also provided in M5—use the Shell either locally or remotely (over ssh). You’d think we planned this, or something.


Get the Spring newsletter

Thank you!

Get ahead

VMware offers training and certification to turbo-charge your progress.

Learn more

Get support

Spring Runtime offers support and binaries for OpenJDK™, Spring, and Apache Tomcat® in one simple subscription.

Learn more

Upcoming events

Check out all the upcoming events in the Spring community.

View all