目录

01 运用黄金圈法则学习DevOps

02 何为道法术器

03 DevOps实践之道

04 DevOps实践之法

05 DevOps实践之术

06 DevOps实践之器

07 DevOps不止Dev和Ops

08 DevOps展望

09 总结


 

 

01 运用黄金圈法则学习DevOps

在谈DevOps实践的道法术器之前,我们先看看黄金圈法则,这有利于我们更好地学习和实践落地DevOps。

美国著名作家、企业顾问 Simon Sinek 在2009年的TED的一场演讲「伟大的领袖如何鼓励行为」上提出了著名的黄金圈法则[1],如下图所示:

图片

解释如下:

1、最内层的WHY:是事物的目的、理念,小到写一篇文档,达到创办公司,都是问一下自己:我们为什么要做。

2、中间层的HOW:达成目标的方法,我要如何来完成这件事?

3、最外层的WHAT:我们为此做了什么,这点是最容易描述的,比如:我们写了一篇文章,包括黄金圈法则、道法术器等章节;我们推出了一款产品,它能够如何如何。

在 Simon Sinek 的演讲中,他反复提到「People don’t buy what you do; they buy why you do it.」他提到了苹果的例子,人们买的是苹果的创新思考和卓越的使用体验,而不仅仅是苹果手机。如下图所示[2]:

图片

黄金圈法则的应用范围很广,我们实践DevOps也可以借鉴这一法则。首先需要问的是,DevOps的目标和它要解决的问题,其次是学习它的方法、原则、路径,最后才是DevOps的具体工具。

02 何为道法术器

中国的哲学思想中也有「道法术器」的概念[3]:

道:就是核心思想、理念、本质规律。

法:就是法律、规章、制度、方法。是以“道”为基础制定的不可违背的原则,是体系化的方法。

术:是行为与技巧,是可以以「道」为原则,做出反应和选择的,是落地行为和实践

器:是工具,「工欲善其事,必先利其器」。

如果尝试对应黄金圈法则,个人认为:「道」可以对应 WHY,即DevOps的目标和核心理念;「法和术」对应 HOW,即如何做的原则和具体实践方法,原则往往具有普适性,适应于大多数企业或组织,具体实践方法则因组织而异;「器」对应 WHAT,即DevOps的表现形式,虽然工具很重要,但是一味地认为工具能解决一些问题绝不可取,黄金圈法则也告诉我们人们往往在不理解 WHY 的情况下,很难真正地接受 WHAT。

在长期从事DevOps实践工作的过程中,我对DevOps沉淀了自己的理解和思考。基于国内外优秀专家的实践总结,这些优秀资料包括:Google Dora等发布的DevOps报告[4]、《DevOps实践指南》等优秀书籍[5]、Gitlab 等各领域DevOps优秀平台工具[6]、张乐老师等业务专家对DevOps道法术器的精彩总结分享等[7],结合近几年DevOps的发展情况,笔者对DevOps的道法术器总结如下:

图片

03 DevOps实践之道

在实践DevOps之前,我们需要问自己一个问题:为什么要实践DevOps?企业在实践DevOps之前需要明确自身DevOps落地或转型的目标,需要切实遵守「以终为始」的原则。「以终为始」是史蒂芬·柯维在《高效能人士的七个习惯》[8]一书中提出的自我领导的原则,它将一次创造的过程分离为两次创造,基于心智的第一次创造和基于实际的第二次创造,把基于心智的第一次创造的终,作为基于实际的第二次创造的始。直白来说,以终为始就是先构建目标、愿景和计划,再付诸行动。

我们需要明确DevOps的「道」,只有明确了这一点,路才不会走偏。Dora Core Model [4]中指出,DevOps的终极目标是帮助企业或团队提升组织效能(包括团队实现商业和非商业目标的能力),高组织效能的重要支撑是软件交付效能和员工幸福感。在 VUCA 时代的今天[9],企业需要快速应对瞬息万变的市场环境,提升应对疫情等黑天鹅事件的能力,DevOps 通过打造快速、高质量的软件交付能力帮助企业快速应对市场变化,抢先发布产品占据市场先机,从而获得竞争优势。

