工程质量建设


质量是生命线

软件质量管理

软件工程与传统工程非常不同,它快速变化,充满不确定性,以设计为例对于软件工程设计工作在整个工程中持续发生,哪怕是非设计工作,比如编码实现,也仍然依赖个体的创造力,同样存在较强的不确定性。因此这些都决定了软件工程质量管理的思想与传统工程截然不同。

软件质量管理横跨了整个软件工程完整的生命周期。作为一个组织或团队需要有一套完整的机制来保障工程质量可控。

  • 制定规范(有规可依):研发流程规范(上线前)、服务运维规范(上线后)、故障复盘规范(发生故障)
  • 机制保障(确保落实):宣导学习、基本功考试、随机抽检、红黑榜/奖惩机制

制定规范

研发流程规范

规范包含研发的整个生命周期,需求(PRD文档、ones追踪)、方案设计(概要设计/详细设计,高P评审)、代码开发(代码规范、sonar检查、分支规范、代码review等)、测试(单元测试/功能测试/性能测试/diff测试)、上线(高峰期不能上线、灰度发布、checklist)

这里重点强调一下单元测试

一般项目开发期的时间跨度虽然可能不长,但是它的影响太大了,基本决定了后期维护期的成本有多高。无论从什么角度来看,模块的单元测试都是重中之重的大事。原因是,单元测试的成本是最低的。关于测试成本,我们可以从两个维度看。

其一,单元测试的实施成本低,最容易去做。不少高级语言比如 Go 语言甚至在语言内建的工具链上就直接支持。而集成测试虽然也有自动化的方法和支持工具,但是往往需要更高额的代价。

其二,减少问题发现的周期,进而降低问题的修复成本。单元测试将问题发现周期缩短,基本上在问题现场就发现问题,这降低了Bug的修复成本。如果问题在系统的集成测试阶段发现,那么从问题定位,到回忆当初实现这段代码时候的思路,到最终去解决掉它,必然需要多花费几倍甚至几十倍的时间。

因此,我们鼓励更严格的单元测试要求,更高的单元测试覆盖率,以尽可能把发现问题做到前头。

服务运维规范

监控告警建设:核心业务必须要有可用率/耗时/qps/无结果率/点击率/访购率,以及机器的各项指标监控(cpu/gc/load/io等)

容量建设:根据业务需要一般系统容量需要保障在1.5倍历史流量峰值的压力下,服务不降级,可以保持3个9以上的可用性。平时4个9的可用性。在效果可控约束下,通过降级,服务可以承载2倍历史峰值流量

应急预案建设:核心服务的已知风险点需要有sop,各种降级兜底方案建设,故障演练等

故障处理及复盘规范:故障发生后第一时间进行止损(限流、熔断、重启、降级等)、可保留一台现场机器进行原因追查。事后及时对故障进行复盘 COE(Correction Of Error)

这里关于 COE 多说几句,COE 事故复盘的遵旨是对事不对人,找到问题产生的根本原因,避免同类问题和风险,todo 项跟进等

故障复盘最重要的目的就是对问题发生的原因有一个准确定位
,5Why 分析要深刻,要敢于向固有流程进行挑战(5why追求的是寻找问题的根本原因,即”问题的问题“)。下面举一个例子

丰田汽车公司前副社长大野耐一曾举了一个例子来找出停机的真正原因:

★问题一:为什么机器停了? 答案一:因为机器超载,保险丝烧断了。 ★问题二:为什么机器会超载?(针对答案一提问题) 答案二:因为轴承的润滑不足。 ★问题三:为什么轴承会润滑不足?(针对答案二提问题) 答案三:因为润滑泵失灵了。 ★问题四:为什么润滑泵会失灵?(针对答案三提问题) 答案四:因为它的轮轴耗损了。 ★问题五:为什么润滑泵的轮轴会耗损?(针对答案四问问题) 答案五:因为杂质跑到里面去了。

经过连续五次不停地问“为什么”,才找到问题的真正原因和解决的方法,在润滑泵上加装滤网。 如果没有以这种追根究底的精神来发掘问题,很可能只是换根保险丝草草了事,真正的问题还是没有解决。


最后 COE 还需要进行影响面量化评估,同各关联方同学对齐
经验教训、正确做法要深刻,有认知迭代,避免出现规范中的认知没有对齐
后续todo需要能真实解决问题,不超过2项的todo项解决了就能根本上解决故障发生的条件

COE 是一个用来追溯故障根因、追踪修复进展以及管理 To-do 项的系统。它的目标是通过故障回溯和故障深挖的方式,持续提升公司各系统的整体质量和运维水平。为了确保发生过的事故不再重复发生,公司内事故的复盘不可缺少。以前,不论是在学城中建立CaseStudy页面,还是使用Issue系统(SRE事故运维平台),都不能从复盘的规范和流程上,保证复盘的质量和故障后续跟进的落地。

通过COE系统,故障的主责团队可以在故障处理后,创建一个COE来推动复盘。COE实现了:

  • 每一个COE,包括“现象””客户影响““时间线“”原因分析”“经验教训”“正确做法”模块,确保CaseStudy信息完备;

  • 通过代办任务的创建和管理,所有跟进事项会在监督下完成;

  • COE的信息变更,会实时和干系人群组同步;

  • 通过COE,管理者还可以得到事故的统计报表,能进一步评估团队的工作状况等信息。

机制保障

规范有了还需要有一定的机制保障这些规范都落实到实处。例如定期进行安全基本功宣传学习,安全生产日进行全员基本功宣讲,定期针对一线风险认知进行考试等。同时可以随机对上线流程规范抽查巡检,定期公示红黑榜进行通晒等等。

Copyright © jverson.com 2019 all right reserved,powered by Gitbook 23:16

results matching ""

    No results matching ""