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系列的文章,有时间我就会翻译一些,希望大家能学到对自己有用的东西。谢谢

翻译不易,转载时请注明原文链接,谢谢