安全生产的重要性
安全生产是我们的底线,随着业务的不断扩大,服务的范围变广,线上的故障和问题开始频发;这些故障给客户和公司带来了不可估量的损失,不仅影响我们在业界的口碑,更会影响客户群对我们的信任.
我们需要思考,别人为什么使用你的服务?如果你的服务故障了,用户有怎样的反响?出现故障了我们如何止损,减少对客户的影响,维护我们的价值?
如何提高安全生产
安全生产会促进我们服务的可用性,最大限度的减少线上事故率;那么我们应该从哪些方面来提高安全生产,而保护我们的客户,保护我们生产的同学呢?大致的方向主要集中在技术
、架构
、系统
、工具
、组织
、机制
、文化
上.
- 在系统设计之初,我们就尽可能的做好
系统规划
,做到架构优化
,架构简化; 把相同功能的系统尽量合并归并(系统改造
), 减少学习系统的成本; - 所有的系统必须具备容灾能力(
容灾建设
) - 所有的代码,在上线的时候一定要确保质量(
编码质量
)
经过一些数据分析,有80%的线上故障是由于变更导致的,所以对变更的管控一定是减少线上重大故障的一个切面;所以我们在线上变更时一定要格外小心和谨慎;
- 变更管控:我们要对所有的线上变更强管控
- 灰度能力:所有的系统更新及上线必须具备灰度能力
- 监控优化:所有系统要有全方位的监控覆盖,所有的监控告警必须收敛,不能让重大关键的告警被淹没掉
- 应急预案:所有的系统对于会发生的或可能发生的故障以及一些问题的场景,要具备应急预案;
- 系统演练:光有了应急预案还不够,对于这些应急预案必须定期演练,保证预案的可靠性,确保问题出现的时候能够快速的被执行
- 系统巡查:定期对系统做巡查,发现潜在的问题,比如:负载, 性能...
- 线上压测:定期对系统进行压测,验证系统功能的同时,也对系统的容量规划起到积极作用
通过上面2个方面(设计、上线)的规范,我们已经能够应对线上的故障及风险了,但是这样的方式方法却没有得到有效的执行和管控,可能兴致高了,我们就执行一下.
所以我们要有安全生产组织
这样的部门或组织来保证这些规范和机制在生产中良好运转, 通过这个组织能够保证我们的技术架构和工具能够真正落地,实实在在通过安全技术的手段来解决线上故障;
有了组织的保证,我们也要从一些点来规范我们的操作:
- 规范: 变更规范、灰度规范
- 红线: 针对规范做了安全红线, 如果没有按照规范区执行,就有可能触发红线,
- 问责: 触发红线,造成故障,我们要有问责标准(P,D,E…),这些标准可以来源于业务可用率,安全生产策略,故障影响等
安全生产的理念
- 面向失败的设计:我们在设计系统的时候,就要考虑到系统可能产生的情况和极端的问题.并且有相应的处置方案和规划方案
- 无灰度、不变更:所有的变更一定要通过灰度环境和我们的分批发布才能够上线,而分批发布之间一定要有间隔
- 变更3板斧:可灰度、可观测、可回滚