97 Things Every SRE Should Know-89
Table of Contents
Following the Path of Safety-Critical Systems
遵循安全关键型系统之路
SCS(安全关键系统 safety-critical systems)【1】是指其故障或失灵可能导致人员死亡或严重受伤,设备或财产损失或严重损坏,以及环境危害的系统。尽管风险如此之高,但 SCS 中经常充斥着复杂的软件,从而增加了有害行为的可能性。因此,这些系统受到严格的监管框架的约束,需要使用严格的开发技术,以减少不利行为。
在技术界普遍存在的一个神话是,这些技术是不必要的严格和复杂,只保留给最关键的安全系统。不幸的是,这意味着由SCS社区开发的一套相当丰富的指导和方法很少被使用,甚至在科技行业内也没有考虑。
SCS在开发技术的严格性和适用性方面的要求差别很大,往往与SRE范围内的系统重叠。例如,IEC 61508,最普遍的安全标准,包括如何应用、设计、部署和维护安全相关系统的方法。虽然这个标准似乎只针对SCS,但仔细研究后发现,其原则反映了系统工程中使用的系统可靠性,如可用性、可靠性、安全性、完整性和可维护性。
IEC 61508中每种开发方法的应用在很大程度上取决于由SIL(安全完整性等级 Safety Integrity Level)定义的系统所需的严格程度。SIL是对安全功能未能按要求作出反应的允许概率的衡量。SRE【2】可能会发现安全可用性——安全完整性系统执行任务的可用性——看起来很熟悉,用百分比(%)描述,与5个9高可用性的要求(99.999%)同义,如下图所示:
因此,像IEC 61508这样的标准提供了一个丰富的技术库,用户可以采用这些技术来实现目标SIL或可用性,包括需求可追溯性、形式化方法、静态分析、故障检测、复杂性度量、模块化设计、防御性编程、MC/DC(修正条件/决策覆盖)、过程仿真、雪崩/压力测试等。
并非所有的技术都可以应用于所有的系统,也不是所有的系统都需要,而且在不同的要求下,技术之间没有区别。将这些技术适应于SRE的一个关键因素是能够根据每个独特的软件系统解释标准的要求。然而,安全标准很少提供这样的指导,而且可能需要专业知识来充分确定何时以及如何部署特定的开发方法。因此,“基于目标的保证案例的未来”【3】中提出的技术,现在被IAEA(国际原子能机构)【4】采用,旨在对不同的开发方法如何证明关键的系统要求(如安全性和可靠性)的作用进行分类。
随着SRE的相关性不断扩大到我们日常依赖的系统,SRE的要求越来越与SCS的要求一致。考虑到安全关键的物联网,其中智能医疗设备依靠云服务的可用性,在SIL 3下运行。随着越来越多的软件系统与SCS相交,SRE应该着眼于SCS学科,为部署安全、可靠和可用的系统开辟一条道路。
我们如何构建本书的结构
SRE虽然涉及复杂的技术系统,但归根结底是一种文化实践。文化是人的产物,这启发我们根据你在组织中的SRE数量来组织本书的各个部分–你具体处理什么,你的一天是怎样的,取决于有多少个SRE工程师。我们将本书的文章分为 “SRE新手” 、0-1个SRE、1-10个SRE、10-100个SRE和 “SRE的未来 ”。
读者如果想找寻先从哪里开始的指导,可以直接跳到最适用于自己的部分;但是,你仍然会发现阅读那些目前并不适用于你日常的部分的文章的价值。
在0到1个SRE时,还没有人被指定为SRE,或者你已经找到了你的第一个SRE,这个角色看起来几乎是孤独的。
在1到10名SRE时,你正在组建一个团队,有知识共享和分工的能力。
在10到100个SRE时,你已经成为一个组织,你需要思考的不仅仅是你所从事的系统,还需要思考如何组织这么多SRE。
“SRE新手” 涵盖了基础性的话题(尽管并不详尽!),对于那些刚刚开始SRE之旅的人来说是很有帮助的,即使是最有经验的SRE,也是一种复习。 “SRE的未来” 包含了一些文章,这些文章探讨了SRE潜在的发展方向,或者是(目前)坐拥时代潮流。
没有必要按照任何特定的顺序阅读本书。你可以从头到尾读一遍。或者,如果你对某个特定的主题感到好奇,可以翻到索引,在那里你可以找到关于该主题的所有文章。把它作为参考指南,或者是灵感的来源–可以在需要的时候提供一个震撼。或者,也许可以建立一个阅读俱乐部,每周一次挑选一篇文章与同事讨论。这就是散文集的魅力所在。我们希望你和我们一样喜欢阅读它们。
结语
SRE系列的文章,有时间我就会翻译一些,希望大家能学到对自己有用的东西。谢谢
翻译不易,转载时请注明原文链接,谢谢
延伸阅读
1.安全关键系统
safety critical system,国内一般翻译成安全关键系统。安全,就是说系统必须能够长时间稳定运行、并且不可以发生故障,同时任何时候都不能对人造成伤害(包括失效的情况下),比如飞机控制系统、电梯系统、汽车自动驾驶系统等等。但是,我们都知道,即使代码测试了很长时间,还是存在失效的风险,所以工程师一般会采用多余度的方法来解决安全的问题。而另外一个词关键,简单说软件必须在规定的时间点,或者是规定的时间范围内做特定的事情。同样以汽车为例,假设汽车发现了行人,如果没有及时进行刹车,那么势必会造成十分严重的后果。
2.Site Reliability Engineering-中文
Site Reliability Engineering-english
3.The Future of Goal-Based Assurance Cases P Bishop, R Bloomfield, and S Guerra, “The future of goal-based assurance cases,” in Proceedings of Workshop on Assurance Cases, Supplemental Volume of the 2004 International Conference on Dependable Systems and Networks, pp. 390–395 (2004).
4.IAEA (International Agency of Atomic Energy) IAEA Nuclear Energy Series, Challenges and Approaches for Selecting, Assessing and Qualifying Commercial Industrial Digital Instrumentation and Control Equipment for Use in Nuclear Power Plant Applications (2020).