从DevOps状态报告看技术团队的文化建设
本文源自一次内部分享,借由此机会又把历年的DevOps状态报告翻看了一遍,其实大多数时候我们对于DevOps的理解都在于流程,工具,实践这些看得见摸得着的东西,但就像文末的几点思考所说的那样,我们一直相信技术可以改变世界,但很多时候,你要先改变人才能改变世界,而改变人是最难的。所以从文化的层面反过来看这个似曾相识的DevOps,也有不一样的思考和感悟。
一、先来看一些段子
2017年1月31日,全球最大的代码托管协作平台之一的Gitlab出现了一次长达18小时的停机事故,原因居然是一个IT工程师把生产数据库的数据给清空了。
按道理,这种事情虽然难以接受,但其实并不少见。更加严重的是,当Gitlab尝试恢复数据的时候才发现,他们所谓精心设计的多重备份机制,竟然都无法拯救被删除的数据。最夸张的是,直到这会他们才发现,原来数据库定时备份由于升级后工具版本不匹配而一直处于失败状态,原以为邮件会告警这个问题,但巧合再一次出现,针对自动任务的报警也没有生效。
事已至此,要么是隐藏事实然后给外界一个不疼不痒的解释,要么就是完全公开到每一个细节,你会选择怎么处理呢?
Gitlab公司的选择是后者,他们第一时间将系统离线,并将事件的所有细节和分析过程记录在一个公开的谷歌文档中。不仅如此,他们还在世界上最大的视频网站YouTube上对恢复过程进行全程直播,为了避免有些用户不看YouTube,他们还在Twitter上同步更新问题状态。硬生生的将一场事故,变成了一个热门话题,同时在线观看直播的用户超过5000人,甚至一度冲到了热门榜的第二位。可以说,为了透明,他们可以说做到极致了。
不仅如此,在几天后,公司的CEO亲自给出了一篇长达4000字的问题回溯记录,包含问题发生的背景,时间线,核心原因分析,针对每一种备份机制的说明,以及将近20条后续改进事项,由此获取用户的信任和认可,可以说从这一点上,他们真的做到了透明,公开和坦诚相待。
https://about.gitlab.com/2017/02/10/postmortem-of-database-outage-of-january-31/
至于那位倒霉的工程师的结果,对他的惩罚就是强迫看了几十分钟的彩虹猫动画。

Etsy是美国的一家手工艺电商平台,这家公司在15年上市以来,市值一度接近80亿美元。当然,除了他们快速成长的市值以外,最为人称道的就是他们的DevOps能力,那么为什么这些名不见经传的公司能够做到这种程度呢,通过一件小事就能看出来。
你可能不知道的是,一家在线电子商务公司,每日浏览频率最高的单体页面,其实就是网站不可用页面,也就是习惯上的502页面。当Etsy的网站不可用的时候,你看到的是一个小姑娘在织毛衣的画面,而这个毛衣竟然有三只袖子。

三只袖子的毛衣,代表了Etsy对于错误的态度。因为每年公司年终总结大会上都会颁发各种奖项,其中的一个奖项的奖品就是三只袖子的毛衣。获奖者是公司年度引入最大问题的个人,因为在他们看来,犯错误并不是什么大不了的事情。错误本身并不是个人的问题,而是公司系统和制度的问题,正因为有了这样的错误,才给了公司改进和成长的空间,从某种意义上说,这也是一种贡献。一直以来我都以为这是个段子而已,结果这两天Google了一下才发现在2023年他们居然还在颁发这个“三只袖子的毛衣”奖,不仅如此还有人实名上榜,看起来都满开心的样子,所以说到底文化的事情开始都是笑话,但当你一直做一直做,人们才会相信你是玩真的,也会逐渐接受或者拥抱这样的文化,只不过,我们有多少时间等待改变发生,就是另外一个问题了。

二、回到DevOps和研发效能
以上这些“奇葩”段子的背后,其实隐藏着一个共同的价值观,这种价值观源自DevOps文化。想要了解技术团队,就需要首先先了解他们的工作模式,了解他们的思维模式,以至于了解他们的文化中所倡导的价值观。
DevOps是什么?
源于2007年提出的一种软件交付模式,DevOps是Development和Operations的组合词,它是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。它的出现是由于软件行业日益清晰地认识到:为了按时交付软件产品和服务,开发和运营工作必须紧密合作。
--维基百科
DevOps代表了软件交付模式的革新,核心还是为了应对和满足VUCA时代高度不确定性下的快速创新,通过小步快跑,快速迭代,实现快速的用户价值交付和低成本试错。

