Difference between Grid and Cloud Computing?
Cloud computing is an extension of the object-oriented programming concept of abstraction. Abstraction, as explained earlier, removes the complex working details from visibility. All that is visible is an interface, which receives inputs and provides outputs. How these outputs are computed is completely hidden.
For example, a car driver knows that a steering wheel with turn the car in the direction they want to go; or that pressing the accelerator will cause the car to speed up. The driver is usually unconcerned about how the directions of the steering wheel and the accelerator pedal are translated into the actual motion of the car. Therefore, these details are abstracted from the driver.
A cloud is similar; it applies the concept of abstraction in a physical computing environment, by hiding the true processes from a user. In a cloud computing environment, data can exist on multiple servers, details of network connections are hidden and the user is none the wiser. In fact, cloud computing is so named because a cloud is often used to depict inexact knowledge of inner workings.
Cloud computing derives heavily from the Unix paradigm of having multiple elements, each excellent at one particular task, rather than have one massive element which isn’t as good.
Grid computing harnesses the idle processing power of various computing units, and uses that processing power to compute one job. The job itself is controlled by one main computer, and is broken down into multiple tasks which can be executed simultaneously on different machines. These tasks needn’t be mutually exclusive, although that is the ideal scenario. As the tasks complete on various computing units, the results are sent back to the controlling unit, which then collates them forming a cohesive output.
The advantage of grid computing is two-fold: firstly, unused processing power is effectively used, maximizing available resources and, secondly, the time taken to complete the large job is significantly reduced.
For a job to be suited to grid computing, the code needs to be parallelized. Ideally the source code should be restructured to create tasks that are as mutually exclusive as possible. That is not to say that they cannot be interdependent, however messages sent between tasks increase the time factor. An important consideration when creating a grid computing job is that whether the code is executed serially or as parallel tasks, the outcome of both must always be equal under every circumstance.