首页 > 其他分享 >阿里云崩了,我们更愿意读“事件说明”还是“避坑指南”?

阿里云崩了,我们更愿意读“事件说明”还是“避坑指南”?

时间:2023-11-13 13:32:34浏览次数:33  
标签:指南 语雀 运维 用户 避坑 云崩 意外事件

做软件的人:“工作体验好,好事才能来。”

双十一后第一天,阿里云崩了

从下图能看出,这次虽然只崩了3个多小时,但受影响的产品多,地域广。如图1。

f1.png 图1 这次崩了受影响的产品多,地域广

应该说,阿里云的健康状态页设计得还是很不错的。

我很快就能找到这次崩了的持续时长,以及所影响的产品和地域。点赞!

我在8月3日发过一篇知乎想法,对比了阿里云从2018到2022年这5年来,崩得很严重的3次生产事故复盘报告对比图。如图2。 f2.png 图2 阿里云从2018到2022年这5年来,崩得很严重的3次事故复盘报告对比图

相信阿里云这次崩了后,很快也会发布一份详细的“事件说明”。

但……

阿里云崩了,我们更愿意读“事件说明”还是“避坑指南”?

相比浮于表面的事件说明,我更愿意读避坑指南

首先我是做软件的。搞了30年的开发、测试、运维、管理和咨询。

对于做软件的人来说,能从软件行业的意外事件中学习到如何避坑,效果肯定比只学习“最佳实践”好。因为前者更加生动和有趣。

有人会说,阿里云的大部分用户,都不是做软件的呀。他们肯定不愿意看避坑指南。

我认为不做软件的阿里云用户,也愿意读避坑指南

因为他们读了一份写得好的避坑指南,就相信阿里云已经从意外事件中学到了,并在将来可以成功避坑,从而继续保持对阿里云服务的信心

那该如何写一份好的避坑指南?

好的避坑指南的原则,是“写的人愿意写,读的人愿意读”。

避坑指南,一般由意外事件当事人来写。如果她/他觉得意外事件让自己很难堪,还愿意把细节写出来吗

如何让写避坑指南的当事人不觉得难堪呢?

方法很简单,第一步就是把原先的”生产事故复盘报告“,改名为”意外事件避坑指南“。

“生产事故复盘”报告包含“事故”这样的负面字眼,有自恋倾向的意外事件当事人,就不愿在报告中详细描述自己的失误,也不愿将报告分享给其他团队成员和用户。

这增大了其他成员将来踩进同样的坑的风险,也让用户对IT产品丧失信心

因为“意外事件“比”生产事故“更加温和和中性,此时将“生产事故复盘报告”,改名为“意外事件避坑指南”,能强调报告可以帮助队友避免踩坑,也能帮助用户重树信心。

因为可以帮助他人,这样能让撰写和传播避坑指南的人,感觉更愉悦。而不会像“事故”报告那样,感觉丢了面子。如图3。

f3.png 图3 因为可以帮助他人,这样能让撰写和传播避坑指南的人,感觉更愉悦;而不会像“事故”报告那样,感觉丢了面子

盘点该如何写好“IT系统意外事件避坑指南”

当然,一份写得好的避坑指南,并不是只把标题从“事件说明”改为“避坑指南”那么简单。

如何把“事件说明”,转变为众人喜闻乐见的“避坑指南”呢?

三周前,语雀也有一次意外事件。他们很快就向上千万的用户,发布了事件说明(原标题是“故障公告”)。这一点很赞!

下面我以语雀的事件说明为例来说明如何转变(参见:关于语雀 23 日故障的公告)。

先说写得不好的避坑指南。注意这只是通用的写得不好的点。语雀有两点还是做得不错的。

写得不好的避坑指南

1 缺少上下文:只站在意外事件直接负责团队的角度撰写,缺乏像“存储系统所使用的机器类别较老,无法直接操作上线”这样描述的背景介绍,导致读者在阅读时,产生误解,难以理解。

2 使用术语且不做解释:避坑指南中使用了“Region”、“多副本容灾”、“两地三中心”等术语,但是没有解释,导致不是做软件的用户在阅读时,难以理解,进而对避坑产生怀疑。

3 缺乏意外事件确切的影响数据:只提到意外事件持续7个多小时,缺乏其他数据,导致难以判断事件所影响的用户范围等规模程度,也难以判断意外事件何时完全恢复。