DevOps状态报告是什么?
简而言之,DevOps状态报告,就是业界最据权威性的调查报告,每年发布一份,可以说是软件从业者的风向标。
2014年Puppet公司联合IT Revolution和Thoughtworks发布DevOps状态报告,至2016年三位主要作者成立DORA(DevOps Research and Assessment)并首次提出DevOps核心结果指标,从此引发业界的广泛关注。
2018年Google Cloud收购DORA,三位灵魂人物也加入Google。从此DevOps状态报告报告正式分家,每年发出两份报告(即Puppet版本和DORA版本),但是由于核心灵魂人物加入Google,Puppet版本逐渐式微,国内以DORA版本为主。
2019年的报告是最后一个原班人马为主要作者输出的报告,此后2020年由于疫情原因报告跳票一次,至2021年恢复后基本是由Google研究员输出内容为主。

从效率和质量维度提出2组4个核心结果指标衡量公司软件交付水平,并且根据业界大量样品调研定义出精英、高中低四个级别,可以作为行业对标参考线。(按此标准京东大致处于中高效能之间的水平)

三、从DevOps状态报告看组织文化建设
DevOps代表了一种组织文化,里面包含了诸多方面,为了客观描述这种文化,早在第一份报告(2014年)就引用了Westrum模型来说明组织文化对组织效能的影响。

1、协作(Transparency、Communication、Trust)
协作是DevOps文化的根基,旨在打破孤岛和筒仓,通过职责共享和团队自治实现快速交付,最典型的代表就是亚马逊所倡导的“You build it,You run it”文化,通过研发自运维的方式来打破对于运维团队的依赖,同时将精力聚焦于打造高效的运维服务能力上(你可以依赖我的平台,但是不能依赖我的人)。无独有偶,在Google的SRE工作模式中,同样提倡有质量的hand-off和hand-back机制,其核心在于我们应该避免让职责转移变成协作的目的,或者用更加通俗的话来说,协作的目的不是甩锅,或者丢炸弹,而是站在全局流程最优的视角,来做合理化的资源分配和分工而已。

变革领导力
在2017年的报告中,提出了变革领导力的概念。所谓变革领导力,是指领导者通过调动员工的价值观和使命感,来激发和鼓励追随者达成更好的效能,并促进广泛的组织变革。其实对于技术管理者而言,他们身兼技术实践和管理实践,除了以服务者的心态为一线员工提供良好支持的同时,还应该鼓励思考目标感,鼓励创新,并建立失败宽容的环境。

高效能团队模式
报告多次引用的《高效能团队模式》一书的内容,描述DevOps所倡导的组织架构,通过清晰定义的组织模式和交互模式,从而减少不必要的团队沟通协作。而在亚马逊的文化中同样倡导Two pizza模式,也就是将团队规模控制在两张披萨能吃饱的水平,从而降低网状沟通所带来的成本。

2、无指责和心理安全(Blameless)
无指责的文化是DevOps文化中最广为流传的内容,在开头Gitlab和Etsy的案例中都可以看到无指责对于构建员工心理安全直观重要。
谷歌在一个为期2年的调查中发现,高效能组织强烈依赖于互信和心理安全的组织文化。特别是心里安全文化可以预期软件效能的提升。
谷歌调研报告原文:https://rework.withgoogle.com/blog/five-keys-to-a-successful-google

另外再2019年的报告中给出了一个提升员工生产力的模型,其中生产力的定义是以最少的干扰和打断完成复杂、耗时任务的能力,也可以理解为顺畅的工作流程或者节奏。
其中有用、易用的工具是至关重要的影响因素,通过调查发现在精英级别的组织中,自研工具和商用工具混用比例最高,因为这样可以最大化服用成熟工具的同时,定制化符合自身诉求的工具箱,另外一方面工具外包的比例是所有级别组织中最低的,也就是说完全采购外部工具的比例最低,因为这并不符合高效能组织的要求。

在Michael Dubakov的软件开发速度一文中,将浪费活动(如低效会议)、沟通协作(跨团队沟通)、返工(需求变更或质量缺陷带来的重复劳动)、系统复杂度和并行任务数量视为提升软件交付速度的核心要点。

这里打个广告,目前行云平台已经提供了计划负载功能,后续还会继续优化团队排期等功能,提升计划的合理性和准确性
http://jagile.jd.com/myzone/department
最近一两年国内公司也在逐步对外发布事故复盘报告,可以视为一种心理安全文化氛围建设的有效手段,对外开放透明并不会影响用户的信任,相反能得到用户的谅解和认可。

