图书介绍

基础设施即代码 影印版PDF|Epub|txt|kindle电子书版本网盘下载

基础设施即代码 影印版
  • Kief Morris著 著
  • 出版社: 南京:东南大学出版社
  • ISBN:9787564172954
  • 出版时间:2018
  • 标注页数:340页
  • 文件大小:38MB
  • 文件页数:364页
  • 主题词:软件开发-英文

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

基础设施即代码 影印版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

热门推荐