Java cloud computing

The this years JavaOne conference topic seems to be cloud computing. It is a pretty new topic, smells of money what is clearly indicated by the companies being active in this area: Amazon, Google, Microsoft and of course Sun.
Cloud computing is highly commercial even though using Open Source components but from my impression it is highly impressive as well.

What is cloud computing?

Basically it is the next step from virtualized server. Before you could already buy a virtual server and ask for additional RAM or CPU or spindles in case of need. Cloud computing pushes this further. You can get additional virtual services like application server or large data stores and even complete virtualized network environment.
Whereas a virtualized server companies offers you to install a number of different OS images, cloud computing might provide images for pre configured application server, databases etc
Imagine the following use case: You need to define the hardware architecture for a large application. You select a firewall, a switch, database servers, application servers and webservers. You work out the network configuration. Then hardware is bought, installed and configured.

The Sun cloud allows you to paint your architecture diagram, assign IPs, define VLANs and press a button and it is there. Setting up a complex hardware infrastructure happens on a button push. You only need to have your creditcard ready.

This allows to completely outsource the handling of hardware while still being able to have control over your hardware architecture. This is a great opportunity for a lot of companies.
But don’t start dreaming, your own bare metal environment with a good team of well trained expert will be more efficient but requires the team. If you don’t train your people or just doesn’t want to handle IT infrastructure then cloud computing is very interesting to you.

There is one area where cloud computing has an advantage over your own controlled and optimized environment. A cloud can dynamically add capacity. If suddenly the world starts to love your website and you need to increase the number of application servers from one to 200, then a cloud can just add the capacity. You might not be able to do this on your own in short time. And you cannot shrink it as well, if the world stops loving your website.

Impact of cloud computing on your software

A lots of things are being influenced by cloud computing, software architecture, deployment strategies but as well data storage and databases. Clouds are intended to host terra and peta byte of data. This requires new strategies for moving around the data. Copying a terra byte of data on normal hardware would run for ages. The same applies to very large databases. Strongly influenced by Google there are new non relational databases which allows to work with extremely large dataset. As a consequence cloud computing is interesting for all applications collection large amounts of data.

From the JavaOne conference 2009 in San Francisco

Best Regards

Sebastian Hennebrueder