97 Things Every SRE Should Know-43
Table of Contents
What Machines Do Well
机器擅长什么
构建自动化的一个常见方法是让一个人来执行手动流程,捕捉它,然后创建一个脚本来再现人的工作流程。这似乎是合理的——那么它有什么问题呢?这种方法没有考虑到哪些步骤是只有人类才能做出的决定,也没有意识到计算机可能会做得更好。
了解人类和机器擅长什么对于建立良好的自动化是至关重要的。
另一个选择是重新设计这个步骤,使其不需要人。自动化工程可能需要重新审视将要自动化的系统的设计和接口,因为有一些设计原则可以使机器更容易做出决定和行动。如果自动化的系统不遵守这些原则,那么自动化很可能是脆弱的——而脆弱的自动化需要人的监督。
幂等性(Idempotency)是一种允许操作重复而不产生副作用的属性,是自动化的关键。如果某件事情失败或未能及时返回成功,自动化可以重试而不产生后果。这是一个允许自动化具有弹性的设计原则。如果可能的话,我们应该让自动化调用的命令和服务是幂等的。
一致性和规范的错误报告是系统的另一个特性,可以实现更好的自动化。如果人类必须进行深入的故障排除或解释字符串,以理解在某些事情失败时发生的情况,那么自动化将失败,并需要人工干预。自动化还应该避免依赖于解析或匹配描述性字符串,因为它会产生风险,如果这些字符串更改或添加类似的字符串,事情就会中断。还应考虑到自动化系统需要扩展的能力。为人机交互而构建的工具和API(应用程序编程接口)可能跟不上机器的执行速度。底层系统可能需要进行负载测试和改进,以满足自动化的需求。
自动化通常是由其他自动化组成的。我们应该期望我们的自动化有一天成为一个更大的系统的一部分。这意味着我们建立的自动化应该满足上述相同的属性。我们应该使自动化是幂等的。我们应该让它使用一致的和规范的错误报告,并且我们应该确保它可以扩展。我们还应该有测试和文档。我们应该监控它,就像系统的其他部分一样。
我们越是像我们开发的其他软件一样实现自动化——精心设计、测试、监控和记录——它就越成为我们可以安全依赖的东西。
我们如何构建本书的结构
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系列的文章,有时间我就会翻译一些,希望大家能学到对自己有用的东西。谢谢
翻译不易,转载时请注明原文链接,谢谢