Table of Contents

Infrastructure: It’s Where the Power Is

基础设施:权利所在

“为什么是基础设施,为什么是ops(运维工程师)?” 多年前,一位同事问我。那是一位软件工程师,在经历了一次特别惨烈的on-call(随时待命)的轮岗后,潜台词很清楚:我是被骗来做这个职业选择的–被拴在传呼机上的牺牲,成为最后的调试员的压力?谁会选择这种生活?

我不失时机地回答道。“因为那是权力的所在。” 然后我惊讶地停了下来,听到自己说的话。我们不习惯把基础设施当成一个强大的角色。CS(计算机科学)部门、媒体和大众的想象都围绕着算法和数据结构,是代码的英勇作者和功能的托运人。

对业务人员来说,运维(ops)是一个成本中心,一个不幸的必需品。这是历史的产物,运维(ops)应该被看作是开发的阴与阳,团结一致,不可分割,绝不是 “别人的工作” 。Biz是为什么,dev是什么,运维(ops)是怎么做。无论你的公司有一个人还是一千个人。

代码是短暂的。新功能上线的同时,老功能下线了。在现代开发环境中制作产品,给我的感觉就像在天空中搭建云端城堡:在其他抽象的概念上建立抽象的概念,在脑海中建立起这个丰富的精神世界。

软件工程师是现代的魔术师,他们制作出难以想象的复杂法术和咒语,从稻草中编造出黄金,几乎凭空产生巨大的实际价值。但当这些咒语出错时,会发生什么呢?

在我做系统管理员的第一份工作的几年后,我开始注意到一个模式,当非常资深的工程师会来找我和其他运维人员。他们比我更了解他们的代码,但是当代码在生产中停止工作时,他们会惊慌失措。为什么它不能像昨天那样工作?是什么改变了?就好像生产是一个陌生的国度,他们需要我作为翻译陪伴他们。

我总是喜欢那些能把“它太慢了” 变成 “查询规划器正在做多个全表扫描,因为它使用了错误的复合索引” 的人。我们任何人都能看出它的速度很慢;解释下一个层次的原因是有趣的。

软件可以看起来像任何神秘主义的仪式一样神秘和玄妙,但基础设施工程师(infrastructure engineer)有一个工具魔法书,可以从每个可能的角度无情地检查仪式。追踪库调用,扫描端口,检查系统调用,转储数据包。

基础设施工具提醒我们,软件的运行是按照科学现实主义的规律进行的。如果有足够的毅力去追寻,每一个谜团都会产生答案。要做到这一点,就需要在出错时有一种不畏惧世界的无畏精神。越是难缠、越是细微的bug,他们越是兴趣盎然、干劲十足。基础设施工程师从来没有见过一个我们信任的抽象概念能够按照设计工作。越是宏大的诉求,我们越是悲观。

我们与其说是愤世嫉俗,不如说是悲观地确信一切都会失败,而拯救世界的责任将落在我们身上,除了一个回形针和一个烙铁,我们什么都没有。我们强迫性地偷看盖子下面的东西,看看以猴子打补丁的名义在做什么可怕的事情。

当我们和其他基础设施工程师聚在一起喝啤酒的时候,我们会夸耀我们所看到的故障,我们所发现的bug,以及你不会相信上个假期发生的故事。

懂得自给自足,拥有工具和无畏的精神,在一层又一层的抽象中追寻答案,是一种权利。每一个技术堆的底层,都坐拥着光速,这是不能乱来的,也是不能模拟的。

我们如何构建本书的结构

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. infrastructure engineer是运维工程师的一个分支