及时复盘

复盘,本是一个围棋术语。指下完棋,棋手重新摆一遍下棋的过程,探讨得失,总结有无更好的应对招数。而现在,这个词已经被泛化,许多企业把它赋予了管理学意义。联想最早引入“复盘”这个概念,是在上世纪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. 第四篇:稳定性之提升团队潜意识【及时止损、监控报警】

    1.及时止损 在故障发生时,我们首先考虑也是最重要的是及时止损,及时止损的前提是快速定位故障源,因为在很多分布式系统中,一旦发生故障就会出现"多米诺骨牌效应".也就是说,系统会随着 ...

  2. 第五篇:稳定性之提升团队潜意识【依赖简化、谨慎变更】

    依赖简化 在分布式或微服务系统中,服务肩负不同职责,服务间必然存着依赖关系.往往系统复杂度的根源除了业务的本身复杂度,就是设计不恰当的耦合关系.或者服务划分不合理.在实际开发过程中,对单体服务进行重构 ...

  3. 第七篇:稳定性之提升团队潜意识【提前预防、裕度设计】

    提前预防 提前预防是告诉我们从失败中学习,防止同样的故障再次发生,海因里希法则告诉我们,一次重大事故的背后必然有一百次未遂事件和几十次轻度损失.这个法则对于我们有两个启示:一是事故的发生必然有其关联起 ...

  4. IM通讯协议专题学习(八):金蝶随手记团队的Protobuf应用实践(原理篇)

    本文由金蝶随手记技术团队丁同舟分享. 1.引言 跟移动端IM中追求数据传输效率.网络流量消耗等需求一样,随手记客户端与服务端交互的过程中,对部分数据的传输大小和效率也有较高的要求,普通的数据格式如 J ...

  5. 第八篇!95后天才少年曹原再发Nature!

    来源:自科在线 编辑:nhyilin 2021年7月21日,"石墨烯驾驭者"曹原作为第一作者和通讯作者在国际顶尖学术期刊 Nature 发表了题为:Pauli-limit viol ...

  6. [老老实实学WCF] 第八篇 实例化

    老老实实学WCF 第八篇 实例化 通过上一篇的学习,我们简单地了解了会话,我们知道服务端和客户端之间可以建立会话连接,也可以建立非会话连接,通信的绑定和服务协定的 ServiceContract 的S ...

  7. 成人大专计算机专业总结,成人大专自我鉴定300字大专函授【八篇】

    <成人大专自我鉴定300字大专函授[八篇]>由会员分享,可在线阅读,更多相关<成人大专自我鉴定300字大专函授[八篇](6页珍藏版)>请在人人文库网上搜索. 1.成人大专自我鉴 ...

  8. 快狗打车CTO沈剑:如何利用计划管理提升团队效率和产能

    本文根据沈剑老师在[deeplus直播第237期]线上分享演讲内容整理而成.(文末有获取本期PPT&回放的方式,不要错过) 沈剑 快狗打车CTO 到家集团技术委员会主席,互联网架构技术专家: ...

  9. 小学计算机室行事周历,关于小学信息技术教案八篇

    关于小学信息技术教案八篇 作为一名老师,通常会被要求编写教案,教案是教学活动的总的组织纲领和行动方案.如何把教案做到重点突出呢?以下是小编整理的小学信息技术教案8篇,希望对大家有所帮助. 小学信息技术 ...

最新文章

  1. 用Python爬取b站弹幕,看大家还会接受《爱情公寓5》吗?
  2. 世界级数学大牛来了!2002年菲尔兹奖得主加盟华为
  3. CSS布局--head区的其他设置
  4. Fuel 30 分钟快速安装OpenStack
  5. ETL工具大全,你了解多少
  6. 《机器学习实战》chapter 11 使用apriori算法进行关联分析
  7. Spring集成Junit步骤和代码实现
  8. HDU - 6629 string matching(扩展KMP)
  9. Diffie-Hellman:安全网络通信背后的天才算法
  10. 冯雪 手术机器人的应用_未来达芬奇手术机器人的应用将更为广阔
  11. 将深度缓冲z值变换到相机坐标系
  12. 华瑞网研(苏州)2014-11部分笔试题(社招)
  13. mysql 修改max_allowed_packet
  14. 项目铺垫系列导航目录
  15. Insufficient space for shared memory file 解决办法
  16. MatLab基本知识学习 详细!
  17. python 如何调试uc浏览器_UC浏览器开发者工具
  18. python 直方图 横向_python绘制直方图
  19. Macbooster8免费mac清理垃圾软件功能介绍
  20. 用 JavaScript 实现手势库 — 手势动画应用【前端组件化】

热门文章

  1. 《天天数学》连载30:一月三十日
  2. Scala学习笔记02:数据类型、常量与变量
  3. Python案例:汉诺塔游戏
  4. 2017.6.15 数字表格 思考记录
  5. 【Level 08】U06 Good Feeling L1 End-of-season game
  6. 【英语学习】【Daily English】U10 Education L02 I'm not a pushy parent
  7. springboot2.x 从零到一(1、快速创建服务)
  8. altera fpga sdi输出方案_高段位攻城狮是这样解决SI分析、DDR、FPGA国产化问题的! | 电巢直播答疑汇总...
  9. java true false_关于java:如何存储boolean返回false / true的次数
  10. python 三分类的哑编码_python数据挖掘实战 -数据预处理篇(数据可视化-空值填充-哑变量编码)...