There are so many views and definitions of "Cloud Computing" in the market. Some view it as snake oil like Ken Olsen of Digital dismissed Unix in the 1980's. Some view it as some pure architecture and want to define it by a set of standards or implementations.
I think the more important thing is to see some of the basic concepts and implementations in the market and understand how that could influence building and deploying applications less expensively.
At eXo, we think the Cloud has several key characteristics we are trying to build into our product and allow customers the ability to deploy into various forms of Cloud computing. The five key characteristics we think about are:
- On Demand
- Cost Effective
On Demand - The very term implies a loosely coupled service model. When I want my pizza, I will make a call and get it delivered to me. The old model of having control of everything within your own data center is not realistic anymore - but you want to make sure when you make the call for the pizza, it is there and reliable and will deliver exactly what you want. eXo has been built on a services-based architecture. What this means to customers and service providers is that all of the rich functionality of modern web applications is available as a REST-based service call. It does not matter where the service resides - in an Enterprise Cloud server, on an outside service provider, or even on the same machine.
Agile - Speed of development and speed of deployment are really the key value to Cloud computing. Customers flocked to Salesforce.com because of their speed of getting deployed as well as how fast they could customize the application to their needs. As compared to the old alternatives of Siebel as an enterprise deployment or Act as a PC based deployment it just got the job done so much faster. eXo is focused on moving Java shops to this new concept of speed of development with mashups, Gadgets, reusable services, and to deployment by simply putting up the service integrated with existing Java middleware.
Multi-Tenancy - This is probably the most important for how platforms like eXo are architected internally. While each tenant could be sent to a separate VM and an entire environment replicated on each VM, this is hardly efficient. The idea of Multi-tenancy can be looked at across the various layers of the stack, and this is exactly how eXo approached this opportunity. The result is a nice combination of efficiency, scalability and security.
Elastic - Cloud deployments have the potential to scale far greater than "Enterprise" applications. Data requirements are far larger and more complex. Needs for technology like caching and data grid technology is needed here to allow platforms to scale to large size. eXo is doing some interesting work in this area that will hopefully come to market later this year.
eXo is betting our company on Cloud computing. Not whether it will be one Cloud or internal or external - but on the concept that Java shops are going to be driven to this lower cost and faster development and deployment offered by the overall movement to the Cloud.