因此,DevOps的「道」可总结为:持续、高质量地交付有效价值,快速应对并灵活响应变化,提升企业软件交付能力和组织效能。

这也是DevOps的根本价值所在。DevOps可以带来:企业实现需求或产品的按时交付,提升研发质量和效率,助力业务成功,帮助提升客户/用户满意度,提升员工满意度和组织活力等诸多好处。我们在实践DevOps的时候,也需要事先确立并时刻谨记企业落地实践DevOps的目标,这样才能在眼花缭乱的DevOps实践方法和工具中保持清醒,锚定目标,时刻谨记用「是否有助于目标达成」来评判方法和工具是否适用。人云亦云、生搬硬套DevOps的实践方法和工具,注定迷失在DevOps庞大的方法体系中无法走出,最终转型失败。

04 DevOps实践之法

DevOps实践之「法」指的是DevOps实践的原则,具体实践、方法和工具会变,但是实践原则往往是不变的。这里不得不提的是DevOps三步工作法和CALMS框架。

DevOps三步工作法是Gene Kim 、Jez Humble、Patrick Debois、John Willis 在《DevOps实践指南》一书中提出的,书中定义了流动、反馈、持续学习和实验的DevOps实践三步工作法[10]。直接引用张乐老师对三步工作法的分享[7]如下:

这里不得不提的是价值,这一概念借鉴自精益生产。DevOps提倡通过分析价值流动过程,绘制价值流图找到软件交付过程的瓶颈。下图是一个价值流图的例子[11]。

图片

其中,前置时间(Lead Time,LT)是指一个需求从提出的时间点开始,一直到最终上线交付给用户为止的时间周期。处理时间(Process Time,PT)是指的是这个步骤的处理时长。完整度与准确度百分比(the Percent Complete and Accurate,%C/A)这个指标用来表明工作的质量,也就是有多少工作因为质量不符合要求而被下游打回。这里面蕴含了大量的沟通和返工成本,从精益的视角来看,也是一种浪费。

CALMS是DevOps实践的重要框架,该首字母缩写词由 Jez Humble 提出,且分别代表文化 (Culture)、自动化 (Automation)、精益 (Lean)、测量 (Measurement) 和分享 (Sharing)。内容[7]如下图所示:

 

还有一点值得引起我们的关注,那就是DevOps中对「工作完成的定义」。DevOps的团队是跨职能的,具有自组织、人员规模小、多样化专家等特征,团队成员都需要聚焦客户价值交付,对最终交付的需求或产品负责,而不是仅仅完成自己负责的职能工作内容。比如:产品同学不是设计完需求原型、输出PRD文档就结束工作了,需求真正交付上线后也需要关注需求的价值,如使用情况是否符合预期、客户/用户是否满意等;开发同学不仅负责技术方案设计、编码开发、单元测试,还负责接口测试、基本功能测试、发布上线、监控配置与告警响应等,对自己生产的软件产品质量、性能等承担重要责任。

只有团队成员都聚焦于需求或产品的最终交付,团队每个人有意识并真正达成共识,人人以提升交付价值、交付质量和效率为荣,且团队赋予每个人承担责任并积极改进的心理安全感,才能形成有效的合作机制,打造学习型组织,组织有生机活力,更好地完成软件交付这个创造性活动。

05 DevOps实践之术

「术」是如何落地DevOps的具体实践方法。企业应该采用什么样的实践,需要根据企业确定的DevOps落地目标和企业的具体情况而定。幸运的是,DevOps基于精益、敏捷开发、持续交付的优秀实践,已经沉淀了一系列被业界普遍认可的最佳实践,涵盖需求、开发、测试、发布、运维的全流程,很好地借鉴并灵活运用这些实践,往往能达到事半功倍的效果。

