概论

前言

书中提到了DevOps三要义:

  1. 流动
  2. 反馈
  3. 持续学习与探索

持续学习这块还提到了「学习型组织的概念」。

书中也提到了康威定律,这在软件工程中还挺常见的。按照百度百科的说法,康威定律是马尔文康威1967提出的:“设计系统的架构受制于产生这些设计的组织的沟通结构。”通俗的来讲:产品必然是其(人员)组织沟通结构的缩影。康威定律可总结为四个定律:

  • 第一定律组织沟通方式会通过系统设计表达出来。
  • 第二定律时间再多一件事情也不可能做的完美,但总有时间做完一件事情。
  • 第三定律线型系统和线型组织架构间有潜在的异质同态特性。
  • 第四定律大的系统组织总是比小系统更倾向于分解。

书中令我印象深刻的部分在于Netflix的Chaos Monkey,甚至还衍生出了「猿猴军团」,这很符合我的想法,即使是在政府部门在也可以试一试。

Chaos Monkey 是由 Netflix 开发的一款用于实现容错测试的开源工具,它随机地“搞破坏”,比如终止虚拟机或实例,以确保系统的弹性和健壮性。

Chaos Monkey is a resiliency tool that helps applications tolerate random instance failures. 书中还提到了安东绳,安东绳(日语:アンドン,源自"行灯")是丰田汽车生产线使用的特殊拉绳,该装置允许员工在发现异常时拉动绳索暂停生产,防止瑕疵品流入后续工序,其设计可追溯至丰田佐吉发明的自动停止纺织机。

在安东绳的扩展之上,丰田总结出一套安东精益生产管理体系,即丰田管理模式,是一种现代企业的信息管理工具。Andon也称暗灯或安灯,原为日语的音译,日语的意思为“灯”、“灯笼”,在这里表示一个系统, Andon系统能够收集生产线上有关设备和质量管理等与生产有关的信息,加以处理后,控制分布于车间各处的灯光和声音报警系统。从而实现生产信息的透明化。

安东绳构成安东系统(ANDON)的核心机制,触发后传送带减速或整线停止,体现“自工序完结”质量管理体系。系统通过声光信号实现生产可视化,集成设备与质量管理信息,赋予一线员工停线权以保障品质优先,使员工摆脱了传统生产线上"可替换标准化零件"的角色定位。

最后,政府部门写代码的实践还挺一致的,中国的某些部门编程序,有编制的人复制粘贴没编制的人写的代码(连外包都不算)。

书籍简介

DevOps实践指南(第2版)

作者: [美] 吉恩·金(Gene Kim) / [英] 耶斯·亨布尔(Jez Humble) / [比] 帕特里克·德布瓦(Patrick Debois) / [美] 约翰·威利斯(John Willis)

出版社: 人民邮电出版社

出品方: 图灵教育

原作名: The DevOps Handbook: How to Create World-Class Agility, Reliability, & Security in Technology Organizations

译者: 茹炳晟 / 管俊 / 董越 / 王晓翔

出版年: 2024-1

页数: 298

定价: 139.8元

装帧: 平装

ISBN: 9787115638779

内容简介

本书是软件开发与运维领域经典参考书最新升级版,由DevOps领域几位先驱撰写。第2版根据最新研究和最佳实践更新了内容,增加了大量新案例,方便大家在各行各业落地DevOps实践。

本书内容分为六部分,围绕“DevOps三要义”(流动、反馈、持续学习与探索)探讨DevOps的理论、原则和落地实践。第一部分介绍DevOps理论基础和关键主题,第二部分介绍如何寻找切入点并启动转型,第三部分介绍如何通过构建部署流水线来加速流动,第四部分讨论如何通过建立有效的生产环境监控发现和解决问题,第五部分探讨如何通过建立公正的文化促进持续学习与探索,第六部分介绍将安全与合规活动集成到日常工作。

本书适合所有互联网企业和传统企业从业者阅读。

编辑推荐

1-【经典】DevOps领域经典重磅升级,原版Amazon 4.7星好评

2-【权威】DevOps先驱Gene Kim、持续交付之父Jez Humble领衔作品

