The term cloud is widely used to refer to a whole family of products and services offered by many companies across the Web. So many in fact, that the term has become overloaded, meaning many things to many different people.
Some critics say that the cloud is nothing new. They argue that it is a marketing buzzword being applied to things that have been around for a long time.
This, in our opinion, is what qualifies as the cloud: a product or service whose only delivery model is via an Internet connection, and in the past was traditionally provided in house. In other words, whilst the capability is not new, the delivery model is new.
The current growth in cloud services – and hence the buzzword bandwagon – is due to service providers and service consumers of all types figuring out that this shift is possible and desirable.
The term is also being used in ways that have a tenuous connection with the traditional definition of the cloud. But this does not mean we should ignore the common situations where it is applied, and instead try and understand the different characteristics that makes something in the cloud (or “out there” as Larry Ellison notes)
These are the different categories of services being offered in the cloud:
Applications: pieces of software that people or whole communities of people can use to do things. Traditionally, these application would have been installed and maintained in house and maintained by the IT department. But for most businesses, high-speed, reliable Internet connections are a reality and looking after a server is a distraction from their core business
Examples: Hotmail (which pre-dates the cloud), GMail, Salesforce, Google Apps and DropBox.
Services: resources that can be used by other application developers to build bigger applications.
Examples: online payment systems, address look ups, credit scoring, file storage, image hosting and identity management.
Utility Computing: services based on a pay-for-use model where users pay for capacity provisioned or capacity used. These services are typically oriented around buying server time, and paying for horsepower and the metered services used such as bandwidth or memory consumption. Users of utility computing apply it to any application they desire. Many build Web sites, while other uses may be document production, hosting VOIP switches or running massive processing jobs like mining large datasets or weather simulation.
The heavy-weight champion in this category is undeniably Amazon’s Elastic Compute Cloud service (EC2), but there are some up-and-coming contenders.
Application Platforms: environments where applications are hosted and run, which the application developers are not responsible for. The platforms usually offer resources such as storage, which are accessed via proprietary libraries. Tasks like backup, disaster recovery and scaling the applications hosted on these platforms is transparent to the application developer.
These platforms are generally designed to deliver some kind of Web-based user experience and often impose some restrictions around the developer’s choice of implementation language and the application’s access to the underlying computer.
By selecting a specific application platform, and writing applications to the proprietary libraries, application developers are locking themselves (albeit wittingly) into that vendor’s technology. They are trading simplicity and time-to-market with the freedom to walk away from that platform.
Examples: Google’s App Engine and Microsoft’s Windows Azure.
Photo credit: schristia