1.1
| Cloud Computing Everywhere   5
|
1.2
| A Facility For Flexible Computing   6
|
1.3
| The Start Of Cloud: The Power Wall And Multiple Cores   7
|
1.4
| From Multiple Cores To Multiple Machines   8
|
1.5
| From Clusters To Web Sites And Load Balancing   8
|
1.6
| Racks Of Server Computers   9
|
1.7
| The Economic Motivation For A Centralized Data Center   10
|
1.8
| Origin Of The Term ``In The Cloud''   12
|
1.9
| Centralization Once Again   12
|
2.1
| Introduction   15
|
2.2
| Multi-Tenant Clouds   15
|
2.3
| The Concept Of Elastic Computing   16
|
2.4
| Using Virtualized Servers For Rapid Change   16
|
2.5
| How Virtualized Servers Aid Providers   17
|
2.6
| How Virtualized Servers Help A Customer   18
|
2.7
| Business Models For Cloud Providers   18
|
2.8
| Intrastructure as a Service (IaaS)   19
|
2.9
| Platform as a Service (PaaS)   19
|
2.10
| Software as a Service (SaaS)   20
|
2.11
| A Special Case: Desktop as a Service (DaaS)   21
|
2.12
| Summary   22
|
4.1
| Introduction   37
|
4.2
| Racks, Aisles, And Pods   37
|
4.3
| Pod Size   38
|
4.4
| Power And Cooling For A Pod   38
|
4.5
| Raised Floor Pathways And Air Cooling   39
|
4.6
| Thermal Containment And Hot/Cold Aisles   40
|
4.7
| Exhaust Ducts (Chimneys)   40
|
4.8
| Lights-Out Data Centers   41
|
4.9
| A Possible Future Of Liquid Cooling   42
|
4.10
| Network Equipment And Multi-Port Server Interfaces   43
|
4.11
| Smart Network Interfaces And Offload   43
|
4.12
| North-South And East-West Network Traffic   44
|
4.13
| Network Hierarchies, Capacity, And Fat Tree Designs   45
|
4.14
| High Capacity And Link Aggregation   46
|
4.15
| A Leaf-Spine Network Design For East-West Traffic   47
|
4.16
| Scaling A Leaf-Spine Architecture With A Super Spine   49
|
4.17
| External Internet Connections   49
|
4.18
| Storage In A Data Center   50
|
4.19
| Unified Data Center Networks   51
|
4.20
| Summary   51
|
5.1
| Introduction   55
|
5.2
| Approaches To Virtualization   55
|
5.3
| Properties Of Full Virtualization   57
|
5.4
| Conceptual Organization Of VM Systems   58
|
5.5
| Efficient Execution And Processor Privilege Levels   59
|
5.6
| Extending Privilege To A Hypervisor   60
|
5.7
| Levels Of Trust   60
|
5.8
| Levels Of Trust And I/O Devices   61
|
5.9
| Virtual I/O Devices   61
|
5.10
| Virtual Device Details   62
|
5.11
| An Example Virtual Device   63
|
5.12
| A VM As A Digital Object   63
|
5.13
| VM Migration   64
|
5.14
| Live Migration Using Three Phases   65
|
5.15
| Running Virtual Machines In An Application   66
|
5.16
| Facilities That Make A Hosted Hypervisor Possible   67
|
5.17
| How A User Benefits From A Hosted Hypervisor   68
|
5.18
| Summary   68
|
6.1
| Introduction   71
|
6.2
| The Advantages And Disadvantages Of VMs   71
|
6.3
| Traditional Apps And Elasticity On Demand   72
|
6.4
| Isolation Facilities In An Operating System   73
|
6.5
| Linux Namespaces Used For Isolation   74
|
6.6
| The Container Approach For Isolated Apps   75
|
6.7
| Docker Containers   76
|
6.8
| Docker Terminology And Development Tools   77
|
6.9
| Docker Software Components   78
|
6.10
| Base Operating System And Files   80
|
6.11
| Items In A Dockerfile   81
|
6.12
| An Example Dockerfile   83
|
6.13
| Summary   83
|
7.1
| Introduction   87
|
7.2
| Conflicting Goals For A Data Center Network   87
|
7.3
| Virtual Networks, Overlays, And Underlays   88
|
7.4
| Virtual Local Area Networks (VLANs)   89
|
7.5
| Scaling VLANs To A Data Center With VXLAN   90
|
7.6
| A Virtual Network Switch Within A Server   91
|
7.7
| Network Address Translation (NAT)   91
|
7.8
| Managing Virtualization And Mobility   92
|
7.9
| Automated Network Configuration And Operation   93
|
7.10
| Software Defined Networking   94
|
7.11
| The OpenFlow Protocol   95
|
7.12
| Programmable Networks   96
|
7.13
| Summary   96
|
8.1
| Introduction   99
|
8.2
| Persistent Storage: Disks And Files   99
|
8.3
| The Disk Interface Abstraction   100
|
8.4
| The File Interface Abstraction   101
|
8.5
| Local And Remote Storage   101
|
8.6
| Two Types Of Remote Storage Systems   102
|
8.7
| Network Attached Storage (NAS) Technology   103
|
8.8
| Storage Area Network (SAN) Technology   104
|
8.9
| Mapping Virtual Disks To Physical Disks   105
|
8.10
| Hyper-Converged Infrastructure   106
|
8.11
| A Comparison Of NAS and SAN Technology   106
|
| 8.11.1
| NAS Advantages And Disadvantages   106
|
| 8.11.2
| SAN Advantages And Disadvantages   107
|
8.12
| Object Storage   107
|
8.13
| Summary   108
|
9.1
| Introduction   113
|
9.2
| Groups That Use Automation   113
|
9.3
| The Need For Automation In A Data Center   114
|
9.4
| An Example Deployment   115
|
9.5
| What Can Be Automated?   116
|
9.6
| Levels Of Automation   117
|
9.7
| AIops: Using Machine Learning And Artificial Intelligence   119
|
9.8
| A Plethora Of Automation Tools   119
|
9.9
| Automation Of Manual Data Center Practices   120
|
9.10
| Zero Touch Provisioning And Infrastructure As Code   121
|
9.11
| Declarative, Imperative, And Intent-Based Specifications   121
|
9.12
| The Evolution Of Automation Tools   122
|
9.13
| Summary   123
|
10.1
| Introduction   127
|
10.2
| The Legacy Of Automating Manual Procedures   127
|
10.3
| Orchestration: Automation With A Larger Scope   128
|
10.4
| Kubernetes: An Example Container Orchestration System   129
|
10.5
| Limits On Kubernetes Scope   130
|
10.6
| The Kubernetes Cluster Model   131
|
10.7
| Kubernetes Pods   132
|
10.8
| Pod Creation, Templates, And Binding Times   133
|
10.9
| Init Containers   134
|
10.10
| Kubernetes Terminology: Nodes And Control Plane   135
|
10.11
| Control Plane Software Components   135
|
10.12
| Communication Among Control Plane Components   136
|
10.13
| Worker Node Software Components   137
|
10.14
| Kubernetes Features   138
|
10.15
| Summary   140
|
11.1
| Introduction   145
|
11.2
| Software In A Cloud Environment   145
|
11.3
| Cloud-Native Vs. Conventional Software   146
|
11.4
| Using Data Center Servers For Parallel Processing   147
|
11.5
| Tradeoffs And Limitations Of The Parallel Approach   148
|
11.6
| The MapReduce Programming Paradigm   149
|
11.7
| Mathematical Description Of MapReduce   152
|
11.8
| Splitting Input   152
|
11.9
| Parallelism And Data Size   153
|
11.10
| Data Access And Data Transmission   153
|
11.11
| Apache Hadoop   154
|
11.12
| The Two Major Parts Of Hadoop   154
|
11.13
| Hadoop Hardware Cluster Model   155
|
11.14
| HDFS Components: DataNodes And A NameNode   156
|
11.15
| Block Replication And Fault Tolerance   156
|
11.16
| HDFS And MapReduce   157
|
11.17
| Using Hadoop With Other File Systems   158
|
11.18
| Using Hadoop For MapReduce Computations   158
|
11.19
| Hadoop's Support For Programming Languages   159
|
11.20
| Summary   160
|
12.1
| Introduction   163
|
12.2
| Traditional Monolithic Applications   163
|
12.3
| Monolithic Applications In A Data Center   164
|
12.4
| The Microservices Approach   165
|
12.5
| The Advantages Of Microservices   165
|
| 12.5.1
| Advantages For Software Development   166
|
| 12.5.2
| Advantages For Operations And Maintenance   166
|
12.6
| The Potential Disadvantages Of Microservices   167
|
12.7
| Microservices Granularity   168
|
12.8
| Communication Protocols Used For Microservices   171
|
12.9
| Communication Among Microservices   174
|
12.10
| Using A Service Mesh Proxy   175
|
12.11
| The Potential For Deadlock   176
|
12.12
| Microservices Technologies   178
|
12.13
| Summary   178
|
13.1
| Introduction   181
|
13.2
| Traditional Distributed Application Management   181
|
13.3
| Periodic Monitoring   182
|
13.4
| Managing Cloud-Native Applications   183
|
13.5
| Control Loop Concept   184
|
13.6
| Control Loop Delay, Hysteresis, And Instability   185
|
13.7
| The Kubernetes Controller Paradigm And Control Loop   186
|
13.8
| An Event-Driven Implementation Of A Control Loop   187
|
13.9
| Components Of A Kubernetes Controller   188
|
13.10
| Custom Resources And Custom Controllers   189
|
13.11
| Kubernetes Custom Resource Definition (CRD)   190
|
13.12
| Service Mesh Management Tools   191
|
13.13
| Reactive Or Dynamic Planning   191
|
13.14
| A Goal: The Operator Pattern   192
|
13.15
| Summary   192
|
14.1
| Introduction   195
|
14.2
| Traditional Client-Server Architecture   195
|
14.3
| Scaling A Traditional Server To Handle Multiple Clients   196
|
14.4
| Scaling A Server In A Cloud Environment   197
|
14.5
| The Economics Of Servers In The Cloud   197
|
14.6
| The Serverless Computing Approach   198
|
14.7
| Stateless Servers And Containers   199
|
14.8
| The Architecture Of A Serverless Infrastructure   201
|
14.9
| An Example Of Serverless Processing   201
|
14.10
| Potential Disadvantages Of Serverless Computing   202
|
14.11
| Summary   204
|
15.1
| Introduction   207
|
15.2
| Software Creation And Deployment   207
|
15.3
| The Realistic Software Development Cycle   208
|
15.4
| Large Software Projects And Teams   208
|
15.5
| Disadvantages Of Using Multiple Teams   209
|
15.6
| The DevOps Approach   210
|
15.7
| Continuous Integration (CI): A Short Change Cycle   211
|
15.8
| Continuous Delivery (CD): Deploying Versions Rapidly   212
|
15.9
| Cautious Deployment: Sandbox, Canary, And Blue/Green   212
|
15.10
| Difficult Aspects Of The DevOps Approach   213
|
15.11
| Summary   214
|
16.1
| Introduction   219
|
16.2
| The Latency Disadvantage Of Cloud   219
|
16.3
| Situations Where Latency Matters   220
|
16.4
| Industries That Need Low Latency   220
|
16.5
| Moving Computing To The Edge   221
|
16.6
| Extending Edge Computing To A Fog Hierarchy   222
|
16.7
| Caching At Multiple Levels Of A Hierarchy   223
|
16.8
| An Automotive Example   224
|
16.9
| Edge Computing And IIoT   225
|
16.10
| Communication For IIoT   227
|
16.11
| Decentralization Once Again   228
|
16.12
| Summary   229
|
17.1
| Introduction   233
|
17.2
| Cloud-Specific Security Problems   233
|
17.3
| Security In A Traditional Infrastructure   235
|
17.4
| Why Traditional Methods Do Not Suffice For The Cloud   236
|
17.5
| The Zero Trust Security Model   237
|
17.6
| Identity Management   238
|
17.7
| Privileged Access Management (PAM)   238
|
17.8
| AI Technologies And Their Effect On Security   239
|
17.9
| Protecting Remote Access   240
|
17.10
| Privacy In A Cloud Environment   241
|
17.11
| Back Doors, Side Channels, And Other Concerns   242
|
17.12
| Cloud Providers As Partners For Security And Privacy   242
|
17.13
| Summary   243
|
18.1
| Introduction   247
|
18.2
| Sources Of Complexity In Cloud Systems   247
|
18.3
| Inherent Complexity In Large Distributed Systems   248
|
18.4
| Designing A Flawless Distributed System   249
|
18.5
| System Modeling   249
|
18.6
| Mathematical Models   250
|
18.7
| An Example Graph Model To Help Avoid Deadlock   251
|
18.8
| A Graph Model For A Startup Sequence   252
|
18.9
| Modeling Using Mathematics   254
|
18.10
| An Example TLA\v'-.25m'\h'-4u'\s-1+\s+1\v'.25m'\h'4u' Specification   255
|
18.11
| System State And State Changes   256
|
18.12
| The Form Of A TLA\v'-.25m'\h'-4u'\s-1+\s+1\v'.25m'\h'4u' Specification   257
|
18.13
| Symbols In A TLA\v'-.25m'\h'-4u'\s-1+\s+1\v'.25m'\h'4u' Specification   259
|
18.14
| State Transitions For The Example   261
|
18.15
| Conclusions About Temporal Logic Models   263
|
18.16
| Summary   263
|