从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掉了,然而流程和效率的优化是永无止境的过程,也就是说我们会永远在路上,这对于人性的考验反而是做提效工作者最大的挑战。

四、最后的几点思考

•组织文化无法直接改变,只有先改变行为,让行为成为习惯,才能慢慢改变文化。

•鼓励行为的前提是建立一种机制,所谓机制,就是人们愿意主动做,并且做了有好处的行为。

•我们原以为技术可以改变世界,但是要先改变人才能改变世界。

作者:京东零售 石雪峰

来源:京东云开发者社区 转载请注明来源

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/262673.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

轴承故障诊断分类模型全家桶-最全教程

Python轴承故障诊断 (一)短时傅里叶变换STFT-CSDN博客 Python轴承故障诊断 (二)连续小波变换CWT-CSDN博客 Python轴承故障诊断 (三)经验模态分解EMD-CSDN博客 Pytorch-LSTM轴承故障一维信号分类(一)-CSDN博客 Pytorch-CNN轴承故障一维信号分类(二)-CSDN博客 Pytorch-Trans…

VM Group

在复杂方案中模块过多可能造成查看或修改方案时存在视觉混乱,不够直观。此时可利用Group模块进行模块整合,同时Group模式也兼容循环的功能,如下图所示。 双击Group模块可进入Group内部,如下图所示。 在Group模块单击 可设置输入、…

Spring Cloud+SpringBoot b2b2c:Java商城实现一件代发设置及多商家直播带货商城 免 费 搭 建

【saas云平台】打造全行业全渠道全场景的saas产品,为经营场景提供一体化解决方案;门店经营区域化、网店经营一体化,本地化、全方位、一站式服务,为多门店提供统一运营解决方案;提供丰富多样的营销玩法覆盖所有经营场景…

北斗卫星时钟同步服务器对电力系统有多重要?

随着计算机和网络通信技术的飞速发展,火电厂热工自动化系统数字化、网络化的时代已经到来。一方面它为控制和信息系统之间的数据交换、分析和应用提供了更好的平台,另一方面对各种实时和历史数据时间标签的准确性提出了更高的要求。 通过卫星时钟来统一全…

Tomcat报404问题解决方案大全(包括tomcat可以正常运行但是报404)

