Table of Contents

There Is No Magic

没有什么魔法

当使用计算机工作时,很容易被它的复杂性所淹没。你写一些代码,通过编译器运行,然后在你的机器上执行。这似乎就像魔法一样。

但是,当问题发生和系统发生故障时,重要的是要记住,没有什么魔法。我们工作的这些系统是由像你这样的人类设计和构建的,这意味着它们也可以被像你这样的人类理解。每一步,从屏幕上的界面到你的处理器所构建的原子,都有人考虑过系统应该如何运作。

我倾向于同时在两个层面上工作:我正在编写的代码和我正在使用的底层代码。我在正在进行的工作和Ruby gem、Go编译器的源代码之间来回切换,如果源代码不可用,我甚至会使用反汇编。这给了我关于依赖的上下文:是否有注释解释奇怪的行为?我是否应该使用代码中提到的不同函数?也许是文档中没有立即明确的参数,甚至是一个明显的bug?

我觉得这种上下文切换是一种超能力:软件开发者的X光护目镜。你可以多次深入观察:从你的代码,到运行它的虚拟机,到它所写的C语言,再到最后运行的汇编。即使这样,你也可以阅读英特尔x86手册,试图弄清楚机器中发生了什么,各种指令是如何编码的。软件系统的本质是分形的–每个组件本身就是一个世界。

当然,这些东西都是由我们这样的人创造的,并不意味着一个人就能理解所有的东西。我们站在千千万万巨人的肩膀上,几千年的时间被投入到系统中,才有了今天的成就。

要想深入了解从原子到图形用户界面的每一步,需要很多辈子的时间,这可能会让人望而生畏,但这并不意味着我们不应该尝试。

当你认为我们构建软件的组件是你无法理解或改变的神秘经典时,你会做出不符合实际情况的决策。相反,你需要更加清醒的头脑。您需要处理底层系统的怪癖,并利用它们来为你服务,而不是将它们掩盖起来。

所以,下次当你使用的库做一些意想不到的事情时,多走一步,弹开引擎盖。戳戳内部,看看周围,然后做一些改变。你会惊喜地发现一个全新的世界等待你去探索和改进。

我们如何构建本书的结构

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