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