4 缺乏触发因素的底层细节描述:只提供了意外事件的高层次描述,难以判断意外事件的最底层根本原因,比如难以了解“在升级中新的运维工具”具体出了什么bug,这难以在将来实现避坑。

5 缺乏意外事件恢复的细节描述:读者希望了解如何能缓解意外事件的影响的实际措施细节,比如数据恢复、数据校验和联调细节,以便学习和分析。

6 缺乏可验证的预防措施:“运维团队加强运维工具的质量保障与测试,杜绝此类运维 bug 再次发生”听起来不错,但是缺乏具体的可执行的措施,更缺乏可验证性,让读者怀疑是否能真正实现。

7 具有指责意味:在避坑指南中,提到“运维团队加强运维工具的质量保障与测试,杜绝此类运维 bug 再次发生”,这句话的潜台词是,运维团队没有做好工作,导致意外事件发生。这种指责会促使运维团队产生抵触情绪,会心里反问:“为何语雀不做异地双活?”,难以实现避坑。如图4。

8 分享范围有限:避坑指南只在内部分享,导致其他团队和用户无法学习和了解,无法重塑信心,也无法提供反馈。(语雀这一点做得较好)

9 延迟发表:避坑指南在意外事件发生后,经过了很久才发表,难以实现避坑。(语雀这一点做得较好) f4.png 图4 这种指责会促使运维团队产生抵触情绪,会心里反问:“为何语雀不做异地双活?”,难以实现避坑

写得好的避坑指南

1 提供上下文:避坑指南中提供意外事件的背景介绍,包括语雀的用户规模、用户分布、用户使用场景、用户使用习惯、用户使用时段等,让读者能够更好地理解意外事件的影响范围。

2 解释术语:避坑指南中解释“Region”、“多副本容灾”、“两地三中心”等术语,让读者能够更好地理解意外事件。

3 提供意外事件确切的影响数据:避坑指南中提供意外事件的持续时长、影响用户数、影响用户比例、影响用户使用时长、影响用户使用频率等数据,让读者能够更好地理解意外事件的影响范围。

4 提供触发因素的底层细节描述:避坑指南中提供意外事件的底层细节描述,比如运维工具的 bug如何触发问题的过程,让读者能够更好地理解意外事件的根本原因。

5 提供意外事件恢复的细节描述:避坑指南中提供意外事件的恢复细节描述,比如数据恢复的过程、验证过程、验证结果等,让读者能够更好地理解意外事件的恢复过程。

6 提供可验证的预防措施:避坑指南中提供可验证的预防措施,比如存储服务器离线后可快速上线的预期时长、如何验证运维动作的灰度范围和灰度时长等,让读者能够更好地理解意外事件的预防措施。

7 不具有指责意味:明确系统设计改进已考虑用异地双活应对此类意外事件,没有个人或团队会因该事件而受到指责。重点关注“出了什么问题”,而不是“谁”导致了事件。旨在改善机制和系统,而不是惩罚个人。

8 分享范围广泛:将“关于语雀 23 日故障的公告”更名为“语雀23日意外事件相关避坑指南”,有助于让当事人放下难堪而愿意在避坑指南中分享事件细节,让其他团队能够学习和提供反馈。(语雀向千万用户发布公告这一点做得较好)

9 及时发表:避坑指南在意外事件发生后,一周之内及时发表,让其他团队能够及时学习,也能够及时提供反馈。(语雀这一点做得较好)

10 数据驱动结论:提出的所有结论均基于事实和数据。

11 提供图表辅助说明:以图表的形式提供更多有用的信息,以便为了向不熟悉该系统的读者提供背景信息。

12 简明扼要:避坑指南中的每个部分都是简明扼要的,没有冗余的信息,让读者能够更好地理解意外事件的影响范围。

要想了解更多如何写好避坑指南的内容,可以参考《Google SRE工作手册》第10章。里面给出了正反两个例子。

但是,需要说明一点,国外一般把IT系统意外事件“避坑指南”,称为postmortem,直译就是“验尸报告”,这个词就更加负面了。

我之前有段时间,也使用“验尸报告”这个字眼儿。但在学习了社会心理学后,了解到做软件的人的感受,就将其改称为“避坑指南”。

总结

阿里云崩了,相比浮于表面的事件说明,我更愿意读写得好的避坑指南

写得好的避坑指南,能让企业内外所有做软件的人,从以往意外事件中学到经验教训;也能让IT系统的用户,重塑对系统的信心。