3、快速反馈、持续学习和改进(Fast feedback、Continuous learning&improvement)
反馈的重要性再怎么强调都不为过,对个人成长如此,对组织发展亦如此,其实反馈可以融入到工作的方方面面,比如系统层面的监控和改进,个人和管理者的成长和团队发展等等,除此之外持续学习和改进也是DevOps以及诸多方法论中的最终一环,鼓励内部从失败中学习。
在工作中不乏有心人发现问题,甚至在局部改进问题,但是往往缺乏一种机制让这种局部改进可以扩展到全局,一方面减少重复踩坑和重复建设,另外一方面也能最大化改进的效果,从而站在巨人的肩膀上工作。
腾讯海量运维之道中的意识、手段和价值观就来源于一线的创新,并逐步升级为集团共识的技术文化,这些沉淀下来的原则简单易懂,广为流传,从一线中来,到一线中去,包括开源文化,代码评审文化均是如此。

4、自动化(Automation)
Gartner连续两年将平台工程(Platform Engineering)列入10大年度技术战略,同AI、云并列,可见平台工具的重要性与日俱增。

人人都爱自动化,因为可以消除手工劳动,换句话说,好用且易用的工具是提醒效率的基础,这对于任何领域的提效来说都是类似的。DevOps倡导自动化,其实也是作为软件从业人员来说所应该具备的最基本的素质,如果一个开发者没有主动将繁琐重复的工作自动化的欲望,其实是不合格的。在零售乃至集团内部,对于效能工具的建设投入是持续和坚定的,这也是行云平台存在的意义之所在,我们团队在这个过程中扮演了非常重要的角色,既是平台的建设者,也是平台的设计者和倡导者。

