Lately, I'm seeing two trends crystallizing the way how people think of working with cloud computing in Java. They are not mutually exclusive and they do have some certain overlap - but overall they represent very different visions on the subject:

  • Heavy UI oriented. These types of applications or framework usually provide UI-based consoles, management applications, plugins, etc that provide the only way to manage resources on the cloud such as starting and stopping the image, etc. The key characteristic of this approach is that it requires a substantial user input and human interaction and thus they tend to be less dynamic and less on-demand. Good examples would be RightScale, GigaSpaces, ElasticGrid.
  • Heavy framework oriented. This approach strongly emphasizes dynamism of resource management on the cloud. The key characteristic of this approach is that it requires no human interaction and all resource management can be done programmatically by the grid/cloud middleware - and thus it is more dynamic, automated and true on-demand. Google App Engine (for Python), GridGain would be good examples.

Now, I can easily see how these two approaches can be beneficial. First works the best for traditional environment where clouds are managed by network and system administrators and developers have very little control over it. This is how traditional data center (internal or external) are managed.

The second approach is something new and evolving as we speak. It aims to dissolve the boundaries between a local workstation and the cloud (internal or external) by providing relative location transparency so that developers write their code, build and run it in exact the same way whether it is done on a local workstation or on the cloud thousands miles away or on both.

To be continued...



Your Option (Login or Post by anonymous)