《Infrastructure as Code, 2nd Edition》由Kief Morris撰写,是O'Reilly Media出版的云计算时代基础设施管理指南。第二版在第一版基础上扩展了容器化、集群管理和云原生架构的内容,强调通过代码化定义、持续测试和模块化设计实现基础设施的高效管理。
核心主题
1. 从"铁器时代"到"云时代"的转变
- 铁器时代:静态基础设施,变更成本高、周期长,依赖手动流程。
- 云时代:动态基础设施,支持快速变更,通过自动化实现高可靠性。
- 书中提出云时代三大核心实践:
- Define everything as code(一切定义为代码)
- Continuously test and deliver(持续测试与交付)
- Build small, simple pieces(构建小型独立模块)
2. 基础设施即代码的原则
- 系统不可靠假设:设计需考虑基础设施的不可靠性
- 可重现性:快速重建任何系统组件
- 可丢弃性:基础设施应支持随时替换
- 最小化差异:减少环境间配置漂移
- 流程可重复:所有操作都应脚本化
主要内容结构
第一部分:基础概念
- 定义Infrastructure as Code及其价值
- 云时代基础设施设计原则
- 基础设施平台模型(应用层/运行时层/基础设施层)
第二部分:基础设施栈实践
- 基础设施栈:作为管理单元的资源集合
- 环境构建模式:
- 反模式:多环境栈/复制粘贴环境
- 推荐模式:可重用栈
- 栈实例配置管理:
- 参数化设计原则
- 6种配置模式对比(从手动参数到参数注册表)
第三部分:高级实践
- 持续测试策略:
- 声明式代码测试挑战
- 渐进式测试(离线/在线阶段)
- 测试替身应用
- 安全与合规:
- 密钥管理方案(加密/无密钥认证/运行时注入)
- 合规自动化测试
特色亮点
- 实用模式语言:提供20+个架构模式与反模式(如Micro Stack vs. Monolithic Stack)
- 虚构案例贯穿:通过ShopSpinner公司的云迁移故事演示实际应用
- 多工具中立:概念适用于Terraform/Ansible/CloudFormation等主流工具
- DevOps融合:强调基础设施代码与软件交付流水线的整合
- 最新趋势覆盖:包含Serverless、零信任安全、混沌工程等前沿话题
目标读者
- 云架构师与基础设施工程师
- DevOps实践者
- 需要管理大规模云环境的技术管理者
- 希望从传统基础设施转型的运维团队
版本更新重点
相比第一版《Managing Servers in the Cloud》,第二版:
- 从服务器管理扩展到完整技术栈管理
- 增加软件工程设计原则应用
- 强化变更安全性的实践(如"恐怖表单"Terraform的风险管理)
- 新增模块化代码组织章节
推荐语
"本书将软件工程的最佳实践引入基础设施领域,为云时代的系统可靠性提供了可落地的路线图。" —— Patrick Debois(DevOpsDays创始人)
通过300余页的详细阐述,本书为读者提供了构建动态、可靠且安全的云基础设施的完整方法论,是云计算从业者不可或缺的实践指南。