3-【专业】国内DevOps资深实践者翻译,一线专家联袂推荐

4-【实战】汇聚全球一线DevOps落地案例(40个大案例)

5-【系统】IT名作《凤凰项目》实战篇,数字化转型三剑客读本

6-【落地】打造敏捷、可靠、安全、高效的技术型组织

作者简介

Gene Kim · DevOps先驱

畅销书作者、研究员、首席技术官、IT Revolution创始人、DevOps企业峰会创始人,专注于研究大型复杂组织的技术转型。著有风靡全球的《凤凰项目》《独角兽项目》。

Jez Humble · 持续交付之父

Google Cloud SRE、加州大学伯克利分校讲师、畅销书作者,著有Jolt大奖获奖图书《持续交付》。

Patrick Debois · DevOps之父

Snyk公司DevOps关系总监兼顾问。致力于通过在开发、项目管理和系统管理中运用敏捷技术,弥合项目和运营之间的鸿沟。

John Willis · DevOps先驱

Red Hat全球转型办公室高级总监、Beyond The Phoenix Project作者、Profound播客主持人。在IT管理行业拥有超过40年经验。

正文摘录

第一部分 DevOps三要义

第1章 敏捷、持续交付与DevOps三要义

1.1 制造业价值流

1.2 技术价值流

1.2.1 聚焦部署前置时间

1.2.2 关注返工指标——%C/A

1.3 DevOps三要义:DevOps的基础原则

案例研究:向着巡航高度爬升:美国航空的DevOps之旅(第一部分,2020年)

1.4 小结

第2章 第一要义:流动

2.1 使工作可视化

2.2 限制在制品数量

2.3 缩减批量大小

2.4 减少工作交接

2.5 持续识别并改进约束

2.6 消除价值流中的困境和浪费

案例研究:医疗行业中改善流动性和改进约束的实践(2021年)

2.7 小结

第3章 第二要义:反馈

3.1 在复杂系统中安全地工作

3.2 及时发现问题

3.3 群策群力,攻克难题

案例研究:Excella的安灯绳实验(2018年)

3.4 从源头保障质量

3.5 为下游工作中心优化

3.6 小结

第4章 第三要义:持续学习与探索

4.1 建立学习型组织,打造安全文化

4.2 将日常工作的改进制度化

4.3 将局部经验转化为全局改进

4.4 在日常工作中注入弹性模式

4.5 领导层强化与巩固学习文化

案例研究:贝尔实验室的故事(1925年)

4.6 小结

第一部分总结

第二部分 从哪里开始

第5章 选择合适的价值流切入

5.1 绿地项目与棕地项目

案例研究:Kessel Run:空中加油系统的棕地项目转型(2020年)

5.2 兼顾记录型系统和交互型系统

5.3 从最具同理心和创新精神的团队开始

案例研究:在整个企业中推广DevOps转型:美国航空的DevOps之旅(第二部分,2020年)

5.4 在组织中推广DevOps转型

案例研究:英国税务及海关总署如何通过超大规模PaaS拯救经济于水火(2020年)

5.5 小结

第6章 理解、可视化和运用价值流

6.1 通过绘制价值流图改进工作

6.2 确定价值流的参与团队

6.3 通过绘制价值流图展现工作

6.4 组建专职转型团队

6.4.1 目标一致

6.4.2 保持小跨度的改进计划

6.4.3 为非功能性需求和偿还技术债务预留20%的时间

案例研究:LinkedIn的“反转行动”(2011年)

6.4.4 提高工作的可视化程度

6.5 使用工具强化预期行为

6.6 小结

第7章 参照康威定律设计组织结构与系统架构

7.1 组织原型

7.2 过度以职能为导向的危害(“成本优化”)

7.3 组建市场型团队(“速度优化”)

7.4 让职能型组织高效运转

7.5 将测试、运维和信息安全纳入日常工作

7.6 让团队成员都成为通才

7.7 投资服务与产品,而非项目

7.8 依照康威定律设定团队边界

7.9 创建松耦合的架构,保证生产力和安全