要想让避坑指南“写的人愿意写,读的人愿意读”,就需要营造一个不让意外事件当事人感到难堪的温和的环境,让她/他从自责中走出来,从而更愿意详细地进行分享,通过帮助他人,获得更好的内心体验

营造这种环境的第一步,就是把标题从“事件说明”**改为“避坑指南”**。

之后,再参考上面提到的9个坏习惯和12个好习惯,编写好的避坑指南。


如果你喜欢这篇文章,欢迎点赞,并转发给身边有需要的人。 如果你有更好的方法,欢迎在留言区留言,和我讨论。

标签:指南,语雀,运维,用户,避坑,云崩,意外事件
From: https://blog.51cto.com/u_16163674/8342350

相关文章

  • 从混乱到优雅:基于DDD的六边形架构的代码翻新指南 | 京东物流技术团队
    前言趁着双十一备战封板,终于又有一些时间可以梳理一下最近的心得。最近这半年跟同事讨论比较多的是分层架构,然后就会遇到两个触及灵魂的问题,一个是如何做好分层架构,二是DDD在架构层面该如何落地。为了说好分层,我们需要了解架构的意义。良好的架构是为了保证一下两点:治理应用复杂度,......
  • rustbook-ch1-入门指南-总结
    rustbook-ch1-入门指南-总结1、安装rust之前需要安装一个C语言编译器。正常编译、执行rust程序,需要一个链接器。由于C语言编译器通常都会附带链接器,所以需要安装一个C语言编译器。除了编译执行需要链接器外,一部分常用的Rust包会依赖使用C语言编写的代码,为了编译这些Rust代码,也需......
  • Android程序员自救进阶指南
    前言今天摸鱼的时候看到有人36岁在深圳开起了出租车的新闻,而且对方毕业于华南师范大学,曾在大厂当过主管,因为疫情而毕业,至今2年都没能回到主业,因为上有父母,下有孩子,需要养家糊口,不愿跑美团,认为没面子,所以开起了出租车。这话不得不再次刷新了我的三观,原来开出租车还能瞧不起跑外卖的......
  • 基于springboot的旅游出行指南-计算机毕业设计源码+LW文档
    摘 要随着社会的发展,旅游出行的管理形势越来越严峻。越来越多的用户利用互联网获得信息,但旅游出行信息鱼龙混杂,信息真假难以辨别。为了方便用户更好的获得本旅游出行信息,因此,设计一种安全高效的旅游出行指南极为重要。为设计一个安全便捷,并且使用户更好获取本旅游出行信息,本文......
  • 抖音小程序开发:打造高效餐饮团购平台的技术指南
    在餐饮行业,通过抖音小程序开发一个高效的团购平台,可以为餐厅提供更广泛的曝光,增加销售机会。本文将从技术角度出发,为您提供一份详细的抖音小程序开发指南,助您打造一流的餐饮团购平台。一、确定需求和功能在开始抖音小程序的开发之前,首先要明确平台的需求和功能。这包括但不限于菜单......
  • 开发指南,自研关键字驱动框架
    开发指南环境准备安装Python,3.8以上版本安装poetry包管理工具,pipinstallpoetry克隆代码,gitclonehttps://github.com/dongfanger/tep准备就绪,撸起袖子干!目录结构distpoetrybuild生成目标文件,用于发布pypitep核心代码tests测试代码utils工具包......
  • [左神面试指南] 二叉树[上]篇
    CDXXX用递归和非递归方式实现二叉树先序、中序和后序遍历❗publicclassCDbianli_1{publicstaticclassTreeNode{publicintval;publicTreeNodeleft;publicTreeNoderight;publicTreeNode(intnum){......
  • rpm包制作脚本spec文件编写详细指南
    概述spec文件是制作rpm包的脚本文件,详细定义rpm包的信息、包含内容和安装位置,如软件包的名字、版本、类别、说明摘要、创建时要执行什么指令、安装时要执行什么操作、以及软件包所要包含的文件列表等等。spec文件有多个段组成,分别定义rpm编译、打包、安装等阶段的工作内容。示例如......
  • 深入学习JavaScript ES8函数式编程:特性与实践指南
    ......
  • MT主机控制面板Plesk 使用指南
    我们是7月19号租下的主机,看到有些邻居拿到控制面板权限之后不知道该怎么用,决定写下这篇指南,希望对大家有帮助,同时也能让大家了解一下MT的控制后台。我们目前使用的Plesk版本是8.2.0。首先使用管理账号分配一下合租用户demo,权限和其他合租用户一样,但是一些服务器管理相关的界面就......