首先我想给你介绍的是「DevOps转型的 J 型曲线」,它是 2018 年 DevOps 状态报告[12]的重要发现,如下图所示:

图片

DevOps转型是一种逐步转变的过程,DevOps改变的不只是研发过程,还包含企业的组织和文化,因此转型也不是研发部一个部门的事,而是企业从上到下都要参与,都要推动的事情。「J 型曲线」告诉我们转型过程的以下几个阶段:

1、在转型之初,团队需要快速识别出主要问题,并给出解决方案。在这个阶段,整个团队的效能水平比较低,通过一些实践引入和工具的落地,可以快速提升自动化的能力和水平,从而帮助团队获得初期的成功。

2、但是,随着交付能力的提升,大量的手工测试会成为瓶颈,质量能力和技术债务的问题也开始显现。解决手工测试、技术债务的过程是漫长的,变更流程中额外增加了人工控制和流程环节,导致了工作的效率降低。

3、组织需要持续投入,坚持持续改进,通过精进专业技能和不断从身处的环境中学习,引领卓越和高效能,带来生产力的飞跃。

DevOps实践涵盖软件开发的全流程,我们可以使用 MECE (Mutually Exclusive Collectively Exhaustive,即「相互独立,完全穷尽」)原则对DevOps实践体系拆分为从需求到运维的全流程,核心实践包括:

1、需求方面,包括影响地图等业务探索方法、精益、敏捷协作、可视化等方面的实践;

2、开发方面,包括松耦合架构、分支策略、代码版本控制、持续集成、代码评审、质量内建、安全左移和技术债务管理等;

3、测试方面,包括环境管理、自动化测试等重要实践;

4、交付方面,包括配置管理、数据库变更管理、简化变更审批、持续部署、低风险发布等;

5、线上运维方面,包括完善的监控告警机制、混沌工程等。

DevOps用四个核心指标来衡量软件交付效能,包括变更前置时间、部署频率、变更失败率、故障恢复时长,这四个指标是 Dora 年度 DevOps 状态报告[4]使用的指标,也是业界认可度最高的四个指标。

除此之外,我们需要构建适合DevOps实践的文化土壤,这意味着组织需要培养一种协作和共享的文化,鼓励团队之间的交流和合作,建成有生机、活力的学习型组织。

全球最大的代码托管协作平台之一的 Gitlab 在这方面给我们树立了一个很好的典范,2017 年 1 月 31 日, GitLab 出现了一次长达 18 小时的停机事故,原因居然是一个 IT 工程师把生产数据库的数据给清空了,公司采取的措施是全程直播这次事故的处理过程[14]。公司的 CEO 亲自给出了一篇长达 4000 字的问题回溯记录,包含问题发生的背景、时间线、核心原因分析,针对每一种备份机制的说明,以及将近 20 条后续改进事项,由此获取了用户的信任和认可。他们真的做到了透明、公开和坦诚相待,并且做到了极致。至于那位工程师的结果,对他的惩罚只是强迫他看了几十分钟的《彩虹猫》动画,对于我们简直无法想象,他们是真正地践行了无问责文化。现在,Giitlab 也会实时公布各服务的状态到自己的官方网站中[15],所有人均可以实时查看。

DevOps实践覆盖技术、文化的多个方面,落地好DevOps必须重塑或改变软件交付流程,要重视全局优化,不能寄希望于引入一两个先进的实践就能做到DevOps的成功转型。当然,如果企业的转型目标只是局部优化(比如测试环境的准备时间缩短至不超过1天)时另当别论。不是说这样的转型目标不好,作为一个阶段性的目标,缩短测试环境的准备时间是一个很好的目标,但是我们更关注的是,从全局着手,这个目标能否帮助我们快速交付客户/用户价值,缩短有价值需求的交付时间,能否帮助我们更好地达成企业的业务目标。

