第八篇:稳定性之提升团队潜意识【及时复盘、开关设计】
及时复盘
复盘,本是一个围棋术语。指下完棋,棋手重新摆一遍下棋的过程,探讨得失,总结有无更好的应对招数。而现在,这个词已经被泛化,许多企业把它赋予了管理学意义。联想最早引入“复盘”这个概念,是在上世纪80年代。那时候,更多的叫法是“总结”。
什么是联想式“复盘”?在这里,复盘分为四步:回顾目标、评估结果、分析原因、总结经验。
复盘的过程有四个步骤,简而言之就是:
第一,回顾目标,时刻别忘了当初出发的目的,需要一遍一遍的回顾和澄清;
第二,对照当初的目标回顾过程、评估结果;
第三,剖根问底分析原因;
第四,总结规律和反思,并在此制订下一步的行动计划。
柳传志说:“复盘是联想认为最重要的一件事情。联想经常说,对人,用谁不用谁,就看他学习能力怎么样。其实这个学习我自己回顾过来以后,学习无非是:跟书本学;跟自己学,自己做的这个事情,把经验教训进行总结;还有一个就是跟别人做的事情学。最多的,最深刻的还是跟自己学,自己学无非就是‘复盘’。一件事情做完了以后,做成功了,或者没做成功,尤其是没做成功的,坐下来把当时的这个事情,我们预先怎么定的、中间出了什么问题、为什么做不到,要理一遍。理一遍以后,对下次做,自然这次的经验教训他就吸收了。”
其实,复盘的过程,就是让成功的因素不断重现并放大,把失败的因素找出来第一时间剔除。任务的成功与失败,复盘都有价值。
传统事故复盘 Blame Game 或者甩锅
我们先来看看传统事故复盘是如何进行的吧?很多时候跟电视剧或者电影上审问犯人有些类似,一群人在一个房间里,把“嫌疑工程师”放到一个“Hot Seat”上,然后进行各种追问,来找出这个事故的根本原因(Root Cause),并讨论采取什么行动计划来确保这种事情不再发生。关键部分是对这个事故进行定级,和视事故的级别对事故人进行一定的处罚。此外还有一个长长的改进任务列表,列出各种长期或者短期的任务,从流程上或者意识上避免再犯类似的错误。往往能看到一些诸如参加安全操作培训,以后线上操作更小心之类的改进事项。很遗憾任务列表上的任务往往很少得到跟进。
这种复盘,是一种Blame Game(即甩锅游戏),是不适应现代快速发展要求的。在这种Blame Game的环境下,承担责任的工程师,会以一种沉重的心情来进行事故复盘,他最后会很不愉悦的快速接受责任认定,那么事故过程中的各种场景不会得到很好的回放,也就不能充分说明当时的场景,同时因为快速得出结论,事故中涉及到的各种架构问题和流程问题不能得到很好的澄清,也不能在团队里面促成很好的知识传递。那么即使换了一个人,同样的事故是不能避免发生的。
现代的事故复盘 Blameless PostMortems
那么,该如何进行高效的事故复盘呢?是不做了?还是把事故复盘当作一个很轻松的游戏?都不是。正确的做法是本着非常严肃认真的态度,召集所有相关的人员,进行事故现场的回顾;然后进行认真的分析,对这种事故,我们如何能更快的发现?如何能更快的定位和止损?如何从架构上做出改进,来做到自动容错?
要点在于把每一次事故当做学习的机会,我们来一起看看业内如何做的吧。
2012年著名电商Etsy的CTO在他们的Blog上发表文章,题目是“Blameless PostMortems and a Just Culture”, 阐述Blameless PostMortems的重要性和实施方法。他在该博文上描述在他们Etsy公司进行Blameless PostMortems的做法和考虑。为什么要这么做呢?他解释:在事故复盘中,希望涉及的工程师能给出现场的详细信息,便于发现系统弱点或者流程缺失之处,详细信息包括如下内容:
- 他观察到了什么现象
- 他做出什么样的判断
- 他采取什么样的行动
- 行动得到什么样的结果
这些信息都只有在不害怕被惩罚的情况下才能详细的给出。因为认为自己将受到谴责的工程师没有动机去提供必要的详细信息,以了解该事故的详细原因。而如果对事故如何发生的了解不足,换一个人还会继续发生。所以该办法并不是保证工程师犯错误可以免除惩罚,而是更关注获得重要现场信息来持续对系统进行改进,避免错误重复发生。因为他相信,能获得真实的一手信息来诊断并确保事故不在发生,比起指责甚至处罚事故负责的工程师,对公司的长久利益更重要。
复盘原则
- 及时复盘:为了让记忆的损失减少到最小程度,事件一结束就必须马上进行回顾,最好是事件结束就进行,次之,最好当天进行,另外也防止同样的问题短时间内再次出现。
- 定期回顾:既然已经记录下不要要点和事件,那么定期进行回顾,可以让你从整体上看待你所做的事情,从而发现共性事件和更深层的问题。
- 时常提醒:总结出来的经验并不是腊肉,不要让它干挂着,你如果不经常提醒自己去使用这些总结出来的方法,那复盘的效果也是打折扣的。
- 形成规律:遵循“先僵化,再优化”的过程,一般的复盘过程是,回顾事件---分析事件成功或失败的根本原因—找到解决办法。
- 对事不对人:复盘过程中是为了寻找根因,包括事故处理过程的行动,复盘目标是为了防止同样的问题下次不再发生。
小结
事故不可避免,事故复盘同时也是一个学习机会,复盘时要对事不对人,是找问题根因而不是追责,复盘及时性,复盘需要定期回顾,从整体上看待你所做的事情,从而发现共性事件和更深层的问题,复盘不只是事故需要复盘,成功的案例也需要复盘,马云曾说“赢的人要反思,一定要想清楚,我们侥幸在哪里;输的人要反思,是哪些事情做好了,我们就会赢。反思的目的是下一场要赢”。
开关设计
开关是一个轻量级的动态配置框架,通过功能开关可以动态管理代码中的配置项,根据需求为某个应用开启或关闭部分功能,或设置某个性能指标的阈值,可以按需一键打开,如发现问题随时关闭禁用。
开关设计用于可能发生变更或不确定的业务或功能,通过动态调整满足业务需求,常用场景:
- 运行时动态调整日志级别:在不同的应用场景下,您可能需要调整日志的级别,得到更有效的日志信息。功能开关提供了在应用运行时动态修改日志级别的功能。只要在应用中增加日志级别开关,然后在控制台中设置开关的推送值,即可快速的调整日志运行的级别,从而得到更有效的日志信息。
- 主动降级业务功能:通常一个业务功能包含许多的业务逻辑,其中可以区分出一些核心业务和非核心业务。在高并发的情况下,例如618、双十一等场景,为了提升系统性能,系统需要减少非必要业务的资源消耗,对非必要的业务功能进行主动降级。只要在应用中定义降级业务开关,然后在控制台设置开关推送,即可快速实现业务的降级。
- 黑白名单功能:黑白名单是常用的访问控制规则,通过功能开关可以快速实现黑白名单功能。只要在应用中增加黑名单开关或白名单开关,然后在控制台设置开关推送即可。
通常情况下开关设计,通过配置中心来实现,基于配置中心对开关的控制,并且确保开关变更是实时的。
小结
开关设计可以动态的管理代码中的配置项,可以按需一键打开,如发现问题随时关闭禁用,在实际场景中还是比较常用的,开关设计需要定期更新维护,防止开关过多,带来维护成本。
第八篇:稳定性之提升团队潜意识【及时复盘、开关设计】相关推荐
- 第四篇:稳定性之提升团队潜意识【及时止损、监控报警】
1.及时止损 在故障发生时,我们首先考虑也是最重要的是及时止损,及时止损的前提是快速定位故障源,因为在很多分布式系统中,一旦发生故障就会出现"多米诺骨牌效应".也就是说,系统会随着 ...
- 第五篇:稳定性之提升团队潜意识【依赖简化、谨慎变更】
依赖简化 在分布式或微服务系统中,服务肩负不同职责,服务间必然存着依赖关系.往往系统复杂度的根源除了业务的本身复杂度,就是设计不恰当的耦合关系.或者服务划分不合理.在实际开发过程中,对单体服务进行重构 ...
- 第七篇:稳定性之提升团队潜意识【提前预防、裕度设计】
提前预防 提前预防是告诉我们从失败中学习,防止同样的故障再次发生,海因里希法则告诉我们,一次重大事故的背后必然有一百次未遂事件和几十次轻度损失.这个法则对于我们有两个启示:一是事故的发生必然有其关联起 ...
- IM通讯协议专题学习(八):金蝶随手记团队的Protobuf应用实践(原理篇)
本文由金蝶随手记技术团队丁同舟分享. 1.引言 跟移动端IM中追求数据传输效率.网络流量消耗等需求一样,随手记客户端与服务端交互的过程中,对部分数据的传输大小和效率也有较高的要求,普通的数据格式如 J ...
- 第八篇!95后天才少年曹原再发Nature!
来源:自科在线 编辑:nhyilin 2021年7月21日,"石墨烯驾驭者"曹原作为第一作者和通讯作者在国际顶尖学术期刊 Nature 发表了题为:Pauli-limit viol ...
- [老老实实学WCF] 第八篇 实例化
老老实实学WCF 第八篇 实例化 通过上一篇的学习,我们简单地了解了会话,我们知道服务端和客户端之间可以建立会话连接,也可以建立非会话连接,通信的绑定和服务协定的 ServiceContract 的S ...
- 成人大专计算机专业总结,成人大专自我鉴定300字大专函授【八篇】
<成人大专自我鉴定300字大专函授[八篇]>由会员分享,可在线阅读,更多相关<成人大专自我鉴定300字大专函授[八篇](6页珍藏版)>请在人人文库网上搜索. 1.成人大专自我鉴 ...
- 快狗打车CTO沈剑:如何利用计划管理提升团队效率和产能
本文根据沈剑老师在[deeplus直播第237期]线上分享演讲内容整理而成.(文末有获取本期PPT&回放的方式,不要错过) 沈剑 快狗打车CTO 到家集团技术委员会主席,互联网架构技术专家: ...
- 小学计算机室行事周历,关于小学信息技术教案八篇
关于小学信息技术教案八篇 作为一名老师,通常会被要求编写教案,教案是教学活动的总的组织纲领和行动方案.如何把教案做到重点突出呢?以下是小编整理的小学信息技术教案8篇,希望对大家有所帮助. 小学信息技术 ...
最新文章
- 用Python爬取b站弹幕,看大家还会接受《爱情公寓5》吗?
- 世界级数学大牛来了!2002年菲尔兹奖得主加盟华为
- CSS布局--head区的其他设置
- Fuel 30 分钟快速安装OpenStack
- ETL工具大全,你了解多少
- 《机器学习实战》chapter 11 使用apriori算法进行关联分析
- Spring集成Junit步骤和代码实现
- HDU - 6629 string matching(扩展KMP)
- Diffie-Hellman:安全网络通信背后的天才算法
- 冯雪 手术机器人的应用_未来达芬奇手术机器人的应用将更为广阔
- 将深度缓冲z值变换到相机坐标系
- 华瑞网研(苏州)2014-11部分笔试题(社招)
- mysql 修改max_allowed_packet
- 项目铺垫系列导航目录
- Insufficient space for shared memory file 解决办法
- MatLab基本知识学习 详细!
- python 如何调试uc浏览器_UC浏览器开发者工具
- python 直方图 横向_python绘制直方图
- Macbooster8免费mac清理垃圾软件功能介绍
- 用 JavaScript 实现手势库 — 手势动画应用【前端组件化】
热门文章
- 《天天数学》连载30:一月三十日
- Scala学习笔记02:数据类型、常量与变量
- Python案例:汉诺塔游戏
- 2017.6.15 数字表格 思考记录
- 【Level 08】U06 Good Feeling L1 End-of-season game
- 【英语学习】【Daily English】U10 Education L02 I'm not a pushy parent
- springboot2.x 从零到一(1、快速创建服务)
- altera fpga sdi输出方案_高段位攻城狮是这样解决SI分析、DDR、FPGA国产化问题的! | 电巢直播答疑汇总...
- java true false_关于java:如何存储boolean返回false / true的次数
- python 三分类的哑编码_python数据挖掘实战 -数据预处理篇(数据可视化-空值填充-哑变量编码)...