7.10 保持小规模团队(“两张比萨”原则)

案例研究:Target公司的“API启用”项目(2015年)

7.11 小结

第8章 将运维融入日常开发工作

8.1 构建共享服务,提升开发人员生产力

8.2 将运维工程师融入服务团队

8.3 为服务团队指派运维联络人

8.4 邀请运维工程师参加开发团队的例行活动

8.4.1 邀请运维工程师参加每日站会

8.4.2 邀请运维工程师参加回顾会议

8.4.3 使用共享的看板展示相关运维工作

案例研究:全英房屋抵押贷款协会:拥抱更好的工作方式(2020年)

8.5 小结

第二部分总结

第三部分 “第一要义:流动”的具体实践

第9章 为部署流水线奠定基础

9.1 按需搭建开发、测试和生产环境

9.2 使用统一的代码仓库

9.3 简化基础设施的重建

案例研究:酒店公司如何通过容器技术实现年收入300亿美元(2020年)

9.4 代码运行在类生产环境才算“开发完成”

9.5 小结

第10章 实现快速可靠的自动化测试

10.1 持续构建、测试和集成代码与环境

10.2 构建快速可靠的自动化测试套件

10.3 在自动化测试阶段尽早发现问题

10.3.1 确保测试快速运行

10.3.2 测试驱动开发

10.3.3 尽可能将手工测试自动化

10.3.4 在测试套件中集成性能测试

10.3.5 在测试套件中集成非功能性需求测试

10.4 在部署流水线失败时拉下安灯绳

10.5 小结

第11章 实现持续集成

11.1 小批量开发vs大批量合并

11.2 基于主干的开发实践

案例研究:Bazaarvoice的持续集成实践(2012年)

11.3 小结

第12章 自动化和低风险的发布

12.1 部署流程自动化

案例研究:CSG的每日部署(2013年)

12.1.1 实现自动化的自助部署

12.1.2 将代码部署集成到部署流水线

案例研究:Etsy持续部署案例:开发者自助部署(2014年)

12.2 部署与发布解耦

12.2.1 基于部署环境的发布模式

案例研究:Dixons Retail:蓝绿部署在POS系统中的应用(2008年)

12.2.2 基于应用程序的发布模式

案例研究:Facebook Chat功能的灰度发布案例(2008年)

12.3 持续交付和持续部署实践调研

案例研究:CSG:实现开发与运维的双赢(2016年)

12.4 小结

第13章 降低发布风险的架构

13.1 提高研发效能、可测试性和安全性的架构

13.2 架构原型:单体架构vs微服务

案例研究:亚马逊的演进式架构(2002年)

13.3 安全地演进企业架构

案例研究:Blackboard Learn的绞杀者应用模式(2011年)

13.4 小结

第三部分总结

第四部分 “第二要义:反馈”的具体实践

第14章 使用监控发现和解决问题

14.1 搭建集中式的监控基础设施

14.2 为应用程序添加日志监控

14.3 用监控指引问题的分析和解决

14.4 把添加监控融入日常工作

14.5 以自助方式访问监控数据

案例研究:搭建自助的监控体系:LinkedIn的实践(2011年)

14.6 对监控配置查漏补缺

14.6.1 应用程序和业务的监控

14.6.2 基础设施的监控

14.6.3 显示其他相关信息

14.7 小结

第15章 使用监控预防问题并实现业务目标

15.1 用均值和标准差发现潜在问题

15.2 监测到非预期结果时告警

15.3 监控数据非高斯分布带来的问题

案例研究:Netflix的自动扩容能力(2012年)

15.4 使用异常检测技术

案例研究:异常检测中的高级技术(2014年)

15.5 小结

第16章 引入反馈机制实现安全部署

16.1 利用监控确保部署上线更安全

16.2 让开发和运维轮流值班

16.3 让开发人员到价值流下游看一看

16.4 先由开发人员自行运维

案例研究:谷歌的移交就绪评审和发布就绪评审(2010年)

16.5 小结

第17章 将假设驱动开发和A/B测试纳入日常工作

17.1 A/B测试简史

17.2 在新功能测试中整合A/B测试

