Cloud Computing is perhaps one of the most widely acclaimed terms in the computer industry today. However, the true meaning has become very obscured as just about every company in the industry has taken what they were already doing and started calling it “cloud computing”. This is unfortunate as it adds obscurity to perhaps the most relevant paradigm shift in a very long time and at a time when much clarity and direction is needed. As such I’d like to renew our quest to provide a concise architectural model from which we can make appropriate choices as this segment matures. As we renew the activity, we should perhaps review the definition we derived earlier:
Packaging of computing resources in a manner that will provide lower acquisition cost of hardware and in a way that provides a set optimized services to the end user via the Internet in the most cost effective, operationally efficient means possible.
While I still agree with this definition at the highest level, I now do not think it accurately captures the idea of cloud computing. I believe the following to be more accurate:
Packaging of computing resources which delivers the end product or experience via the internet.
…as simple as that. I have seen a variety of other definitions (including my own tries) that attempt to add a other attributes that do not really add value and I believe simplicity is important. That said, let’s look at the continuum of cloud computing (depicted below) that deserve mentioning.
- Classical cloud computing (shown here as Subscriber Services) represent the initial ventures into cloud computing. The best known application is search where the provider creates as special top to bottom stack and allows user to access it over the web. The companion business model is of course revenue generation through advertising and fees. There are a variety of evolutions that have emerged using this basic vehicle, but it still stands as the more poignant and relevant example today.
- Platform / Cloud Services are the next category in this continuum. There are a variety of offering here that range from simply providing rented hardware (and yes it is somewhat difficult to put these offerings into this category, but this is where they are starting to show up) to offering a set of cloud services (like EC2) upon which the user can build an applications environment. A key distinction here is the application is provided and owned by the user.
- Probably the most talked about such offering is of course software as a service (SaaS). This is where the provider owns an application and “rents” it to the user for a period. There are certainly many who are attempting this, but no real outstanding successes so far.
- Finally, and what in my opinion is the most impactful of all, is what I am going to call applications services. A great example here is Salesforce.com which really provides a variety of application services that can be aggregated as needed by the client via the web. There many similarities between this and original subscriber services, but it is distinct in that there are many aspects (which will probably include SaaS as defined above) as these offerings mature.
Truth be told, we are probably going to see a lot of XaaS (pronounced Zaas) offerings (where X equals …insert your favorite idea for a services) that will come and go as the market evolves. However, all will be built on what I am calling the cloud architecture (see above) which will be the focus or our discussion.
It is also worth noting that there is much discussion about private clouds and public clouds. (This seems largely dependent on the maturity of your IT.) In reality, I can’t seem to find any difference except at the security level. Private clouds seem to be clouds where the only difference is they are behind someone’s firewall while public clouds are very open. Which brings us to another important factor that must be considered and is perhaps the item that people care the most about…..Data, Data Management, and specifically the location of the data. This too is a continuum as described here:
- Host owns data: This is the way search does it and is certainly the simplest. The providers scrub the web and collects data which they own. When the user searches, he uses the provider’s data on the provider’s machines and gets his result. This certainly simplifies things from a lifecycle prospective and any availability expectation about the data. It is the same thing with private clouds where the subscriber owns everything. So in that respect they will be simpler.
From here things are not so simple…
- For Platform and Cloud services, the provider’s machines or cloud services are used and the user is responsible for the data and the disposition. In the case of Amazon EC2, they also provide a storage service (S3) on which the user will most likely depend. Amazon does state policy about the data using their service, but it is really up to the user to understand and manage its lifecycle.
- For SaaS and the application service, it is going to be a little different. In this case the provider will have to manage the data which will belong to the user… (Here there be dragons… :o)
- I also think we can expect to see instances where some of the data will reside in the customer environment and some in the provider’s environment. This will be especially true when customers begin to use cloud services as a capacity “spill-over” in times where additional capacity is needed. Watch this space…..
These are the key consideration that most be executed properly for cloud computing to grow and be successful. Hopefully our reference model will begin to provide a thought framework as we develop our views.