Ian Foster and his colleagues stated in a recent article entitled, “Cloud Computing and Grid Computing 360-Degree Compared” that grid and cloud computing share the same vision, but that there are a few key differences that separate the two.
Indeed, grid and cloud computing are both ways to realize the long-held dream of “computing as a utility” that was envisioned by computing pioneer John McCarthy as early as in 1961. However, since these two computing models were born at different time and adopt different approaches to tackling problems, they are doomed (or destined) to different futures. While this is just one point of view, the main differences between grid computing and cloud computing are as follows.
Grid computing and cloud computing have different origins, which will determine their evolution.
Grid computing originated in academia, or more precisely, the field of high-performance computing (HPC), in the mid 1990s with an aim to facilitate users to remotely utilize idle computing power within other computing centers when the local one is busy.
Initially, it only referred to a compute grid and had a rather limited audience. However, after years of development the grid gained more momentum and came to mean an effective way for “coordinated resource sharing and problem solving in dynamic, multi-institutional virtual organizations”.
One notable event during grid’s evolution was the delivery of the Web Service Resource Framework (WSRF) that declared the full convergence of grid and service-oriented architecture (SOA), thus paving the way for grid computing to enter into the business domain. However, due to a lack of explicit business models (among a host of other factors that will be analyzed later) even today there is still no widely-accepted commercial grid service available on the market.
On the contrary, cloud computing stems from industry, or more precisely the field of Web applications, with an aim to sell resources as a service to customers through an on-demand approach. At the time of cloud’s emergence, SOA has been prevalent for quite some time and much experience has been gained with grid operation. In addition, the information technology (IT) giants such as Amazon and Google had already established real commercial large-scale systems. Furthermore, at this juncture, the Web 2.0 paradigms were driving the need for computing sky-high. Thus, cloud computing had a mass user base as well as many providers from the very beginning, which sets a solid basis for its success in the business domain.
In the end, the marketing pressure of ever-increasing revenue goals and the need to maintain the competitive advantage soon pushed cloud providers to expand their services from the business domain into scientific computing. For example, IBM and Google, jointly with National Science Foundation (NSF), established the Cloud Computing University Initiative in 2009 and following that Microsoft sponsored the Computing in the Cloud (CiC) program in 2010.
Grid computing and cloud computing adopt different design philosophy, which leads to different technology directions.
Grid computing adopts a resource-centric design with an emphasis on integrating resources from different organizations to form a uniform resource pool. Since these organizations are usually distributed geographically and have their own rights in determining vendors of their resources, the principal challenge facing grid computing is to shield the inherent heterogeneity and distribution of underlying resources.
Grid computing achieves these goals by using so-called grid middleware, a specific software product that provides necessary yet generic services for resources index, discovery and use. Note, however, that grid middleware itself is a software product and therefore introduces new heterogeneity to the whole IT ecosystem. Even today, interoperation between various grid systems is not an easy task.
In contrast, cloud computing adopts a user- and task-centric design with a focus on dividing resources into smaller pieces and delivering them to users in their desired way whenever needed. Here resource heterogeneity and distribution is no longer a key problem. Instead, the principal challenge is to improve flexibility, scalability, availability and reliability.
Cloud computing requires less administration work than grid computing.
In grid computing, resources are possessed and supplied by various autonomous organizations. To form a unified resource pool, a heavy system administration burden is raised. For each administration domain, besides the routine maintenance work, system administrators must do much extra work to coordinate local administration policies with global ones. For example, they must make sure that resources are shared in a way fully compliant with local regulations. In addition, they must separate environments of local users from those global ones in order to guarantee reliability and security. None of the work above is trivial. In the end, installing and configuring the grid middleware itself implies a lot of work and presents some challenges even to experienced system administrators.
Resources in cloud computing, on the contrary, are usually possessed or operated by a single organization. Therefore, coordinating different administration policies are no more needed. In addition, there is no need for system administrators to install and configure users’ programs with the pervasive worry that they may interfere with each other and cause system disasters. This is because cloud computing can provide an isolated, user fully controllable yet independent running environment for each user using virtualization technology. Obviously, the burden of system management is greatly eased.
Cloud computing lays fewer constraints on end users than grid computing.
There are two ways for end users to interact with a grid system. The first is to use the pre-installed services through the interfaces supplied. Since these services are designed to support the needs of common users, the special requirements or habits of some users cannot be met. In other words, in this case users have to adapt themselves to the pre-set operation styles and instructions.
The second way for end users to interact with grids is to run a task directly in a grid. Since the grid adopts a one-size-fit-all approach and tries to meet various needs by a unified resource pool, many unnecessary details of the underlying infrastructure are exposed to users, making it difficult to use. To run a task in a grid, users need to specify so many parameters such as the type and quantity of resources desired, information used for authentication, the program to be run and its arguments, sources of the input, and the output and its destination. Even if these parameters are set properly, it does not mean the job can get done because the grid middleware itself is a software product with special requirements on the running environment and chances are the program corresponding to a job is not executable on the platform on top of which a grid middleware is running.
Like grid computing, cloud computing provides the same two ways for end-users to consume the resources supplied. In the first case, though cloud users undergo the same constraints, things are improving because there are more services available on the market that provide similar functions. Moreover, the market pressure urges services providers to keep improving their services. This is quite different from grid computing where no market pressure exists and users have few choices. In the second case, cloud computing also shows some advantages. Running a task in clouds is much easier and faces fewer constraints because, owing to the virtualization technology, users can always set up an environment capable of running their programs, provided that there are enough resources available. Setting up such an environment can be done by several mouse clicks and, in a way, is much like using local machines.
The cloud is easier to program than the grid.
Since grid computing exposes many unnecessary details of the infrastructure to the users, developing applications on a grid is a complex task in general. First, developers must spend a great deal of time learning about the details about the grid environment (e.g., the way to stage data to and from an execution site, the way to find a specific service to be invoked, etc) as well as the related APIs (Application Programming Interfaces).
Second, grid developers they must pay more attention than ever to such issues as exception handling, fault tolerance and so forth. Finally, because there are no mature tools for debugging and measuring the behavior of grid applications, developers must struggle in their own ways to ensure the correctness of the application developed.
Things are getting better for developers in cloud computing. First, the APIs provided by the cloud are simpler and easier to use than those provided by the grid. Second, there are tools available that can assist developers write and debug their programs. This is because providers on the market tend to supply an SDK (Software Development Kit) and/or some debugging tools for their services. The Google App Engine local development environment and the Visual Studio 2010 for Windows Azure are two good examples of them.
We have now examined the differences between grid computing and cloud computing in detail. If one thing is clear, it is that cloud computing does show some advantages over grid computing. This can be used to account for its popularity at least to some extent. Besides this, the popularity of cloud computing can also be explained using the findings in CSCW (Computer-Supported Cooperative Work) research as follows.
The CSCW research tells us that, to derive the greatest benefit from CSCW, the supporting technology must infiltrate as widely as possible throughout the populace. This also holds for cloud computing. In general, cloud computing presents no new technology. As the supporting technologies behind cloud computing, virtualization, SOA and Web services, Rich Internet Applications (RIA) and so on have been there for years. Thus, the market entrance is low, which sets up a good basis for the prosperity of the market.
Secondly, cloud computing provides enough respect for the social habits of users– using a machine in the cloud makes no difference with using a local one. Therefore, users do not need to change the habits developed for years. As indicated by CSCW research, in this way the critical mass problem can easily be met. This makes cloud computing sustainable and more likely to succeed.
The last but the most important one, according to CSCW research, incentives are critical to the success of CSCW systems. So does to cloud computing. The benefits brought by cloud computing are as follows. First of all, cloud computing relieves users of the cost and work to operate their own infrastructures while still allows them to access computing resources in a way they are familiar with. This makes it possible for users to do less but get more. Next, users need not do much, if any, additional work to use the services provided by the cloud. Moreover, they can benefit from the advanced features of cloud computing such as unlimited resource available on demand, no up-front commitment, pay-as-you-go usage of resources, the great potentials for group collaboration, and the universal access to information and services.
In summary, compared with grid computing, cloud computing is easier to use and program; provides more benefits and rewards without changing much the way that people already get used to when consuming resources. Therefore, it is not strange at all that cloud computing is attractive. However, cloud computing, as a new paradigm, does bring changes to business operation (e.g., operations are done remotely, out of the users’ reach and full control) and present some technical challenges (e.g., service availability/reliability, data or vendor lock-in, security and privacy, performance especially for HPC, etc). Therefore, time is still needed before the full potential of cloud computing is recognized and unfolded. Anyway, I for one believe that cloud computing has a bright future.
About the Author
Jinlei Jiang is an Assistant Professor with Department of Computer Science and Technology, Tsinghua University, China.
He received a PhD degree in computer science and technology from the same university in 2004 with an honor of excellent dissertation. From May 2007 to April 2008, he visited Institut fuer Informatik, Technische Universitaet Muenchen, Germany with the Group of Applied Informatics – Cooperative Systems under the sponsorship of Alexander von Humboldt Foundation.
His research interests mainly focus on grid and cloud computing, computer-supported cooperative work, and workflow management. During 2003 and 2010, he took part in several grid computing projects in China such as China National Grid (CNGrid), National Science Foundation Grid (NSFGrid), and Learning Assessment Grid (LAGrid) as well as the OMII-Europe project that is funded by the European Union under Framework 6 Research Infrastructures priority. Recently, he and his colleagues have co-led the development of Tsinghua Cloud, the first cloud computing platform in China that covers both computing and storage. Tsinghua Cloud is now running on the Tsinghua campus with 100TB storage space, more than 20,000 registered users, 1.3TB data traffic and 3,000 unique visits per day. For more information about him, please visit https://grid.tsinghua.edu.cn/hpcgrid/GCD/english/faculty/jlj.htm.