凡是均有两面性,之前也思考过自动化的反面,对于效能平台来说,很大程度上是在平衡与妥协中,追求最佳的解决方案。
我们都是自动化的信徒,并将自动化等同于效率,以往的做事方式都是先进行一线田野调查,总结线下工作流程,把这些流程搬到线上,然后通过自动化改进这个流程的执行效率,这样做固然没错,然而这个假设前提是,团队在线下工作的过程中,已经沉淀出一套切实可行的方法论流程,并且这个方法论流程是经过时间检验,可靠可信赖的。但你有没有想过,这里面其实存在几个问题: 1. 每个团队都会基于自己的习惯和资源来磨合自己的流程,这也就意味着在缺乏顶层设计和强力推动下,每个团队的流程和做事习惯可能都不一样,工具很难统一这个习惯,即便去做兼容也会花费不菲的代价。 2. 团队现行的流程并不一定是最优的,而是在已有的约束下求解,这些约束包括的团队的组织架构职责分工,包括现有的人力资源和能力水平,包括了过往的种种习惯的延续和传承,存在即合理但不一定是对的,如果工具仅仅是翻译这个过程,其实产生的价值非常有限,因为价值往往来源于创新。 3. 站在全局视角来看,局部效率提升和全局效率提升是潜在冲突的,这也就意味着,当我们面向全局来设计流程的时候,很有可能会损害某些团队的利益/指标,这样会对流程推广落地带来很多不稳定因素。 4. 即便解决了以上问题,但是自动化意味着人的关注度降低,虽然自动化只是为了提效而不是为了转移工作量,但随着人的关注度降低,以及自动化带来的提效,反而会加剧流程的固化,更加没有人有动力来优化这个流程。 所以,单纯的追求自动化率不断提升,并不是一个终极指标,而只是过程中的尝试而已,只不过我们很容易把过程的价值跟结果的价值等同起来,当我们拿到结果的价值,过程也就自然而然的被close掉了,然而流程和效率的优化是永无止境的过程,也就是说我们会永远在路上,这对于人性的考验反而是做提效工作者最大的挑战。
四、最后的几点思考
作者:京东零售 石雪峰
来源:京东云开发者社区 转载请注明来源
从DevOps状态报告看技术团队的文化建设的更多相关文章
- 2015 DevOps状态调查报告
依据Puppet Labs的2015 DevOps调查报告(下载地址:https://puppetlabs.com/2015-devops-report),调查研究表明: 拥有强IT服务绩效的企业一般 ...
- 技术沙龙|京东云DevOps自动化运维技术实践
自动化测试体系不完善.缺少自助式的持续交付平台.系统间耦合度高服务拆分难度大.成熟的DevOps工程师稀缺,缺少敏捷文化--这些都是DevOps 在落地过程中,或多或少会碰到的问题,DevOps发展任 ...
- 2020DevOps状态报告
这是Puppet报告的走过的第九个年头,本次报告基于对2400名IT.开发.信息安全行业的技术人员的调研,着重勾画了DevOps状态的两大趋势:平台模型.需求变更的管理.多年来,我们已经证明了DevO ...
- 腾讯QQ会员技术团队:人人都可以做深度学习应用:入门篇(下)
四.经典入门demo:识别手写数字(MNIST) 常规的编程入门有"Hello world"程序,而深度学习的入门程序则是MNIST,一个识别28*28像素的图片中的手写数字的程序 ...
- 腾讯QQ会员技术团队:以手机QQ会员H5加速为例,为你揭开sonic技术内幕
目前移动端越多越多的网页开始H5化,一方面可以减少安装包体积,另一方面也方便运营.但是相对于原生界面而言,H5的慢速问题一定被大家所诟病,针对这个问题,目前手Q存在几种方案,最常见的便是离线包方案,但 ...
- RightScale 2019年云状态报告:公共云快速增长 微软Azure增长最快
https://www.rightscale.com/ 全球云管理服务厂商RightScale发布了年度云状态报告,今年报告的十大主要内容包括:企业在多云平台上投入巨资.公共云继续快速增长,但是私有云 ...
- [转]资深CTO:关于技术团队打造与管理的10问10答
一.你如何衡量软件工程师个人的工作表现?如何衡量整个工程师团队的工作表现? 主要从两方面: 这个员工做的工作是不是他同意做的或者应该做的?(What) 他们是如何完成自己的工作的?(How) 任何绩效 ...
- 阿里CI/CD、DevOps、分层自动化技术
原文地址:http://www.infoq.com/cn/news/2017/01/alibaba-yunxiao-cicd-devops 在互联网时代,产品快速迭代的重要性不言而喻.不管是传统企业还 ...
- 红黑树深入剖析及Java实现(转自知乎美团点评技术团队)
作者:美团点评技术团队 链接:https://zhuanlan.zhihu.com/p/24367771 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 红黑树是平衡 ...
- 从Kubernetes 1.14 发布,看技术社区演进方向
Kubernetes 1.14 正式发布已经过去了一段时间,相信你已经从不同渠道看过了各种版本的解读. 不过,相比于代码 Release,马上就要迎来5周岁生日的Kubernetes 项目接下来如何演 ...
随机推荐
- 浏览器史话中chrome霸主地位的奠定与国产浏览器的割据混战
作为前端老鸟,从IE的6.7.8开始做前端,各种兼容性折磨死人.js还好有了jQuery.chrome出来后,真是救苦救难,解救程序员的于水火.但是可恶的boss还是要求兼容ie6,7.感谢淘宝团队的 ...
- Kubernetes(K8S) helm chart
感觉和放到一个 yaml 文件中,用 ---- 分隔,操作繁琐程度上,没有太大区别 创建自定义 Chart # 创建自定义的 chart 名为 mychart [root@k8smaster ~]# ...
- Java 项目工程搭建 --创建子模块(Spring Initializr)
一下篇,常用 Java 项目工程搭建 --创建子模块(依赖父工程) 也不算常用,常用的是 ctrl+c.ctrl+v ,哈哈 Package要手动改下,生成的很丑 选能支持 Alibaba Cl ...
- C# 和 java 基本数据类型
C# 和 java 基本数据类型 C#类型 java类型 描述 默认值 bool boolean 布尔值 False byte byte 8 位无符号整数 0 char char 16 位 Unico ...
- 【已解决】:Original error: Could not extract PIDs from ps output. PIDS: [], Procs: [“ps: uiautomator”]
报错截图 因为appium服务用的是1.4.x版本,使用的是 uiatumator1.0在android7.0得不到支持,所以获取PIDS得到空. 解决办法 找到Appium安装目录下node_mod ...
- 【flask】flask-sqlalchemy使用 flask-migrate使用 flask项目演示
目录 昨日回顾 今日内容 1 flask-sqlalchemy使用 2 flask-migrate使用 3 flask项目演示 昨日回顾 类装饰器可能有两种含义: 使用类作为装饰器 装饰类的装饰器 基 ...
- MP4 视频“只闻其声,不见其人”,是怎么回事呢?
艾瑞巴蒂大家好,我二狗子又来啦!这段时间关于疫情的好消息不断,各个地区的疫情都得到了有效的控制,做到了新增病例个位数增长甚至连续多天零增长!这不,二狗子也终于可以出村回到大城市上班啦!由于要坐很久的火 ...
- P1955【绿】
这道题是标准的"离散化+并查集"模版题,通过这道题彻底理解了并查集,同时还意识到了我之前一直用map来实现离散化的方法其实是最简单但是最慢的方法,以这道题为例,map导致时间消耗有 ...
- C#约瑟夫环问题算法
/// <summary> /// 约瑟夫环问题算法 /// </summary> /// <param name="total">总人数< ...
- zzuli 1908
***做的时候判断当前位置为.的上下左右是否为*,如果全是改位置就改为*,如果四周中有为.,再DFS一下,其实就相当于把判断化为更小的子问题*** #include<iostream> # ...