Preface xi Acknowledgements xv Chapter 1 Introduction 1.1 1.1 Cloud Computing at a Glance 1.1 1.1.1 The Vision of Cloud Computing 1.2 1.1.2 Defining a Cloud 1.4 1.1.3 A Closer Look 1.6 1.1.4 Cloud Computing Reference Model 1.8 1.1.5 Characteristics and Benefits 1.9 1.1.6 Challenges Ahead 1.10 1.2 Historical Developments 1.11 1.2.1 Distributed Systems 1.12 1.2.2 Virtualization 1.13 1.2.3 Web 2.0 1.14 1.2.4 Service-Oriented Computing 1.15 1.2.5 Utility-Oriented Computing 1.16 1.3 Building Cloud Computing Environments 1.17 1.3.1 Application Development 1.17 1.3.2 Infrastructure and System Development 1.17 1.4 Computing Platforms and Technologies 1.18 1.4.1 Amazon Web Services (AWS) 1.18 1.4.2 Google AppEngine 1.18 1.4.3 Microsoft Azure 1.19 1.4.4 Hadoop 1.19 1.4.5 Force.com and Salesforce.com 1.19 1.4.6 Manjrasoft Aneka 1.19 Summary 1.20 Review Questions 1.21 Chapter 2 Principles of Parallel and Distributed Computing 2.1 2.1 Eras of Computing 2.1 2.2 Parallel vs. Distributed Computing 2.2 2.3 Elements of Parallel Computing 2.2 2.3.1 What is Parallel Processing? 2.3 2.3.2 Hardware Architectures for Parallel Processing 2.3 2.3.3 Approaches to Parallel Programming 2.6 2.3.4 Levels of Parallelism 2.7 2.3.5 Laws of Caution 2.8 2.4 Elements of Distributed Computing 2.8
vii 2.4.1 General Concepts and Definitions 2.8 2.4.2 Components of a Distributed System 2.9 2.4.3 Architectural Styles for Distributed Computing 2.11 2.4.4 Models for Inter-Process Communication 2.19 2.5 Technologies for Distributed Computing 2.22 2.5.1 Remote Procedure Call 2.22 2.5.2 Distributed Object Frameworks 2.23 2.5.3 Service Oriented Computing 2.28 Summary 2.34 Review Questions 2.35 Chapter 3 Virtualization 3.1 3.1 Introduction 3.1 3.2 Characteristics of Virtualized Environments 3.3 3.3 Taxonomy of Virtualization Techniques 3.6 3.3.1 Execution Virtualization 3.7 3.3.2 Other Types of Virtualization 3.16 3.4 Virtualization and Cloud Computing 3.17 3.5 Pros and Cons of Virtualization 3.19 3.6 Technology Examples 3.21 3.6.1 Xen: Paravirtualization 3.21 3.6.2 VMware: Full Virtualization 3.22 3.6.3 Microsoft Hyper-V 3.27 Summary 3.31 Review Questions 3.31 Chapter 4 Cloud Computing Architecture 4.1 4.1 Introduction 4.1 4.2 Cloud Reference Model 4.2 4.2.1 Architecture 4.2 4.2.2 Infrastructure / Hardware as a Service 4.4 4.2.3 Platform as a Service 4.6 4.2.4 Software as a Service 4.9 4.3 Types of Clouds 4.12 4.3.1 Public Clouds 4.12 4.3.2 Private Clouds 4.13 4.3.3 Hybrid Clouds 4.15 4.3.4 Community Clouds 4.17 4.4 Economics of the Cloud 4.19 4.5 Open Challenges 4.21 4.5.1 Cloud Definition 4.21 4.5.2 Cloud Interoperability and Standards 4.22 4.5.3 Scalability and Fault Tolerance 4.23
viii Contents 4.5.4 Security, Trust, and Privacy 4.23 4.5.5 Organizational Aspects 4.23 Summary 4.24 Review Questions 4.25 Chapter 5 Aneka: Cloud Application Platform 5.1 5.1 Framework Overview 5.2 5.2 Anatomy of the Aneka Container 5.4 5.2.1 From the Ground Up: Platform Abstraction Layer 5.4 5.2.2 Fabric Services 5.5 5.2.3 Foundation Services 5.6 5.2.4 Application Services 5.9 5.3 Building Aneka Clouds 5.11 5.3.1 Infrastructure Organization 5.11 5.3.2 Logical Organization 5.12 5.3.3 Private Cloud Deployment Mode 5.13 5.3.4 Public Cloud Deployment Mode 5.14 5.3.5 Hybrid Cloud Deployment Mode 5.15 5.4 Cloud Programming and Management 5.16 5.4.1 Aneka SDK 5.17 5.4.2 Management Tools 5.20 Summary 5.21 Review Questions 5.22 Chapter 6 Concurrent Computing: Thread Programming 6.1 6.1 Introducing Parallelism for Single Machine Computation 6.1 6.2 Programming Applications with Threads 6.3 6.2.1 What is a Thread? 6.3 6.2.2 Thread APIs 6.5 6.2.3 Techniques for Parallel Computation with Threads 6.6 6.3 Multithreading with Aneka 6.19 6.3.1 Introducing the Thread Programming Model 6.20 6.3.2 Aneka Thread vs. Common Threads 6.21 6.4 Programming Applications with Aneka Threads 6.24 6.4.1 Aneka Threads Application Model 6.24 6.4.2 Domain Decomposition: Matrix Multiplication 6.26 6.4.3 Functional Decomposition: Sine, Cosine, and Tangent 6.33 Summary 6.39 Review Questions 6.40 Chapter 7 High-Throughput Computing: Task Programming 7.1 7.1 Task Computing 7.1 7.1.1 Characterizing a Task 7.2 7.1.2 Computing Categories 7.3
ix 7.1.3 Frameworks for Task Computing 7.4 7.2 Task-based Application Models 7.5 7.2.1 Embarrassingly Parallel Applications 7.5 7.2.2 Parameter Sweep Applications 7.6 7.2.3 MPI Applications 7.8 7.2.4 Workflow Applications with Task Dependencies 7.10 7.3 Aneka Task-Based Programming 7.13 7.3.1 Task Programming Model 7.13 7.3.2 Developing Applications with the Task Model 7.14 7.3.3 Developing Parameter Sweep Application 7.30 7.3.4 Managing Workflows 7.34 Summary 7.36 Review Questions 7.37 Chapter 8 Data Intensive Computing: Map-Reduce Programming 8.1 8.1 What is Data-Intensive Computing? 8.1 8.1.1 Characterizing Data-Intensive Computations 8.2 8.1.2 Challenges Ahead 8.2 8.1.3 Historical Perspective 8.3 8.2 Technologies for Data-Intensive Computing 8.7 8.2.1 Storage Systems 8.7 8.2.2 Programming Platforms 8.14 8.3 Aneka MapReduce Programming 8.20 8.3.1 Introducing the MapReduce Programming Model 8.21 8.3.2 Example Application 8.44 Summary 8.56 Review Questions 8.56 Chapter 9 Cloud Platforms in Industry 9.1 9.1 Amazon Web Services 9.1 9.1.1 Compute Services 9.2 9.1.2 Storage Services 9.7 9.1.3 Communication Services 9.14 9.1.4 Additional Services 9.15 9.1.5 Summary 9.16 9.2 Google AppEngine 9.16 9.2.1 Architecture and Core Concepts 9.16 9.2.2 Application Life-Cycle 9.21 9.2.3 Cost Model 9.23 9.2.4 Observations 9.23 9.3 Microsoft Azure 9.24 9.3.1 Azure Core Concepts 9.24 9.3.2 SQL Azure 9.28
x Contents 9.3.3 Windows Azure Platform Appliance 9.30 9.3.4 Summary 9.30 9.4 Observations 9.31 Review Questions 9.31 Chapter 10 Cloud Applications 10.1 10.1 Scientific Applications 10.1 10.1.1 Healthcare: ECG Analysis in the Cloud 10.1 10.1.2 Biology: Protein Structure Prediction 10.3 10.1.3 Biology: Gene Expression Data Analysis for Cancer Diagnosis 10.4 10.1.4 Geoscience: Satellite Image Processing 10.5 10.2 Business and Consumer Applications 10.6 10.2.1 CRM and ERP 10.6 10.2.2 Productivity 10.8 10.2.3 Social Networking 10.11 10.2.4 Media Applications 10.12 10.2.5 Multiplayer Online Gaming 10.15 Summary 10.16 Review Questions 10.17 Chapter 11 Advanced Topics in Cloud Computing 11.1 11.1 Energy Efficiency in Clouds 11.1 11.1.1 Energy-Efficient and Green Cloud Computing Architecture 11.3 11.2 Market Based Management of Clouds 11.5 11.2.1 Market-Oriented Cloud Computing 11.5 11.2.2 A Reference Model for MOCC 11.6 11.2.3 Technologies and Initiatives Supporting MOCC 11.11 11.2.4 Observations 11.16 11.3 Federated Clouds / InterCloud 11.16 11.3.1 Characterization and Definition 11.16 11.3.2 Cloud Federation Stack 11.17 11.3.3 Aspects of Interest 11.22 11.3.4 Technologies for Cloud Federations 11.38 11.3.5 Observations 11.41 11.4 Third Party Cloud Services 11.42 11.4.1 MetaCDN 11.42 11.4.2 SpotCloud 11.43 Summary 11.44 Review Questions 11.45 References R.1 Index I.1