文章目录 Tomcat报404问题解决方案大全(包括tomcat可以正常运行但是报404)1、正确的运行页面2、报错404问题分类解决2.1、Tomcat未配置环境变量2.2、IIs访问权限问题2.3、端口占用问题2.4、文件缺少问题解决办法: Tomcat报404问题解决方案大全(包括tomcat可以正常运…

uniapp如何原生app-云打包

首先第一步,需要大家在HBuilder X中找到一个项目,然后呢在找到上面的发行选项 发行->原生App-云打包 选择完该选中的直接大包就ok。 大包完毕后呢,会出现一个apk包,这是后将这个包拖动发给随便一个人就行了。 然后接收到的那…

【Java 并发】CyclicBarrier 介绍

1 简介 在多线程编程中, 协调和同步线程的执行是至关重要的。Java 提供了许多并发工具来帮助开发人员有效地管理多线程应用程序。 其中之一是 CyclicBarrier, 它是一个强大的同步辅助类, 可用于在多个线程之间创建同步点, 以便它们可以在同一时间点协调执行某个任务。 Cyclic…

Flink系列之:Checkpoints 与 Savepoints

Flink系列之:Checkpoints 与 Savepoints 一、概述二、功能和限制 一、概述 从概念上讲,Flink 的 savepoints 与 checkpoints 的不同之处类似于传统数据库系统中的备份与恢复日志之间的差异。 Checkpoints 的主要目的是为意外失败的作业提供恢复机制。 …

12、Qt:用QProcess类启动外部程序:简单使用

一、说明 简单使用:在一个函数中,使用QProcess类的临时对象调用可执行文件exe,只有这个exe执行完了,这个函数才往下执行,一次性打印出exe所有输出信息;复杂使用:创建QProcess类的全局对象&…

蛮力法之背包问题

问题: 有 n 个重量分别是 w1,w2....,wn 的物品(物品编号为 1-n)它们的价值分别为 v1,v2,...,vn 给定一个容量为 W 的背包。设计从这些物品中选取一部分放入该背包的方案。 每个物品要么选中要么不选中【其实每个物品只有 1 件】,要求选中…

CSS:盒子模型

CSS:盒子模型 盒子模型盒子模型的组成盒子内容边框 border内边距 padding盒子实际大小计算CSS3的盒子类型content-boxborder-box 外边距 margin外边距合并相邻块元素垂直外边距合并嵌套块元素垂直外边距塌陷 行内元素的内外边距 盒子相关属性圆角边框盒子阴影 盒子模…

python之导入.py文件

目录 1、文件结构 2、导入.py文件 2.1同一层内文件夹内的导入 2.2不同层内文件夹内的导入 1、文件结构 Paint_master是一个工程的根目录,忽略一些文件及文件夹后,其文件结构如下: src util ImageUtil.py view BaseAdjustDialog.py MainW…

字符串函数的模拟实现(部分字符串函数)

strlen函数模拟 size_t my_strlen(const char* arr) {int count 0;while(*arr){arr;count;}return count;} int main() { printf( " %zd", my_strlen("adsshadsa"));}//模拟实现strlen函数 strcpy函数模拟 char* my_strcpy(char* arr1, const char* ar…

Python算法例21 交错正负数

1. 问题描述 给出一个含有正整数和负整数的数组,将其重新排列成一个正负数交错的数组。 2. 问题示例 给出数组[-1,-2,-3,4,5,6],重新排序之后,变成[-1,5,-…

Web前端-JavaScript(对象)

文章目录 1.对象1.1 概念1.2 创建对象三种方式**对象字面量创建对象**:new Object创建对象构造函数创建对象 1.3 遍历对象 2.作用域1.1 概述1.2 全局作用域1.3 局部作用域1.4 JS没有块级作用域1.5 变量的作用域1.6 作用域链1.7 预解析 1.对象 1.1 概念 什么是对象 …

Ubuntu 磁盘管理DF命令用法

Linux磁盘空间管理是系统运维中的核心环节,它直接影响到系统的稳定运行、数据的安全性和业务的连续性。 通过实施有效的磁盘空间管理策略,系统管理员可以确保系统的高效运作,满足不断变化的业务需求,并为用户提供可靠的服务。 因此…

【YOLOv8新玩法】姿态评估解锁找圆心位置

前言 Hello大家好,今天给大家分享一下如何基于深度学习模型训练实现圆检测与圆心位置预测,主要是通过对YOLOv8姿态评估模型在自定义的数据集上训练,生成一个自定义的圆检测与圆心定位预测模型 制作数据集 本人从网络上随便找到了个工业工件…

自动标注软件AnyLabeling安装

AnyLabeling自动标注软件介绍 该工具作为一个具有Segment Anything和YOLO模型的智能标签工具,可以快速、准确地对图像进行标注。 AnyLabeling LabelImg Labelme Improved UI Auto-labeling 在Python终端运行 pip install anylabeling启动AnyLabeling anylabe…

危险品内陆运输相关知识_箱讯科技

危险品拖车 危险品拖车运输是一项涉及到高度危险物质的专业工作,需要确保合法合规的运输,并提供必要的信息以保障公共安全。进行这类运输时,需要携带一系列文件和具备特定的资质。 什么样的车适合做危险品拖车? 1、车辆类型:通…

长三角安防行业盛会“2024杭州安博会”4月份在杭州博览中心召开

作为中国安防行业的盛会,2024杭州安博会将于4月份在杭州国际博览中心隆重召开。本届安博会将汇聚全球最先进的安防技术和产品,为来自世界各地的安防从业者、爱好者以及投资者提供一个交流、展示和合作的平台。 据了解,2024杭州安博会将会展示…