清单革命与运维
最近有幸听到樊登老师讲的《清单革命》,仔细阅读越发感叹其神奇,今天那么就借这个话题水一篇我如何在我的工作中应用清单的。
1. 清单革命
1.1 为什么需要清单
下面我们分享摘录清单革命作者“啊图”的两个故事:
故事一:有一天,医院里来了一个病患,他在舞会上被人捅了一刀。医生按照常规的做法做了处理,却没有解决问题。原来这位伤者参加的是化装舞会,捅他的凶器是长军刀,造成的伤口很深、伤害很大。按照一般刀伤处理,深度太浅,而伤者的身体内部已经受伤严重。
医生的流程清单上没有询问伤害来源这一项,造成了疏忽,给他们很大的教训。
故事二:在阿尔卑斯山区的克拉根福小镇,有一个小姑娘在冰天雪地里掉入了冰窟窿,过了半个小时才被人发现、救出。一般的医院对此都无能为力,但是当地的医院,虽然只是个小镇医院,却把小姑娘救了回来。
究其原因,原来这个小镇每年都会遇到很多这样的事故,长此以往积累了经验,当地医院制订了详细的对策,列出了清单,按照步骤紧密施救,得以成功。有没有“清单”的差别就是如此明显。
1.2 清单和它的功能
清单,即“检查清单”(checklist),是一种列出工作流程、要点、注意事项的工具,使用清单帮助检查流程、细节。
在人类面临的问题中,可以分为三类:
-
简单问题:如简单的算术和蛋糕烘焙;
-
复杂问题:如手术、开飞机、发射火箭;
-
极端复杂问题:如抚养子女。处理其中的复杂问题和极端复杂问题时,清单的作用尤为明显,重要性不言而喻。
清单为我们提供了一种“认知防护网”,能够抓住每个人生来就有的认知缺陷。
上面我们简单了解了清单革命,更详细的信息可以购买书籍或者通过樊登读书会来阅读。
2. 清单对于运维
运维工作中不免会产生如下几种场景:
- 服务上线,服务上线可能包含,资源申请、环境部署、系统联调、上线预热、服务Check;
- 运维接触一个新的环境,面对的一个工业机器不知从何下手,不知该怎么做;
- 权限过于集中一人或者服务运行过于依靠这个人;
下面我们对这三种情况进行简单分析说明一下。
2.1 场景一
笔者经历过因为上线遇到的各种各样的不愉快的事情,下面我已我自身亲身经历的事情来分享一下。
P1, 事情经历是,我们在原定计划上线日期进行上线,当我们通过开发环境-->测试环境-->预生产(卡了大致有超出预期三小时),而导致预期会产生问题的重要原因是研发提供的SQL有遗漏,当业务上线到预生产环境出现了问题,最后三个小时都在查漏补漏;(当时还是单机服务相对简单)
P2, 原定计划月底大版本迭代,上线牵扯服务大概有10+(已经拆分微服务);而对应该项目的Leader,就在事前已经与我和测试进行确认环境问题,及资源问题;同时将上线顺序及上线资源一一列出;虽然最终上线时间长达30分钟+,但是中途连贯非常顺畅;
P3, 服务大规模迁移,我们有几次场景从某云-->某云,整个过程使用了清单方式,最终达到无缝衔接。
2.2 场景二(三)
P1, 如果来了一名运维新人,你指排他去完成一项工作,比如给新服务配置一个域名,面对一个服务的项目新手自然很难完成,很有可能造成失误;如果是老手,配置完成后又不满足业务需求,后期统一管理成为问题;
P2, 在业务是荒原的时候,一次上线非常困难,那个服务先上,那个服务后上,中间负载均衡器的切换;如果脱离了非常熟悉这套业务的人会不会出错?答案是会的,及时非常熟悉这套业务的人,也会犯错;如果将整个流程梳理成为清单,就可以减少错误,同时让他人也可以快速执行,并不依赖于任何人。
2.3 清单要解决的问题
清单主要避免错误,人类的错误可以分为两种类型。第一类是“无知之错”,犯错是因为没有掌握相关知识。第二类是“无能之错”,犯错并非是因为没有掌握知识,而是因为没有正确使用知识。
“无能之错”中包括两大难题:①记忆和注意力谬误;②麻痹大意。
3. 制作清单
3.1 简单至上
一个真正有效的清单不是“无所不包”的,而应该简单、可测、高效。清单的目的是为了简单,而不是让事情变得更复杂。
3.2 以人为本
制订和执行清单的过程中,需要格外注意的一点是,要以人为根本。清单不应当成为人的束缚,解决问题的主角是人,而不是清单。
新知识应该系统地转变为简单实用的操作方法,尽快地更新到清单手册中。
3.3 持续改善
清单不是灵药,并不是有了清单就万事大吉,可保高枕无忧。清单的一大特质是需要持续更新、不断改善。
就算是最简单的清单也需要不断改进。简洁和有效永远是矛盾的联合体,只有持续改善,才能让清单始终确保安全、正确和稳定,持续发挥作用。
3.4 权力下放
4. 小结
清单是一种工具,也是一种生活和工作方式,更是一场深刻的观念变革。理解清单的价值,学习清单的方法,提升效率、确保安全,改变将在无声无息中悄然发生;同时在处于远古洪荒时期,当一定清单已经非常系统之后,可以演变为工具,走入石器时代。