We use cookies to distinguish you from other users and to provide you with a better experience on our websites. Close this message to accept cookies or find out how to manage your cookie settings.
To save content items to your account,
please confirm that you agree to abide by our usage policies.
If this is the first time you use this feature, you will be asked to authorise Cambridge Core to connect with your account.
Find out more about saving content to .
To save content items to your Kindle, first ensure no-reply@cambridge.org
is added to your Approved Personal Document E-mail List under your Personal Document Settings
on the Manage Your Content and Devices page of your Amazon account. Then enter the ‘name’ part
of your Kindle email address below.
Find out more about saving to your Kindle.
Note you can select to save to either the @free.kindle.com or @kindle.com variations.
‘@free.kindle.com’ emails are free but can only be saved to your device when it is connected to wi-fi.
‘@kindle.com’ emails can be delivered even when you are not connected to wi-fi, but note that service fees apply.
Cloud computing is not an abrupt innovation. Rather, it is a series of developments that have taken place over past few decades. Progresses in computing technology, starting from its early days, has slowly metamorphosed into cloud computing in this advanced era. Although the idea of cloud computing originated long ago, the concept could not materialize due to lack of necessary technological elements.
Documentary evidence can be traced back to the 1960s, when John McCarthy (who coined the term ‘artificial intelligence’) wrote that ‘computation may someday be organized as a public utility.’ Since then, computing technology has gone through phases of development. Hardware and communication technology have been progressed, Internet has changed the world and at the same time, the web-based software architecture has also matured.
As advancements in all associated fields have slowly overcome the limitations of earlier approaches, it has been possible to realize the dream of computing as the new measure of public utility. This chapter focusses on the evolution of cloud computing and discusses how generations have developed through stages like centralized computing, client server computing, distributed computing and grid computing on to cloud computing.
THE EVOLUTION OF CLOUD COMPUTING
Cloud computing is not an isolated development. Cloud technology has been matured over the years with constant advancements in the field of computing. The beginning can be traced back to a time when remote access to time-shared computing system became a reality. The realization of cloud computing has been closely linked with several other subsequent developments in the domain.
Several decades of research, particularly in the domain of parallel and distributed computing, have paved the way for cloud computing.
A thorough discussion about the development of cloud computing can never overlook the continuous innovations in the field of electronic and computing hardware. As the hardware technology evolved, so did the software. Beside these, with the advancements in communication protocols, network communication technology as well as Internet also played a vital role in this process. This section focusses on different phases of developments in the field of computing starting from the mainframe age and discusses how those progresses have contributed towards the growth of cloud computing.
Cloud computing is about using services provided by cloud vendors. When consumers invest effort and capital to develop their computing setup on some provider's service, one major concern for them is whether they can move to other cloud service in future, if necessary, with minimal disruption and effort. Can things once built over one cloud service be moved to another cloud service? This question arises since there are possibilities of vendor-lock-in, a situation where a consumer using one cloud service cannot easily move to a similar service delivered by a competitor company or service provider. All investments by a consumer may be in stake if computing setup created on one provider's service cannot be moved to other provider's service in future.
An other concern comes in mind when consumers think about linking applications of two different cloud services together or, when it is required to link some on-premises non-cloud or cloud computing setup with a public cloud service. Such linking brings forth the issue of interoperability. Can applications of two different cloud environments be linked in such a way? This concern may worry the consumers.
Consumers should have a clear understanding regarding these issues before moving into cloud. Such understanding enables one to take informed decisions when choices have to be made concerning technology, application or platform.
Cloud adoption among the consumers also depends on how a cloud environment can address users’ concerns regarding portability and interoperability, apart from the issue of security.
CHALLENGES IN THE CLOUD
Although the cloud service offerings present a simplistic view of computing services to consumers, there are few critical issues to consider while moving into cloud. As already discussed, the prime challenges among these are the challenges associated with information security, privacy and compliance. The other vital challenges are related to issues of:
▪ Portability and
▪ Interoperability
These two issues arise while moving a system into cloud. The primary concerns during such initiatives are whether the system components are portable into a new environment or not. And then, there are concerns about the interoperability of the components of the existing system too.
Security is one of the topmost concerns of any computing model and cloud computing is no exception. Consumers or enterprises moving into cloud need to feel secure about their computing facilities and more importantly about the data they are disclosing to service providers. This is a critical choice for enterprises accustomed to safeguarding data sitting in their own centers in the traditional way of computing. Cloud computing promotes the concept of working on proprietary data and applications outside their jurisdiction.
It is often said that, ‘cloud computing is an excellent idea, but cloud security is not good’. The common perception is that the cloud services are not inherently secure. Cloud computing creates scope for scores of possibilities although like any other technology, there are some risks associated with it which can be overcome if understood correctly.
A cloud computing environment can be formed in different ways and there can be several ‘cloud formations’. Each form is not suitable for every kind of business operations. Consumers must first understand which among these forms which is best-suited for their purpose. This little judgment can make the security of cloud computing even better than that of traditional in-house computing environments. This chapter focusses on these important aspects.
If studied and designed appropriately, cloud computing causes no more threat to security than what exist in traditional computing.
THE SECURITY CONCERN IN CLOUD
Traditional computing systems used to create a security boundary by placing firewalls at the gateways through which the network used to communicate with the outer world. Firewall blocks unwanted traffic trying to access the network it protects and thus only authenticated accesses are allowed into the system. Thus, malicious accesses get blocked at firewalls in the traditional data centers in order to keep the system protected from outside threats.
But this strategy only makes sense when all applications and data reside within one network of security perimeter. Traditional data centers allow perimeterized (i.e. within organization's own network boundary or perimeter) access to computing resources. But, the de-perimeterization (to open-up the interaction with outer network) and erosion of trust boundaries that was happening in enterprise applications, have been amplified and accelerated by cloud computing.
With appropriate capacity planning in cloud computing, the large pool of virtualized resources creates an illusion of an infinite source of computing resources. In the preceding chapters, it has been discussed how applications often need to scale to manage the varying workload and how resources are dynamically provisioned in order to meet the needs of scaling in cloud computing. It has also been discussed that horizontal scaling is more prepared for large scale scaling in distributed environment like cloud.
Upon obtaining provisioned or de-provisioned dynamic resources, the horizontal scaling provides elasticity to cloud computing. But, this flexibility comes with lots of implementation complexity. Load balancing is the mechanism through which these features are implemented. Apart from these, as there are multiple resources available to serve a particular type of service request, and in a distributed computing environment it becomes necessary to distribute proportionately those service requests among the available resources so that none of them becomes overloaded and degrades the performance of the entire system. It is the run-time logic or algorithm of distributing the service requests that has to be capable of evenly distributing the workload. This chapter discusses different types of load balancing techniques along with their pros and cons. The possible parameters for consideration while working out load balancing algorithms have also been discussed. A properly-designed workload distribution and balancing architecture reduces resource underutilization, improves the performance of a system and also brings down the cost of computation.
Load balancing is an important ingredient for building any dynamic, flexible, scalable and robustly-distributed computing architecture.
LOAD BALANCING
Load balancing in distributed computing systems is an essential technique to distribute processing and communication activities evenly across the resources in the network so that no single computing resource gets overloaded. Among different exercises, load balancing is especially important for applications which often deal with a large and unpredictable numbers of service requests. Load balancing is a technique that distributes load evenly among multiple computing resources such as processor, memory etc.
Through load balancing, the incoming service requests are distributed among available computing resources. An efficient load balancing mechanism improves average resource utilization rate and therefore enhances the overall performance of a system.
The easy access to high-performance computing resources in cloud computing has not only made the process-intensive activities smarter but the data-intensive computing activities also have taken center stage. The nature of data have radically changed with this revolutionary utility service; hence their processing and storage requirements vary. Large data-sets are generated and produced everyday are sent for processing in the high-performance computing environments.
Like the traditional storages, users can store and access multimedia files of various formats like text, image, audio and video in cloud also, but the storage requirements have been altered for efficient processing of the large data-sets which are produced in cloud every hour. The traditional enterprise level files and data storage systems were not sufficient to satisfy all of the data-intensive and high-performance computing requirements.
Efficient file handling to support parallel and distributed operations of large data-sets needed an entirely new file system format. Hence, researchers and computing vendors have come up with suitable storage solutions to achieve optimal performance in cloud like high-performance environment. This chapter focuses on all of these advancements made to fulfill those requirements.
Cloud computing promises high-performance. Hence, the file system and storage to support high-performance data processing are critical requirements of cloud environment.
REQUIREMENTS OF DATA-INTENSIVE COMPUTING
Data-intensive computing presents a challenge to computing systems in terms of delivering high-performance. Large volume complex data-sets cannot be processed centrally in a single node and require partitioning and distribution over multiple processing nodes. Thus, data-intensive computing is I/O-bound and requires rapid movements of data in large numbers. This requires appropriate management of data in transaction. Data modelling, partitioning, node assignment and accumulation are some of the critical parts of this computing. Consumers’ requirements and technical aspects related to the storage facility in high-performance computing environment are different from the traditional storage system in many ways. Traditional enterprise storage systems are no more sufficient to tackle those issues.
Scalability and high-performance distributed data processing are complementary to each other. Distribution of large data-set among as-many-nodes as required for processing promotes scalability of the application. Suitable file systems are required to support this distribution and scaling proficiently. It has been observed that data-intensive computing often involves process-intensive computing too. Complex data-sets present challenges before the computing system.
The future often arrives silently. In the digital world, cloud computing which emerged silently, has already made a significant place of its own and has shown enough potential to be the future of computing. The advantages it offers are plenty, and this is what makes cloud computing revolutionary.
Books on this evolving subject started appearing in the market towards the end of the last decade. A handful of books have been published so far, and they provide useful resource material. While a few among them have been written in order to discuss conceptual aspects of the subject, others have been written from research or application perspective. As the research or application oriented books serve specific purposes only, they are not appropriate for general readers of the subject.
Cloud computing is not a single technology; rather, it is a combination of multiple technologies. Hence, it is necessary to understand all those individual technologies in order to understand cloud computing as a whole. Many books have been written with their focus on some particular aspects of cloud computing, and thus, they have not been able to cover all the essential topics of cloud computing with equal importance. This book is written from conceptual perspective, for the sake of new learners of the subject, and it tries to fill the void for a book covering all the fundamentals in detail, with simplified explanations in a learner friendly manner.
The author felt the need for such a book while teaching the subject to the undergraduate engineering students, as well as software professionals who wanted to develop a basic understanding of the subject. It is either inadequate coverage or a complex approach of most books available in the market, that makes it difficult for new learners to develop a clear conception about the various aspects of these technologies, and they therefore do not satisfy the fundamental queries of students. Thus, it is a lack of books covering all the fundamentals in detail which encouraged the author to write this book.
The author is aware of the fact that computing and IT industry are fast merging into a singular cloud computing environment, and in the near future there will be a requirement for a large pool of workforce with sound insight into this subject.