2018年的5月,DevOps 实践手册作者"四人帮"之一的 John Willis 来到了北京,在 DevOps 国际峰会上做了一场名为"DevOps:Almost 10 Years - What A Strange Long Trip It's Been"的演讲。除了这个演讲的 PPT 只有一张很长的图片以外,坐在台下的我对他在这篇演讲中 DevOps 的定义有了共鸣。在这次演讲中,他将 DevOps 定义如下:
翻译过来就是"DevOps 是一组实践和模式,用来将人力资本转化为高效能的组织资本" 。
关于这段定义,我深以为然。
然而,在不同的场合和其他人交流时,我对 DevOps 的实践产生了忧虑。一方面,我看到很多朋友在落地某些 DevOps 实践中,由于缺乏经验,出现了种种阻碍 DevOps 产生效益的问题。另一方面,尽管论述如何做 DevOps 的材料足够多。但几乎都是告诉我们"成功的 DevOps”是什么样的,而“出现了问题怎么办”的内容却乏善可陈。
我发现很多问题在不同组织的 DevOps 转型中反复遇到,而解决这些问题的方式和碰到的问题也大同小异。因此,我开始把这些常见有效的做法和常见的错误做法总结下来,并采用模式的语言对其进行分类整理和描述,形成了 "DevOps 模式"。
下面,我将这套 DevOps 模式语言的基本格式介绍给你。
DevOps 模式类别
DevOps 的模式分为以下五类:
- 策略模式:在设计长期的 DevOps 改进中的方向。
- 组织模式:在不同类型、不同规模的组织下的团队分工合作方式。
- 管理模式:提升组织表现的日常工作的流程、活动和制度。
- 技术模式:服务于管理模式的工具及其实践。
- 文化模式:用于提升团队 DevOps 文化的一些活动和方法。
DevOps 模式的格式
DevOps 模式的将采用下述格式描述:
模式名称:用来描述模式的正式名称,这个名称描述了该模式的特征。
模式别名:其它方便记忆的其它名称,别名一般包含了某种助记隐喻。
模式类别: 策略模式、组织模式、管理模式、技术模式和文化模式的其中一种。
风险: 采用该模式可能会带来的风险。风险包括以下三种:
- 低 - 不用担心,放心采用。该模式没有特殊的场景和附加条件。
- 中 - 采用的时候要注意场景和条件,否则会出现反模式。
- 高 - 请在实践过 DevOps 的专家指导下采用,轻易采用会带来严重的后果。
价值:采用该 DevOps 模式的转型收益。转型收益包括以下三种:
- 低: 采用该模式只会产生短期的收益。
- 中: 采用该模式产生中期固定的收益,但要持续做。
- 高: 采用该模式会对组织产生长期的收益。
见效时间:采用该 DevOps 模式的转型收益。转型收益包括以下三种:
- 慢: 4 周内看不到显著改进。
- 普通: 2 - 4 周可看到显著改进。
- 快: 2 周内可看到显著改进。
说明: 对模式的描述和说明。以及产生的收益和风险。
相关模式:和该模式相关的其它模式。
相关反模式: 可能出现的常见错误做法和后果。
引用:相关资料的引用。
DevOps 的反模式
相对应的,每一个模式都有对应的反模式。反模式是一些常见的错误做法,这些做法一定会导致负向的收益。
反模式的格式如下:
反模式名称:用来描述模式的正式名称,这个名称描述了该反模式的特征。
反模式别名:其它方便记忆的其它名称,别名一般包含了某种助记隐喻。
反模式类别: 同模式类别。
不良后果: 对反模式产生的不良结果的说明。
常见原因:导致这种反模式的常见原因分析和说明。
修正模式:采用相应的模式修正。
相关模式:和该模式相关的其它模式,其它模式也会导致同样的反模式。
相关反模式:和该模式相关的其它反模式,有可能多个反模式顺序出现。
引用:相关资料的引用。
案例
在不同的模式后面,我会采用不同的案例对模式和反模式进行说明。案例包含我过去亲自实践过的项目以及从他人那里听说且经过我详细考证的案例。为了保密起见,相关的企业,项目人员的名字均以其它形式代替。
采用 DevOps 模式所要达成的目标
最后,在我正式介绍这些模式的时候,需要先声明一下 DevOps 的目标。那就是:
"通过一系列行之有效的管理实践和技术实践,以消除软件全生命周期的中的浪费,提升软件及其过程的质量、效率和反馈频率。从而使组织能够更好的适应外部的变化。”
当我在文章中讨论 DevOps 的目标时,指的就是上面这句话。
我会在后续的文章里把我这 5 年在 DevOps 转型中碰到的经验和陷阱通过模式的方式分享给您。
首先,让我们从 DevOps 的策略模式开始。
关于 DevOps 模式
DevOps 模式的索引在 Github 上开源,地址是 https://github.com/wizardbyron/devops_patterns 欢迎通过 issue 和pull request 提交你的建议。
你可以通过关注我的公众号了解 DevOps 的模式,也可以加入我的付费知识星球“DevOps 模式” 和所有 DevOps 的实践者共同交流,我将在知识星球中定期回答那些最受关注的问题。
我是顾宇,是一名在埃森哲工作的职业咨询师。我目前专注于产品服务设计、敏捷软件开发、DevOps 、云计算以及应用架构领域的技术和实践落地。热爱阅读、写作、旅行和健身。具有强大的好奇心的经济学和脑科学爱好者,喜欢结交不同领域的朋友,一起体验并分享世界上未知的美好。
欢迎关注我的公众号:顾宇的研习笔记
本作品采用知识共享署名-禁止演绎 4.0 国际许可协议进行许可