Everyone is talking of ‘Cloud Computing’. While, some claim it to be the biggest transformation in IT allowing access to seemingly limitless power of computing, others believe it to be extreme ”marketing hype campaign” .
Controversies aside, what exactly is cloud computing?
Simply put, it is the sharing of information, resources and services over the internet to meet the growing demands of the Internet’s population like High-Availability i.e round the clock availability of Web Applications to all it’s user and high concurrency, as in the ability to process huge number of requests simultaneously.
It all started with the increasing demand for web-based services in late 90s and early 2000s; Google, Yahoo, Amazon and Microsoft being the key players. Since then, it has given a new direction and a secure future to the client-server architecture. Thanks to the power of cloud now we can imagine infinite storage, virtually unlimited memory and almost limitless processing.
Day in and day out we hear about Distributed Computing, Grid Computing and Cloud Computing. So how are they different or are they all different names for the same thing?
Distributed computing is just computing orchestrated between two or more computers, involving parallel processing, shared memory and storage etc.
Grid Computing is a form of distributed computing where in a “super virtual computer” is composed of many heterogeneous, geographically distant, networked loosely coupled computers acting together to perform very large tasks.
Cloud Computing, by definition, is distributed computing, but a specialized form, where in the end-user is abstracted from all the complexities and configurations of the individual moving parts and only presented with an environment which is virtually infinitely scalable.
Because the Cloud Computing environment is not bound by the limits of geographic area, we can infinitely extend it by adding Single Servers, Pool or Cluster of Servers or even whole data-centers to it, and share the hardware resources on each of these nodes to form the compute cloud. Sharing of hardware resources involves sharing of memory, sharing of storage and sharing of processing. Memory sharing is achieved by shared in-memory key-value-hashes like MemCached or Redis. Sharing of storage is done with the help of distributed file systems like Hadoop Distributed FileSystem or GlusterFS. Processing can be shared by the means of technologies like MapReduce. This makes the compute cloud virtually infinite in terms of resources.
Some cloud computing service providers have made it possible for the common man to use the power of the cloud to create their own web applications and scale them at very low costs. Google AppEngine provides a Cloud Computing Platform as a service, Amazon with its AWS set of services provides individual services like Storage, distributed key-value-store and even the whole infrastructure as a service inform of Amazon EC2 (Elastic Compute Cloud). Microsoft entered the arena with its Windows Azure cloud platform. There are several other cloud service providers, like RackSpace Cloud, Joyent Cloud etc.. We will be reviewing the differences and similarities between these in our future posts.
Undoubtedly the concept of the cloud is here to stay and grow.