06 DevOps实践之器

「器」是工具,可有效地帮助DevOps落地实践。甚至有一些工具决定论的说法,认为只要使用了DevOps工具,企业就实现DevOps了。这是一个严重的误区,工具只是DevOps的一部分,工具不能覆盖所有的软件研发行为,因为软件生产过程是一个创造性的活动,包括需求分析、编码、测试用例的设计、监控指标设计、软件故障定位与修复等,这些都依赖人,这也是上面为什么我们谈到文化,谈到人的重要性。

但是,DevOps工具的重要性不言而喻,没有工具,实施DevOps只能是纸上谈兵,没有自动化,DevOps的效率无从谈起。DevOps 知识和工具平台 Ledge 推出了 DevOps 元素周期表[16],涵盖了行业知名的开源和商业产品,如下图所示:

图片

除了开源和商业产品,好多公司也会采用自研的方式构建自己的DevOps工具。自研投入的成本一般相对较高,但是自研产品往往能更契合公司的现状,能够灵活支持企业内部自定义的研发流程或模式。因此,国内大厂如百度、阿里、腾讯、字节等都纷纷推出了自己的DevOps一站式平台。而中小公司,也可以采用集成开源产品,加上部分自研的方式,快速构建起契合公司现状的DevOps工具。

需要指出的是,在建设DevOps工具的过程中要区分平台和单一领域的工具建设。DevOps注重价值流动,应构建平台串联起来从需求到交付的全流程,平台管流程、串联各领域工具,保障整个价值流的顺畅。平台和工具的建设也应该以工程卓越为引领,注重灵活性和开发者体验,这样才能更好地服务于研发人员。工具建设过程中应减少重复,善用模块化思维抽象各领域单独可复用的能力模块,这样才能更高效地建设出高质量工具。

07 DevOps不止Dev和Ops

当前DevOps的发展早已超出了Dev和Ops的范畴,不只是开发和运维人员要亲密协作、互相信任、风险共担,业务人员和IT人员同样如此。业界专家提出了 BizDevOps 的概念,把业务融入DevOps。DevSecOps 则是提倡把安全融入到DevOps的全流程中,需求规划、技术方案设计、编码、测试、发布等各个阶段都考虑把安全融入其中。当下AIGC热度持续走高,DevOps与AI结合成就「DevAIOps」,已经产生了Code Copilot等产品,给予了DevOps更多的想象空间。

08 DevOps展望

DevOps经历了十余年的发展已经初步形成体系,但是仍有自己的痛点,包括部分场景下难以自证业务价值、投入较大等等。笔者对DevOps的发展,展望如下:

1、与业务更深度结合:DevOps与企业目标,尤其是业务目标相结合,能够探索出来一条更有效的路径,融合业务目标和DevOps的实践。

2、极简DevOps:当前DevOps涵盖的范围太广,有包罗软件交付万象之势,但是成熟的理论方法必然要找到自己最适配的场景,给出自己最优秀的实践框架和落地方法。

3、DevOps与AI深度结合:AI的浪潮汹涌而来,DevOps也要与AI更多融合,推出更多的先进实践和工具,持续改进,持续发展完善。

09 总结

今天我们主要聊了DevOps的实践。从黄金圈法则谈起,我们介绍了学习运用好一个方法论的关键点是要知道「它的 WHY,即目的和核心理念」。接着我们介绍了DevOps实践的道法术器:

1、道:持续、高质量交付价值,快速响应变化,提升交付效能和组织效能。

2、法:DevOps三步工作法、CALMS、团队聚焦客户价值交付等原则。

3、术:看板方法、松耦合架构、持续集成、持续交付、平台工程等实践。

4、器:Jira、Confluence、Gitlab、Jenkins、K8s、阿里云效等开源或商业化平台工具。

之后,我们对DevOps的后续发展进行了展望,包括与业务更深度结合、极简DevOps、DevOps与AI深度结合等。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