Table of Contents
Preface
PART I The Era Of Cloud Computing
The Motivations For Cloud
/1.1 Cloud Computing Everywhere
/1.2 A Facility For Flexible Computing
/1.3 The Start Of Cloud: The Power Wall And Multiple Cores
/1.4 From Multiple Cores To Multiple Machines
/1.5 From Clusters To Web Sites And Load Balancing
/1.6 Racks Of Server Computers
/1.7 The Economic Motivation For A Centralized Data Center
/1.8 Origin Of The Term “In The Cloud”
/1.9 Centralization Once Again
Elastic Computing And Its Advantages
/2.1 Introduction
/2.2 Multi-Tenant Clouds
/2.3 The Concept Of Elastic Computing
/2.4 Using Virtualized Servers For Rapid Change
/2.5 How Virtualized Servers Aid Providers
/2.6 How Virtualized Servers Help A Customer
/2.7 Business Models For Cloud Providers
/2.8 Intrastructure as a Service (IaaS)
/2.9 Platform as a Service (PaaS)
/2.10 Software as a Service (SaaS)
/2.11 A Special Case: Desktop as a Service (DaaS)
/2.12 Summary
Type Of Clouds And Cloud Providers
/3.1 Introduction
/3.2 Private And Public Clouds
/3.3 Private Cloud
/3.4 Public Cloud
/3.5 The Advantages Of Public Cloud
/3.6 Provider Lock-In
/3.7 The Advantages Of Private Cloud
/3.8 Hybrid Cloud
/3.9 Multi-Cloud
/3.10 Hyperscalers
/3.11 Summary
PART II Cloud Infrastructure And Virtualization
Data Center Infrastructure And Equipment
/4.1 Introduction
/4.2 Racks, Aisles, And Pods
/4.3 Pod Size
/4.4 Power And Cooling For A Pod
/4.5 Raised Floor Pathways And Air Cooling
/4.6 Thermal Containment And Hot/Cold Aisles
/4.7 Exhaust Ducts (Chimneys)
/4.8 Lights-Out Data Centers
/4.9 A Possible Future Of Liquid Cooling
/4.10 Network Equipment And Multi-Port Server Interfaces
/4.11 Smart Network Interfaces And Offload
/4.12 North-South And East-West Network Traffic
/4.13 Network Hierarchies, Capacity, And Fat Tree Designs
/4.14 High Capacity And Link Aggregation
/4.15 A Leaf-Spine Network Design For East-West Traffic
/4.16 Scaling A Leaf-Spine Architecture With A Super Spine
/4.17 External Internet Connections
/4.18 Storage In A Data Center
/4.19 Unified Data Center Networks
/4.20 Summary
Virtual Machines
/5.1 Introduction
/5.2 Approaches To Virtualization
/5.3 Properties Of Full Virtualization
/5.4 Conceptual Organization Of VM Systems
/5.5 Efficient Execution And Processor Privilege Levels
/5.6 Extending Privilege To A Hypervisor
/5.7 Levels Of Trust
/5.8 Levels Of Trust And I/O Devices
/5.9 Virtual I/O Devices
/5.10 Virtual Device Details
/5.11 An Example Virtual Device
/5.12 A VM As A Digital Object
/5.13 VM Migration
/5.14 Live Migration Using Three Phase
/5.15 Running Virtual Machines In An Application
/5.16 Facilities That Make A Hosted Hypervisor Possible
/5.17 How A User Benefits From A Hosted Hypervisor
/5.18 Summary
Containers
/6.1 Introduction
/6.2 The Advantages And Disadvantages Of VMs
/6.3 Traditional Apps And Elasticity On Demand
/6.4 Isolation Facilities In An Operating System
/6.5 Linux Namespaces Used For Isolation
/6.6 The Container Approach For Isolated Apps
/6.7 Docker Containers
/6.8 Docker Terminology And Development Tools
/6.9 Docker Software Components
/6.10 Base Operating System And Files
/6.11 Items In A Dockerfile
/6.12 An Example Dockerfile
/6.13 Summary
Virtual Networks
/7.1 Introduction
/7.2 Conflicting Goals For A Data Center Network
/7.3 Virtual Networks, Overlays, And Underlays
/7.4 Virtual Local Area Networks (VLANs)
/7.5 Scaling VLANs To A Data Center With VXLAN
/7.6 A Virtual Network Switch Within A Server
/7.7 Network Address Translation (NAT)
/7.8 Managing Virtualization And Mobility
/7.9 Automated Network Configuration And Operation
/7.10 Software Defined Networking
/7.11 The OpenFlow Protocol
/7.12 Programmable Networks
/7.13 Summary
Virtual Storage
/8.1 Introduction
/8.2 Persistent Storage: Disks And Files
/8.3 The Disk Interface Abstraction
/8.4 The File Interface Abstraction
/8.5 Local And Remote Storage 1
/8.6 Two Types Of Remote Storage Systems
/8.7 Network Attached Storage (NAS) Technology
/8.8 Storage Area Network (SAN) Technology
/8.9 Mapping Virtual Disks To Physical Disks
/8.10 Hyper-Converged Infrastructure
/8.11 A Comparison Of NAS and SAN Technology
/8.12 Object Storage
/8.13 Summary
PART III Automation And Orchestration
Automation
/9.1 Introduction
/9.2 Groups That Use Automation
/9.3 The Need For Automation In A Data Center
/9.4 An Example Deployment
/9.5 What Can Be Automated?
/9.6 Levels Of Automation
/9.7 AIops: Using Machine Learning And Artificial Intelligence
/9.8 A Plethora Of Automation Tools
/9.9 Automation Of Manual Data Center Practices
/9.10 Zero Touch Provisioning And Infrastructure As Code
/9.11 Declarative, Imperative, And Intent-Based Specifications
/9.12 The Evolution Of Automation Tools
/9.13 Summary
Orchestration: Automated Replication And Parallelism
/10.1 Introduction
/10.2 The Legacy Of Automating Manual Procedures
/10.3 Orchestration: Automation With A Larger Scope
/10.4 Kubernetes: An Example Container Orchestration System
/10.5 Limits On Kubernetes Scope
/10.6 The Kubernetes Cluster Model
/10.7 Kubernetes Pods
/10.8 Pod Creation, Templates, And Binding Times
/10.9 Init Containers
/10.10 Kubernetes Terminology: Nodes And Control Plane
/10.11 Control Plane Software Components
/10.12 Communication Among Control Plane Components
/10.13 Worker Node Software Components
/10.14 Kubernetes Features 1
/10.15 Summary
PART IV Cloud Programming Paradigms
The MapReduce Paradigm
/11.1 Introduction
/11.2 Software In A Cloud Environment
/11.3 Cloud-Native Vs. Conventional Software
/11.4 Using Data Center Servers For Parallel Processing
/11.5 Tradeoffs And Limitations Of The Parallel Approach
/11.6 The MapReduce Programming Paradigm
/11.7 Mathematical Description Of MapReduce
/11.8 Splitting Input
/11.9 Parallelism And Data Size
/11.10 Data Access and Data Transmission
/11.11 Apache Hadoop
/11.12 The Two Major Parts Of Hadoop
/11.13 Hadoop Hardware Cluster Model
/11.14 HDFS Components: DataNodes And A NameNode
/11.15 Block Replication And Fault Tolerance
/11.16 HDFS And MapReduce
/11.17 Using Hadoop With Other File Systems
/11.18 Using Hadoop For MapReduce Computations
/11.19 Hadoop’s Support For Programming Languages
/11.20 Summary
Microservices
/12.1 Introduction
/12.2 Traditional Monolithic Applications
/12.3 Monolithic Applications In A Data Center
/12.4 The Microservices Approach
/12.5 The Advantages Of Microservices
/12.6 The Potential Disadvantages of Microservices
/12.7 Microservices Granularity
/12.8 Communication Protocols Used For Microservices
/12.9 Communication Among Microservices
/12.10 Using A Service Mesh Proxy
/12.11 The Potential For Deadlock
/12.12 Microservices Technologies
/12.13 Summary
Controller-Based Management Software
/13.1 Introduction
/13.2 Traditional Distributed Application Management
/13.3 Periodic Monitoring
/13.4 Managing Cloud-Native Applications
/13.5 Control Loop Concept
/13.6 Control Loop Delay, Hysteresis, And Instability
/13.7 The Kubernetes Controller Paradigm And Control Loop
/13.8 An Event-Driven Implementation Of A Control Loop
/13.9 Components Of A Kubernetes Controller
/13.10 Custom Resources And Custom Controllers
/13.11 Kubernetes Custom Resource Definition (CRD)
/13.12 Service Mesh Management Tools
/13.13 Reactive Or Dynamic Planning
/13.14 A Goal: The Operator Pattern
/13.15 Summary
Serverless Computing And Event Processing
/14.1 Introduction
/14.2 Traditional Client-Server Architecture 1
/14.3 Scaling A Traditional Server To Handle Multiple Clients
/14.4 Scaling A Server In A Cloud Environment
/14.5 The Economics Of Servers In The Cloud
/14.6 The Serverless Computing Approach
/14.7 Stateless Servers And Containers
/14.8 The Architecture Of A Serverless Infrastructure
/14.9 An Example Of Serverless Processing
/14.10 Potential Disadvantages Of Serverless Computing
/14.11 Summary
DevOps
/15.1 Introduction
/15.2 Software Creation And Deployment
/15.3 The Realistic Software Development Cycle
/15.4 Large Software Projects And Teams
/15.5 Disadvantages Of Using Multiple Teams
/15.6 The DevOps Approach
/15.7 Continuous Integration (CI): A Short Change Cycle
/15.8 Continuous Delivery (CD): Deploying Versions Rapidly
/15.9 Cautious Deployment: Sandbox, Canary, And Blue/Green
/15.10 Difficult Aspects Of The DevOps Approach
/15.11 Summary
PART V Other Aspects Of Cloud
Edge Computing And IIoT
/16.1 Introduction
/16.2 The Latency Disadvantage Of Cloud
/16.3 Situations Where Latency Matters
/16.4 Industries That Need Low Latency
/16.5 Moving Computing To The Edge
/16.6 Extending Edge Computing To A Fog Hierarchy
/16.7 Caching At Multiple Levels Of A Hierarchy
/16.8 An Automotive Example
/16.9 Edge Computing And IIoT
/16.10 Communication For IIoT
/16.11 Decentralization Once Again
/16.12 Summary
Cloud Security And Privacy
/17.1 Introduction
/17.2 Cloud-Specific Security Problems
/17.3 Security In A Traditional Infrastructure
/17.4 Why Traditional Methods Do Not Suffice For The Cloud
/17.5 The Zero Trust Security Model
/17.6 Identity Management
/17.7 Privileged Access Management (PAM)
/17.8 AI Technologies And Their Effect On Security
17.9 Protecting Remote Access
/17.10 Privacy In A Cloud Environment
/17.11 Back Doors, Side Channels, And Other Concerns
/17.12 Cloud Providers As Partners For Security And Privacy
/17.13 Summary
Controlling The Complexity Of Cloud-Native Systems
/18.1 Introduction
/18.2 Sources Of Complexity In Cloud Systems
/18.3 Inherent Complexity In Large Distributed Systems
/18.4 Designing A Flawless Distributed System
/18.5 System Modeling
/18.6 Mathematical Models
/18.7 An Example Graph Model To Help Avoid Deadlock
/18.8 A Graph Model For A Startup Sequence
/18.9 Modeling Using Mathematics
/18.10 An Example TLA+ Specification
/18.11 System State And State Changes
/18.12 The Form Of A TLA+ Specification
/18.13 Symbols In A TLA+ Specification
/18.14 State Transitions For The Example
/18.15 Conclusions About Temporal Logic Models
/18.16 Summary
Index