17.3 在软件发布中整合A/B测试

17.4 在功能规划中整合A/B测试

案例研究:雅虎问答在快速迭代中实验,实现收入翻倍

17.5 小结

第18章 通过评审和协调提升工作质量

18.1 变更审批流程带来的问题

18.2 过度变更控制带来的问题

案例研究:从三位高管审批到自动审批——阿迪达斯的大规模发布实践(2020年)

18.3 对变更进行协调和规划

18.4 对变更进行同行评议

案例研究:谷歌的代码评审(2010年)

18.5 冻结变更并进行大量手工测试的隐患

18.6 用结对编程提升各种类型变更的质量

案例研究:Pivotal用结对编程代替阻滞的代码评审过程(2011年)

18.7 分析拉取请求过程的有效性

18.8 对官僚化流程进行大胆简化

18.9 小结

第四部分 总结

第五部分 “第三要义:持续学习与探索”的具体实践

第19章 将学习融入日常工作

19.1 建立公正的学习文化

19.2 故障发生后及时召开回顾会议

19.3 尽可能广泛公开回顾会议纪要

19.4 降低事故容差以发现更弱的故障信号

19.5 重新定义失败并鼓励评估风险

19.6 向生产环境注入故障,培养系统弹性和学习氛围

19.7 设立故障演练日

案例研究:CSG如何将故障转化为有效的学习机会(2021)

19.8 小结

第20章 将局部经验转化为全局改进

20.1 将可复用的标准流程自动化

20.2 创建组织级的单一共享源代码仓库

20.3 用自动化测试记录、交流实践以传播知识

20.4 通过规范非功能性需求来设计运维

20.5 将可复用的运维用户故事融入开发过程

20.6 确保技术选型有助于组织达成目标

案例研究:Etsy的新技术栈标准化(2010年)

案例研究:Target的众包技术治理(2018年)

20.7 小结

第21章 预留时间开展组织学习和改进

21.1 将偿还技术债务变为例行活动

21.2 让所有人教学相长

21.3 在DevOps会议中分享经验

案例研究:美国全国保险、Capital One和Target的内部技术会议(2014年)

21.4 创建社区结构来推广实践

21.5 小结

第五部分 总结

第六部分 整合信息安全、变更管理和合规性的技术实践

第22章 信息安全是每个人的日常工作

22.1 将安全集成到开发迭代演示

22.2 将安全问题纳入缺陷跟踪和事后分析

22.3 将预防性安全控制集成到共享源代码仓库及共享服务

22.4 将安全集成到部署流水线

22.5 保障应用程序安全

案例研究:Twitter的静态安全测试(2009年)

22.6 保障软件供应链安全

22.7 保障环境安全

案例研究:18F使用Compliance Masonry实现联邦政府合规性审查自动化(2016年)

22.8 将信息安全集成到生产监控系统

22.8.1 为应用程序创建安全监控

22.8.2 为环境创建安全监控

案例研究:Etsy的环境监测(2010年)

22.9 保护部署流水线

案例研究:在Fannie Mae开展安全左移(2020年)

22.10 小结

第23章 保护部署流水线

23.1 将安全和合规集成到变更审批流程

23.2 将低风险的变更归类为标准变更

23.3 当变更被归类为常规变更时如何处理

案例研究:Salesforce将自动化基础设施变更归类为标准变更(2012年)

23.4 通过代码评审实现职责分离

案例研究:Etsy的PCI合规性以及一则职责分离的警示故事(2014年)

案例研究:通过业务与技术合作,Capital One实现每天10次有信心的发布(2020年)

23.5 确保为合规官和审计师提供文档和证据

案例研究:证明监管环境下的合规性(2015年)

案例研究:ATM系统离不开生产监控(2013年)

23.6 小结

第六部分 总结

附录1:DevOps大融合

附录2:约束理论和长期存在的根本矛盾

附录3:恶性循环列表

附录4:交接和队列的危害

附录5:工业安全的误区

附录6:丰田安灯绳

附录7:COTS软件

附录8:事后分析会议(回顾会议)

附录9:猿猴军团

附录10:上线时间透明化