I want to know the difference between cloud computing and client server architecture. I mean how is cloud computing different from a website that provides me some services. And what is the meaning of elasticity in terms of cloud computing.
How is cloud computing differrent from client-server architecture
client-servercloud computing
Related Solutions
Sounds a LOT like grid-computing, try to have a look at this: http://en.wikipedia.org/wiki/Grid_computing
The cloud-services available will also let you do some sorts of this, eg. S3 Storage from Amazon, where you just upload your data to a large "bucket" and they will move the data around on their multiple machines - you still just use your "filepointer" (key) to access it.
You can even multiplex your data through something they call CloudFront (http://aws.amazon.com/cloudfront/) but its meant as a "content delivery network" providing you will loads of fast webservers sending data to millions of users. Many largescale websites use these already.
Regarding transparency with a program running which needs more power, you can either program something that will transfer the job/relay it - but you will some sort of distribution mechanism to handle it. Either as part of your operatingsystem or if its more application based, just applications working together in a "computergrid/farm".
Most large 3D rendering programs suchs as MAYA and 3D Studio MAX has "Renderfarm" software too. You place all your physical hardware machines in a network and "enable them as rendernodes" and on a "mainserver" you place your projects for rendering. Each node will then request a "job" from the master and they will render pieces of the animations and post the results back to the master/destination afterwards.
Same trick was/is used by the SETI project. http://www.seti.org/
They provide you will a small "screensaver" and this screensaver downloads a bit of data from their giant datacenter - then the programs starts to crunch on the data downloaded. Once done analyzing it uploads the results to the master and requests a new one. All happends without you do anything but install the "node".
This way the thousands of computers running this little client will help in a giant grid network.
If everyone had a "grid computer operating system" you would never know what or who or howmuch was running on your computer - that could bring up some interesting security issues + if your system got "hacked".. what then? is the whole network down or just your grid access?
For reference, please look up "THE BORGS" and "STAR TREK" too... LOL!
"Cloud" is a marketing term while "Virtualization" is a technical term. Virtualization facilitates "cloud computing" in the terms that it reduces costs and by this makes it more affordable, but it is not a technical necessity. What is selling as "Cloud" today, was selling as "Infrastructure as a Service", "Platform as a service" or "Software as a Service" a couple of years ago, think of it as a re-branding with an airier buzzword.
Best Answer
Cloud is one of those over-used terms that mean different things to different people. However, since you mentioned elasticity, what that means is the ability to scale resources depending on requirements.
Assume for a moment that there is one VM with 64MB of RAM serving a website. There are only a few people using it. Then suddenly, there is a spike in usage (due to the slashdot effect) and that one VM and 64MB of RAM obviously will not cut it.
At this point, there are different strategies to handle this.
One possibility is to dynamically increase the RAM in the VM. Some services provide a burst-able RAM configuration to do this. Another possibility is to dynamically spawn new VMs that are clones of the existing VM and balance the load over them. This is a form of elastic computing.
The advantage of having this elasticity is resource consumption. There is no need to run a VM with a 4GB of RAM all the time if all it needs is 64MB usually. The resources can be re-allocated as and when necessary. New machines can be spawned and shutdown when needed.