图书介绍
基础设施即代码 影印版PDF|Epub|txt|kindle电子书版本网盘下载
![基础设施即代码 影印版](https://www.shukui.net/cover/8/31337455.jpg)
- Kief Morris著 著
- 出版社: 南京:东南大学出版社
- ISBN:9787564172954
- 出版时间:2018
- 标注页数:340页
- 文件大小:38MB
- 文件页数:364页
- 主题词:软件开发-英文
PDF下载
下载说明
基础设施即代码 影印版PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
Part Ⅰ.Foundations3
1.Challenges and Principles3
Why Infrastructure as Code?3
What Is Infrastructure as Code?5
Goals of Infrastructure as Code5
Challenges with Dynamic Infrastructure6
Server Sprawl6
Configuration Drift7
Snowflake Servers7
Fragile Infrastructure8
Automation Fear9
Erosion10
Principles of Infrastructure as Code10
Systems Can Be Easily Reproduced10
Systems Are Disposable11
Systems Are Consistent12
Processes Are Repeatable12
Design Is Always Changing13
Practices13
Use Definition Files14
Self-Documented Systems and Processes14
Version All the Things15
Continuously Test Systems and Processes16
Small Changes Rather Than Batches16
Keep Services Available Continuously17
Antifragility:Beyond“Robust”17
The Secret Ingredient of Antifragile IT Systems18
Conclusion19
What’s Next?19
2.Dynamic Infrastructure Platforms21
What Is a Dynamic Infrastructure Platform?21
Requirements for a Dynamic Infrastructure Platform22
Programmable23
On-Demand24
Self-Service25
Infrastructure Resources Provided by the Platform25
Compute Resources26
Storage Resources26
Network Resources28
Types of Dynamic Infrastructure Platforms30
Public IaaS Cloud30
Community IaaS Cloud30
Private IaaS Cloud30
Antipattern:Hand-Cranked Cloud31
Hybrid and Mixed Cloud Options32
Bare-Metal Clouds32
Deciding on a Dynamic Infrastructure Platform34
Public or Private?34
Cloud Portability37
Mechanical Sympathy with the Cloud and Virtualization39
Conclusion40
3.Infrastructure Definition Tools41
Choosing Tools for Infrastructure as Code42
Requirement:Scriptable Interface42
Requirement:Unattended Mode for Command-Line Tools42
Requirement:Support for Unattended Execution43
Requirement:Externalized Configuration45
Configuration Definition Files48
Reusability with Configuration Definitions49
Working with Infrastructure Definition Tools50
Provisioning Infrastructure with Procedural Scripts51
Defining Infrastructure Declaratively53
Using Infrastructure Definition Tools54
Configuring Servers54
Configuration Registries55
Lightweight Configuration Registries56
Is a Configuration Registry a CMDB?57
The CMDB Audit and Fix Antipattern58
The Infrastructure-as-Code Approach to CMDB59
Conclusion59
4.Server Configuration Tools61
Goals for Automated Server Management62
Tools for Different Server Management Functions62
Tools for Creating Servers63
Tools for Configuring Servers64
Tools for Packaging Server Templates65
Tools for Running Commands on Servers66
Using Configuration from a Central Registry68
Server Change Management Models69
Ad Hoc Change Management69
Configuration Synchronization69
Immutable Infrastructure70
Containerized Services70
Containers70
Managing Ruby Applications with and without Containers72
Are Containers Virtual Machines?73
Using Containers Rather than Virtual Machines74
Running Containers75
Security and Containers76
Conclusion78
5.General Infrastructure Services81
Considerations for Infrastructure Services and Tools81
Prefer Tools with Externalized Configuration83
Prefer Tools That Assume Infrastructure Is Dynamic84
Prefer Products with Cloud-Compatible Licensing84
Prefer Products That Support Loose Coupling85
Sharing a Service Between Teams85
Service Instance Templates86
Monitoring:Alerting,Metrics,and Logging87
Alerting:Tell Me When Something Is Wrong87
Metrics:Collect and Analyze Data89
Log Aggregation and Analysis89
Service Discovery90
Server-Side Service Discovery Pattern91
Client-Side Service Discovery Pattern91
Distributed Process Management91
Orchestrating Processes with Server Roles92
Orchestrating Processes with Containers92
Scheduling Short Jobs92
Container Orchestration Tools92
Software Deployment93
Deployment Pipeline Software93
Packaging Software94
Conclusion96
Part Ⅱ.Patterns99
6.Patterns for Provisioning Servers99
Server Provisioning100
A Server’s Life100
What Goes onto a Server105
Types of Things on a Server105
Server Roles107
Patterns for Creating Servers108
Antipattern:Handcrafted Server109
Practice:Wrap Server Creation Options in a Script110
Antipattern:Hot Cloned Server111
Pattern:Server Template111
Antipattern:Snowflake Factory112
Patterns for Bootstrapping New Servers112
Pushing to Bootstrap113
Pulling to Bootstrap113
Practice:Smoke Test Every New Server Instance114
Conclusion115
7.Patterns for Managing Server Templates117
Stock Templates:Can’t Someone Else Do It?117
Provisioning Servers Using Templates118
Provisioning at Creation Time118
Provisioning in the Template119
Balancing Provisioning Across Template and Creation120
The Process for Building a Server Template121
Creating Templates for Multiple Platforms122
Origin Images123
Antipattern:Hot Cloned Server Template123
Baking a Template from an OS Installation Image123
Baking a Template from a Stock Image124
Building a Template from a Unikernel125
Customizing a Server Template without Booting It125
Updating Server Templates126
Reheating a Template126
Baking a Fresh Template126
Versioning Server Templates126
Building Templates for Roles129
Pattern:Layered Template129
Sharing Base Scripts for Templates130
Automating Server Template Management131
Customizing Servers Before Baking131
Practice:Automatically Test Server Templates132
Conclusion132
8.Patterns for Updating and Changing Servers133
Models for Server Change Management134
Ad Hoc Change Management134
Continuous Configuration Synchronization134
Immutable Servers135
Containerized Servers136
General Patterns and Practices136
Practice:Minimize Server Templates136
Practice:Replace Servers When the Server Template Changes137
Pattern:Phoenix Servers137
Patterns and Practices for Continuous Deployment138
Pattern:Masterless Configuration Management139
Practice:Apply Cron139
Continuous Synchronization Flow140
The Unconfigured Country141
Patterns and Practices for Immutable Servers143
Server Image as Artifact144
Simplifying Confirmation Management Tooling with Immutable Servers144
Immutable Server Flow144
Bootstrap Configuration with Immutable Servers145
Transactional Server Updates147
Practices for Managing Configuration Definitions148
Practice:Keep Configuration Definitions Minimal148
Organizing Definitions149
Practice:Use Test-Driven Development(TDD)to Drive Good Design149
Conclusion150
9.Patterns for Defining Infrastructure151
Environments152
Antipattern:Handcrafted Infrastructure153
Defining Infrastructure Stacks as Code153
Antipattern:Per-Environment Definition Files155
Pattern:Reusable Definition Files155
Practice:Test and Promote Stack Definitions157
Self-Service Environments158
Organizing Infrastructure158
Antipattern:Monolithic Stack158
Avoid“Lift and Shift”When Migrating Infrastructure160
Dividing an Application Environment into Multiple Stacks160
Managing Configuration Parameters Between Stacks162
Sharing Infrastructure Elements164
Practice:Manage Application Code and Infrastructure Code Together166
Approaches to Sharing Definitions167
Practice:Align Infrastructure Design with the Scope of Change168
Example:An Infrastructure Design for Microservices169
Running Definition Tools174
Conclusion175
Part Ⅲ.Practices179
10.Software Engineering Practices for Infrastructure179
System Quality180
Poor-Quality Systems Are Difficult to Change180
High-Quality Systems Are Easier and Safer to Change181
Infrastructure Quality Through Code181
Fast Feedback181
VCS for Infrastructure Management182
What to Manage in a VCS182
Continuous Integration(CI)183
Continuously Testing Branches Is Not Continuous Integration183
Who Broke the Build?185
Ignoring Tests That Fail186
CI for Infrastructure187
Continuous Delivery(CD)187
The Problem with the Integration Phase187
Deployment Pipelines and Change Pipelines188
Continuous Delivery Is Not Continuous Deployment189
Code Quality190
Clean Code190
Practice:Manage Technical Debt191
Managing Major Infrastructure Changes192
Feature Toggles193
Conclusion194
11.Testing Infrastructure Changes195
The Agile Approach to Testing196
Automating Tests for Fast Feedback197
Organically Building a Test Suite197
Structuring the Test Suite:The Test Pyramid198
Avoiding an Unbalanced Test Suite199
Practice:Test at the Lowest Level Possible200
Practice:Only Implement the Layers You Need201
Practice:Prune the Test Suite Often202
Practice:Continuously Review Testing Effectiveness202
Implementing a Balanced Test Suite202
Low-Level Testing204
Mid-Level Testing206
Higher-Level Tests209
Testing Operational Quality211
Managing Test Code212
Practice:Keep Test Code with the Code It Tests212
Anti-Pattern:Reflective Tests213
Techniques to Isolate Components for Testing213
Refactoring Components so They Can Be Isolated215
Managing External Dependencies215
Test Setup216
Roles and Workflow for Testing218
Principle:People Should Write Tests for What They Build219
The Test-Writing Habit219
Principle:Everyone Should Have Access to the Testing Tools219
The Value of a Quality Analyst220
Test-Driven Development(TDD)221
Conclusion222
12.Change Management Pipelines for Infrastructure223
Benefits of a Change Management Pipeline225
Guidelines for Designing Pipelines226
Ensure Consistency Across Stages226
Get Immediate Feedback for Every Change227
Run Automated Stages Before Manual Stages227
Get Production-Like Sooner Rather Than Later228
Basic Pipeline Designs229
The Local Development Stage229
The Build Stage230
Publishing a Configuration Artifact231
Automated Testing Stages233
Manual Validation Stages234
Apply to Live235
The Rhythm of the Pipeline235
Practices for Using a Pipeline236
Practice:Prove Production Readiness for Every Change237
Practice:Start Every Change from the Beginning of the Pipeline237
Practice:Stop the Line on Any Failure238
Scaling Pipelines to More Complex Systems238
Pattern:Fan-In Pipelines239
Practice:Keep Pipelines Short243
Practice:Decouple Pipelines243
Integration Models243
Techniques for Handling Dependencies Between Components246
Pattern:Library Dependency246
Pattern:Self-Provisioned Service Instance248
Providing Pre-Release Library Builds248
Providing Test Instances of a Service to Consumers249
Using Test Instances of a Service as a Consumer250
Practices for Managing Interfaces Between Components252
Practice:Ensure Backward Compatibility of Interfaces252
Practice:Decouple Deploying from Releasing253
Practice:Use Version Tolerance253
Practice:Provide Test Doubles254
Practice:Test the Provider with Contract Tests254
Practice:Test with a Reference Consumer255
Practice:Smoke Test the Provider Interface255
Practice:Run Consumer-Driven Contract(CDC)Tests255
Conclusion256
13.Workflow for the Infrastructure Team257
Automate Anything That Moves258
Make the Change Manually259
Ad Hoc Automation259
Autonomic Automation260
Autonomic Automation Workflow261
Using a Local Sandbox262
Using Local Virtualization for a Sandbox263
Example Workflow with Local Testing265
Using the Virtualization Platform for Sandboxes266
Codebase Organization Patterns267
Antipattern:Branch-Based Codebases268
Pattern:One Trunk per Component269
Pattern:Single Trunk269
Workflow Effectiveness269
Expediting Changes270
Code Reviews271
Fitting Governance into the Workflow271
Conclusion273
14.Continuity with Dynamic Infrastructure275
Service Continuity276
True Availability276
Using Dynamic Server Pools for Recovery277
Software Design for Dynamic Infrastructure279
Compartmentalizing for Continuity281
Zero-Downtime Changes282
Pattern:Blue-Green Replacement282
Pattern:Phoenix Replacement283
Practice:Reduce the Scope of Replacement284
Pattern:Canary Replacement285
Routing Traffic for Zero-Downtime Replacements286
Zero-Downtime Changes with Data288
Data Continuity289
Replicating Data Redundantly290
Regenerating Data290
Delegating Data Persistence291
Backing Up to Persistent Storage291
Disaster Recovery292
Continuous Disaster Recovery293
The DR Plan:Planning for Disaster294
Practice:Prefer Rebuilding Things over Cold Standby295
Continuous Monitoring through the Pipeline296
Security298
Automatically Papering over Compromises298
Reliable Updates as a Defense299
Provenance of Packages299
Automated Hardening301
Automating Security Validation in the Pipeline302
The Change Pipeline as a Vulnerability302
Managing Security Risks with Cloud Accounts303
Conclusion306
15.Organizing for Infrastructure as Code307
Evolutionary Architecture308
Learning under Fire309
Start with a Trailblazer Pipeline310
Measuring Effectiveness311
Agree on Desired Outcomes First311
Choose Metrics that Help the Team312
Track and Improve Cycle Time313
Use Kanban to Make Work Visible315
Retrospectives and Post-Mortems316
Organize to Empower Users317
Pitfalls of the Divided Function Model317
Adopt a Self-Service Model319
Take Full Responsibility:You Build It,You Run It320
Organizing into Cross-Functional Teams321
Governance through Continuous Change Management322
Provide Solid Building Blocks323
Prove Operational Readiness in the Pipeline323
Sharing Ownership of Operational Quality324
Review and Audit Automated Processes324
Optimize for Time to Detect and Fix Problems325
Conclusion:It’s Never Finished325
Index327