Table of Contents
Cover image
Title page
Copyright
Dedication
Preface to third edition
Abbreviations
Chapter 1: Introduction
1.1. Cloud computing, an old idea whose time has come
1.2. Energy use and ecological impact of cloud computing
1.3. Ethical issues in cloud computing
1.4. Factors affecting cloud service availability
1.5. Network-centric computing and network-centric content
Chapter 2: The cloud ecosystem
2.1. Cloud computing delivery models and services
2.2. Amazon Web Services
2.3. Google Clouds
2.4. Microsoft Windows Azure and online services
2.5. IBM clouds
2.6. Cloud storage diversity and vendor lock-in
2.7. Cloud interoperability
2.8. Service-level Agreements and Compliance-level Agreements
2.9. Responsibility sharing between user and service provider
2.10. User challenges and experience
2.11. Software licensing
2.12. Challenges faced by cloud computing
2.13. Cloud computing as a disruptive technology
2.14. Exercises and problems
Literature
Chapter 3: Parallel processing and distributed computing
3.1. Computer architecture concepts
3.2. Grand architectural complications
3.3. ARM architecture
3.4. SIMD architectures
3.5. Graphics processing units
3.6. Tensor processing units
3.7. Systems on a chip
3.8. Data, thread-level, and task-level parallelism
3.9. Speedup, Amdhal's law, and scaled speedup
3.10. Multicore processor speedup
3.11. From supercomputers to distributed systems
3.12. Modularity. Soft modularity versus enforced modularity
3.13. Layering and hierarchy
3.14. Peer-to-peer systems
3.15. Large-scale systems
3.16. Composability bounds and scalability (R)
3.17. Distributed computing fallacies and the CAP theorem
3.18. Blockchain technology and applications
3.19. History notes and further readings
3.20. Exercises and problems
Chapter 4: Cloud hardware and software
4.1. Cloud infrastructure challenges
4.2. Cloud hardware; warehouse-scale computer (WSC)
4.3. WSC performance
4.4. Hypervisors
4.5. Execution of coarse-grained data-parallel applications
4.6. Fine-grained cluster resource sharing in Mesos
4.7. Cluster management with Borg
4.8. Evolution of a cluster management system
4.9. Shared state cluster management
4.10. QoS-aware cluster management
4.11. Resource isolation
4.12. In-memory cluster computing for Big Data
4.13. Containers; Docker containers
4.14. Kubernetes
4.15. Further readings
4.16. Exercises and problems
Literature
Chapter 5: Cloud resource virtualization
5.1. Resource virtualization
5.2. Performance and security isolation in computer clouds
5.3. Virtual machines
5.4. Full virtualization and paravirtualization
5.5. Hardware support for virtualization
5.6. QEMU
5.7. Kernel-based Virtual Machine
5.8. Xen a hypervisor based on paravirtualization
5.9. Optimization of network virtualization in Xen 2.0
5.10. Nested virtualization
5.11. A trusted kernel-based virtual machine for ARMv8
5.12. Paravirtualization of Itanium architecture
5.13. A performance comparison of virtual machines
5.14. Open-source software platforms for private clouds
5.15. The darker side of virtualization
5.16. Virtualization software
5.17. History notes and further readings
5.18. Exercises and problems
Literature
Chapter 6: Cloud access and cloud interconnection networks
6.1. Packet-switched networks and the Internet
6.2. Internet evolution
6.3. TCP congestion control
6.4. Content-centric networks; named data networks (R)
6.5. Software-defined networks; SD-WAN
6.6. Interconnection networks for computer clouds
6.7. Multistage interconnection networks
6.8. InfiniBand and Myrinet
6.9. Storage area networks and the Fibre Channel
6.10. Scalable data center communication architectures
6.11. Network resource management algorithms (R)
6.12. Content delivery networks
6.13. Vehicular ad hoc networks
6.14. Further readings
6.15. Exercises and problems
Literature
Chapter 7: Cloud data storage
7.1. Dynamic random access memories and hard disk drives
7.2. Solid-state disks
7.3. Storage models, file systems, and databases
7.4. Distributed file systems; the precursors
7.5. General parallel file system
7.6. Google file system
7.7. Locks; Chubby a locking service
7.8. RDBMS cloud mismatch
7.9. NoSQL databases
7.10. Data storage for online transaction processing systems
7.11. BigTable
7.12. Megastore
7.13. Storage reliability at scale
7.14. Disk locality versus data locality in computer clouds
7.15. Database provenance
7.16. History notes and further readings
7.17. Exercises and problems
Literature
Chapter 8: Cloud security
8.1. Security the top concern for cloud users
8.2. Cloud security risks
8.3. Security as a service (SecaaS)
8.4. Privacy and privacy impact assessment
8.5. Trust
8.6. Cloud data encryption
8.7. Security of database services
8.8. Operating system security
8.9. Virtual machine security
8.10. Security of virtualization
8.11. Security risks posed by shared images
8.12. Security risks posed by a management OS
8.13. Xoar breaking the monolithic design of the TCB
8.14. Mobile devices and cloud security
8.15. Mitigating cloud vulnerabilities in the age of ransomware
8.16. AWS security
8.17. Further readings
8.18. Exercises and problems
Literature
Chapter 9: Cloud resource management and scheduling
9.1. Policies and mechanisms for resource management
9.2. Scheduling algorithms for computer clouds
9.3. Delay scheduling (R)
9.4. Data-aware scheduling (R)
9.5. Apache capacity scheduler
9.6. Start-time fair queuing (R)
9.7. Borrowed virtual time (R)
9.8. Cloud scheduling subject to deadlines (R)
9.9. MapReduce application scheduling subject to deadlines (R)
9.10. Resource bundling; combinatorial auctions for cloud resources
9.11. Cloud resource utilization and energy efficiency
9 12 Resource management and dynamic application scaling
9.13. Control theory and optimal resource management (R)
9.14. Stability of two-level resource allocation strategy (R)
9 15 Feedback control based on dynamic thresholds (R)
9.16. Coordination of autonomic performance managers (R)
9.17. A utility model for cloud-based web services (R)
9 18 Cloud self-organization
9.19. Cloud interoperability
9.20. Further readings
9.21. Exercises and problems
Literature
Chapter 10: Concurrency and cloud computing
10.1. Enduring challenges
10.2. Communication and concurrency
10.3. Computational models; communicating sequential processes
10.4. The bulk synchronous parallel model
10.5. A model for multicore computing
10.6. Modeling concurrency with Petri nets
10.7. Process state; global state of a process or thread group
10.8. Communication protocols and process coordination
10.9. Communication, logical clocks, and message delivery rules
10 10 Runs and cuts; causal history
10.11. Threads and activity coordination
10.12. Critical sections, locks, deadlocks, and atomic actions
10 13 Consensus protocols
10.14. Load balancing
10.15. Multithreading in Java; FlumeJava; Apache Crunch
10.16. History notes and further readings
10.17. Exercises and problems
Literature
Chapter 11: Cloud applications
11.1. Cloud application development and architectural styles
11.2. Coordination of multiple activities
11.3. Workflow patterns
11.4. Coordination based on a state machine model zookeeper
11.5. MapReduce programming model
11.6. Case study: the GrepTheWeb application
11.7. Hadoop, Yarn, and Tez
11.8. SQL on Hadoop: Pig, Hive, and Impala
11.9. Current cloud applications and new applications opportunities
11.10. Clouds for science and engineering
11.11. Cloud computing and biology research
11.12. Social computing, digital content, and cloud computing
11.13. Software fault isolation
11.14. Further readings
11.15. Exercises and problems
Literature
Chapter 12: Big Data, data streaming, and the mobile cloud
12.1. Big Data
12.2. Data warehouses and Google databases for Big Data
12.3. Dynamic data-driven applications
12.4. Data streaming
12.5. A dataflow model for data streaming
12.6. Joining multiple data streams
12.7. Mobile computing and applications
12.8. Energy efficiency of mobile computing
12.9. Alternative mobile cloud computing models
12.10. System availability at scale (R)
12.11. Scale and latency (R)
12.12. Edge computing and Markov decision processes (R)
12.13. Bootstrapping techniques for data analytics (R)
12.14. Approximate query processing (R)
12.15. Further readings
12.16. Exercises and problems
Chapter 13: Emerging clouds
13.1. A short-term forecast
13.2. Machine learning on clouds
13.3. Quantum computing on clouds
13.4. Vehicular clouds
13.5. Final thoughts
Literature
Appendix A: Cloud projects
A.1. Cloud simulation of a distributed trust algorithm
A.2. A trust management service
A.3. Simulation of traffic management in a smart city
A.4. A cloud service for adaptive data streaming
A.5. Optimal FPGA synthesis
A.6. Tensor network contraction on AWS
A.7. A simulation study of machine-learning scalability
A.8. Cloud-based task alert application
A.9. Cloud-based health-monitoring application
Literature
Appendix B: Cloud application development
B.1. AWS EC2 instances
B.2. Connecting clients to cloud instances through firewalls
B.3. Security rules for application- and transport-layer protocols in EC2
B.4. How to launch an EC2 Linux instance and connect to it
B 5 How to use S3 in Java
B.6. How to manage AWS SQS services in C#
B.7. How to install SNS on Ubuntu 10.04
B 8 How to create an EC2 placement group and use MPI
B.9. StarCluster—a cluster computing toolkit for EC2
B.10. An alternative setting of an MPI virtual cluster
B 11 How to install hadoop on eclipse on a windows system
B.12. Exercises and problems
Literature
Literature
Literature
Glossary
Index
Copyright
Morgan Kaufmann is an imprint of Elsevier 50 Hampshire Street, 5th Floor, Cambridge, MA 02139, United States
Copyright © 2023 Elsevier Inc. All rights reserved.
MATLAB® is a trademark of The MathWorks, Inc. and is used with permission. The MathWorks does not warrant the accuracy of the text or exercises in this book.
This book's use or discussion of MATLAB® software or related products does not constitute endorsement or sponsorship by The MathWorks of a particular pedagogical approach or particular use of the MATLAB® software.
No part of this publication may be reproduced or transmi ed in any form or by any means, electronic or mechanical, including photocopying, recording, or any information storage and retrieval system, without permission in writing from the publisher. Details on how to seek permission, further information about the Publisher's permissions policies and our arrangements with organizations such as the Copyright Clearance Center and the Copyright Licensing Agency, can be found at our website: www.elsevier.com/permissions.
This book and the individual contributions contained in it are protected under copyright by the Publisher (other than as may be noted herein).
Notices
Knowledge and best practice in this field are constantly changing. As new research and experience broaden our understanding, changes in research methods, professional practices, or medical treatment may become necessary.
Practitioners and researchers must always rely on their own experience and knowledge in evaluating and using any information, methods, compounds, or experiments described herein. In using such information or methods they should be mindful of their own safety and the safety of others, including parties for whom they have a professional responsibility.
To the fullest extent of the law, neither the Publisher nor the authors, contributors, or editors, assume any liability for any injury and/or damage to persons or property as a ma er of products liability, negligence or otherwise, or from any use or operation of any methods, products, instructions, or ideas contained in the material herein.
Library of Congress Cataloging-in-Publication Data
A catalog record for this book is available from the Library of Congress
British Library Cataloguing-in-Publication Data
A catalogue record for this book is available from the British Library
ISBN: 978-0-323-85277-7
For information on all Morgan Kaufmann publications visit our website at h ps://www.elsevier.com/books-and-journals
Publisher: Katey Birtcher
Acquisitions Editor: Steve Merken
Editorial Project Manager: Naomi Robertson
Production Project Manager: Nadhiya Sekar
Designer: Ma hew Limbert
Typeset by VTeX
Printed in United States
Last digit is the print number: 9 8
Preface to third edition
This text targets a broad audience, including the large number of individuals without a formal training in computer science, yet addicted to cloud computing, who want to optimize their applications and wish to be er understand the inner workings of intricate systems such as computer clouds. The text could also be useful to software engineers tempted to exploit concurrency and take advantage of the computing power of multicore processors, graphics processing units, and tensor processing units. Graduate students who conduct research on different aspects of organization and management of computer clouds and complex systems could benefit from research sections marked (R) in several chapters.
Cloud computing has had a transformative impact not only on how we compute today but also on the algorithms we use and on computer systems' hardware and software. The text tracks the evolution of ideas in the field striving to maintain a delicate balance between what a gardener would call perennials, i.e., theoretical concepts mostly invariant in time and critical for understanding and exploiting concurrency, and annuals, i.e., practical recipes with a limited lifespan, helpful for using computer clouds now.
Any text dedicated to cloud computing must be periodically updated to keep up with the breathtaking evolution of cloud computing engines, the cloud software stack, cloud interconnection networks, and applications. The third edition of this book includes a reorganization of chapters, major revisions of most chapters, cloud computing applications to machine learning, Big Data, and other important areas, and a new chapter on emerging clouds.
Chapters 1 and 2 give an informal introduction to computer clouds and to the cloud ecosystem. Cloud computing is intimately
tied to parallel and distributed processing, and Chapter 3 introduces important theoretical and practical concepts related to parallel and distributed computing. Chapters 4 and 5 discuss the cloud infrastructure and virtualization critical for facilitating access to cloud resources. Chapter 6 is dedicated to communication and cloud access and presents the cloud networking infrastructure, interconnection networks, and a scalable data-center communication architectures. Chapter 7 covers storage models, storage reliability at scale, and database services. Chapter 8 is dedicated to cloud security, and Chapter 9 covers resource management and scheduling.
The next three chapters are focused on the other important component of the cloud ecosystem, cloud applications. Chapter 10 covers subjects critical for understanding and using concurrency, including computational models, atomic actions, load balancing, and consensus protocols. Chapter 11 dissects the components of the cloud software stack and the frameworks supporting processing of large data sets. Chapter 12 analyzes challenges posed by Big Data, data streaming, mobile applications, and edge computing. Chapter 13 covers emerging clouds including cloud services supporting machine learning, quantum computing on clouds and vehicular clouds; the vehicular clouds section is wri en by one of the pioneers of this field, Prof. Stefan Olariu from the Old Dominion University. Appendix A presents several cloud projects in large-scale simulations and cloud services, including applications when multiple design alternatives are evaluated concurrently, as well as Big Data applications in computational sciences and machine learning applications. Appendix B covers cloud application development. Some 540 references are cited in the text. A glossary and a list of abbreviations are also provided. The author is grateful for the advice and support of Stephen Merken and the Morgan Kaufmann team.
Teaching ancillaries for this book, including solutions manual, PowerPoint lecture slides, and image bank, are available online to qualified instructors. Visit h ps://inspectioncopy.elsevier.com/book/details/9780323852777 for more information and to register for access.
Abbreviations
ABI Application Binary Interface
ACID Atomicity, Consistency, Isolation, Durability
ACL Access Control List
AMI Amazon Machine Image
API Application Program Interface
ARM Advanced RISC Machine
ASIC Application Specific Integrated Circuit
AVX Advanced Vector Extensions
AWS Amazon Web Services
AWSLA Amazon Web Services Licensing Agreement
BASE Basically Available, Soft state, Eventually consistent
BCE Basic Core Equivalent
BIOS Basic Input Output System
BPD Bootstrap Performance Diagnostic
BSP Bulk Synchronous Parallel
CCN Content Centric Network
CDN Content Delivery Network
CISC Complex Instruction Set Computer
COMA Cache Only Memory Access
CORBA Common Object Request Broker Architecture
CPI Cycles per Instruction
CPU Central Processing Unit
CRM Custom Relation Management
CSP Cloud Service Provider
CUDA Compute Unified Device Architecture
DAT Dynamic Address Translation
DBaaS Database as a Service
DDoS Distributed Denial of Service
DHCP Dynamic Host Configuration Protocol
DMA Direct Memory Access
DRAM Dynamic Random Access Memory
DVFS Dynamic Voltage and Frequency Scaling
EBS Elastic Block Store
ECS EC2 Container Service
EC2 Elastic Cloud Computing
EMR Elastic Map Reduce
EPIC Explicitly Parallel Instruction Computing
FC Fiber Channel
FCFS First Come First Serve
FIFO First In First Out
FPGA Field Programmable Gate Array
FSM Finite State Machine
GFS Google File System
GiB Gibi Byte
GIMP GNU Manipulation Program
GPFS General Parallel File System
GPU Graphics Processing Unit
HDD Hard Disk Drive
HDFS Hadoop File System
HTML Hypertext Markup Language
HTTP Hypertext Transfer Protocol
IaaS Infrastructure as a Service
IDE Integrated Drive Electronics
IoT Internet of Things
IPC Instructions per Clock Cycle
IRTF Internet Research Task Force
ISA Instruction Set Architecture
JDBC Java Database Connectivity
JMS Java Message Service
JSON Javascript Object Notation
KVM Kernel-based Virtual Machine
MAC Medium Access Control
MFLOPS Million Floating Point Operations per Second
MIMD Multiple Instruction Multiple Data
MIPS Million Instructions per Second
MLMM Multi-level Memory Manager
MMX Multi Media Extension
MPI Message Passing Interface
MSCR Map Shuffle Combine Reduce
NAT Network Address Translation
NDN Named Data Networks
NFS Network File System
NTFS New Technology File System
NUMA Non-Uniform Memory Access
NV-RAM Non-Volatile Random Access Memory
OCCI Open Cloud Computing Interface
OGF Open Grid Forum
OLTP On Line Transaction Processing
OLAP On Line Analytical Processing
PaaS Platform as a Service
PHP recursive acronym for PHP: Hypertext Preprocessor
PN Petri Net
QOS Quality of Service
RAID Redundant Array of Independent Disks
RAM Random Access Memory
RAR Read After Read
RAW Read After Write