前言

从表面上看,本书是关于SLO的。但从更深层次来看,本书是关于人的。后面所概述的所有理论、理念和方法,其实都只是为了让人们的生活变得更轻松、更好。

我们将要讨论很多话题,其中有些是哲学上的,而有些则会用大量的数学和公式。一些将专注于软件,而另一些则专注于流程。但所有这些最终都是关于人的,我想从一个真实的故事开始。

你并不需要完美

在同意写这本书后不久,有一次我在纽约理发。我的发型师曾和我同住在弗吉尼亚州里士满。虽然我们从未见过面,但我们很快意识到以前经常在同一个地方闲逛。我们只花了3min就意识到我们还共同认识许多人。就这样,我们很快熟识了。

Molly是个很棒的发型师,我在理发的时候总是感觉很愉悦。不过这个故事与她离开纽约去底特律开咖啡店之前最后一次帮我理发有关。我对她很信任,以至于4个月来我没有再找其他发型师理发。

在最后一次理发的时候,我告诉她我签约了一本书,她让我告诉她这本书是关于什么的。正如我在第1章的阐述,我用简单的话告诉她:你不可能十全十美,没有人需要你十全十美,努力做到完美代价太高,如果你接受这些事实,那么每个人最终都会更快乐。

她以自己的逸事作为回应。当她刚开始剪头发的时候,她非常专注于确保每次都是完美的,有时候她会花1h来剪一个简单的男士发型,而这个发型本应该花30min。美容学校给了她根深蒂固的观念,一切都要尽可能匀称有度。试图做到完美就会导致理发时间过长,这让后面那些预约的客户感到很不高兴。

最终,随着她的事业的发展,她意识到追求完美对任何人都没有多大帮助。这对她来说压力更大,对每个人来说都更费时,而且事实上并没有改善任何人的生活。她学会了只做一定程度的完美——如果你愿意的话,做到一定程度的完美是可以的。花在每个顾客身上的时间较少,意味着发型并不总是那么匀称有度。这意味着有时从技术上讲会犯错误。但即使她继续努力做到完美,无论如何也可能会犯一些小错误。重要的教训是,当她改变了目标时,没有一个顾客在意她的目标是什么。

这是因为她的技术非常好。她为顾客做了发型,而且做得更多!这么多年来,她给我理发,我从来没有抱怨过。我一直都很满意,即使从她的角度来看,如果能多集中一点注意力或多花一点时间,能做得更好。

她告诉我,在我向她解释这本书的时候,她的标准变得更加宽松了。她在方法上做出这些改变并不是因为她懒惰。她改变了自己的严格程度,是因为她意识到,这实际上让她能够为客户提供更好的体验,也更符合自己的底线。理发时间越短,顾客就越高兴。后来,她得到了更多的小费,因为人们进进出出,不用等太久。店主也更高兴了,因为这样的效率带来了更多的好评。结果我们发现,当不追求完美时,每一个参与其中的人都会更快乐。

从某种程度上来说,这个故事总结了本书的内容:如何通过不追求完美,只确保自己足够好来让人快乐。

向Molly学习。本书中所涉及的主要哲理是她从自己的业务中学到的经验:没有什么事情是一直完美的,事实证明,人们其实并不期望事情是这样的。所以,想想你的客户到底需要从你这里得到什么。它可能与你目前的认知完全不同,或者与你所学的完全不同。然而,每个人都可以通过接受这个事实而最终获得更多的快乐。

对于复杂的计算机系统来说,这个观点可能涉及很多方面。你可能要做非常复杂的数学运算。你可能需要设计和部署全新的服务来提供正确的监测。你可能需要与内部或者外部的用户进行沟通。你可能需要花费很多时间说服领导100%的可靠性不是正确的选择。你可能要做很多很多的事情,我并不是想说所有这些都一定很简单。这里有一整本书供你学习是有原因的。

当给客户做的发型足够好,花钱不多,而且时间合理时,客户就会很高兴。如果你仔细想想,你的计算机服务可能没什么不同。SLO和它附带的所有东西都为你提供了一种准确衡量用户需求的方法,为你提供了强大的数据,以便进行更好的讨论和做出更好的决策,最终可以让每个人的生活变得更轻松。

如何阅读本书

当你开始读本书的时候,我最想让你知道的是,这只是一个模型。基于SLO的可靠性方法正是这样——它们是方法,而不是能立即解决所有问题的灵丹妙药。它们是进行更好的讨论和开发度量的方法,这些度量会让你做出更好的数据驱动决策。但是没有放之四海而皆准的方法。我们在本书中所说的一切只是一个模型。有关如何将事物视为模型的大量资源,请查看由John Allspaw维护的https://www.itsonlyamodel.com/网站。

本书分为三部分。

第一部分 SLO开发

如果你要实施基于SLO的可靠性方法,则本书是你的必读之作。它会概述你需要熟悉的概念、理念和定义,以便你迈出第一步。该部分将阐释SLO的各个组成部分是什么、如何成功地使用它们、为什么它们会起作用,以及如何让它们为你工作。

第二部分 SLO实现

在这里,你将看到我的一些来自各个行业的杰出朋友贡献的内容。虽然第一部分帮助你了解事情是如何运作的,但第二部分更实际。我们将共同帮助你解决应用基于SLO的方法的一些更复杂的方面,包括你需要的数学知识,以获得有意义的SLI和准确的SLO,为你的团队提供有用的告警,并在全公司范围内获得支持。

第三部分 SLO文化

该部分将讨论如何采用基于SLO的方法来确保团队、组织或整个公司的可靠性能够以最有效的方式进行。大多数人认为实现SLO是“你做了些什么”,从某种意义上来说,这只是你核对清单上的一个目标,并不是所有这一切的实际运作方式。基于SLO的方法鼓励以不同的、更准确的方式思考服务的可靠性。该部分确保你可以以尽可能好的方式实现SLO,并使用它们背后的概念来更好地跨团队交流。

此外,最后一章(第17章)将提供一些在本书中最有用的建议,不要错过。

为了充分利用这本书,我真的希望你阅读每一章。第一部分中的几章应该按顺序阅读,但是后两部分的内容可以视情况阅读。你不需要连续阅读每一章,我希望本书在将来能带给你很多参考,因为它是一个让你开始学习SLO的工具。它既是一本初级读物,也是一本能让你反复查阅的工具书。

不管你的处境如何,或者你的目标是什么,我希望你至少能在读完本书时记住Molly教给我们的经验教训。虽然本书主要是关于计算机系统的,但其中的哲理是广泛适用的:你不可能十全十美,也没有人需要你十全十美,努力做到完美代价太高,如果你接受这些事实,那么每个人最终都会更快乐。

排版约定

本书中使用以下排版约定:

斜体(Italic

表示新的术语、URL、电子邮件地址、文件名和文件扩展名。

等宽字体(Constant width)

用于程序清单,以及段落中的程序元素,例如变量名、函数名、数据库、数据类型、环境变量、语句以及关键字。

等宽粗体(Constant width bold

表示应由用户直接输入的命令或其他文本。

等宽斜体(Constant width italic

表示应由用户提供的值或由上下文确定的值替换的文本。

该图示表示提示或建议。

该图示表示一般性说明。

该图示表示警告或注意。

O’Reilly在线学习平台(O’Reilly Online Learning)

40多年来,O’Reilly Media致力于提供技术和商业培训、知识和卓越见解,来帮助众多公司取得成功。

我们拥有独一无二的专家和革新者组成的庞大网络,他们通过图书、文章、会议和我们的在线学习平台分享他们的知识和经验。O’Reilly的在线学习平台允许你按需访问现场培训课程、深入的学习路径、交互式编程环境,以及O’Reilly和200多家其他出版商提供的大量文本和视频资源。有关的更多信息,请访问http://oreilly.com

如何联系我们

对于本书,如果有任何意见或疑问,请按照以下地址联系本书出版商。

美国:

O’Reilly Media,Inc.

1005 Gravenstein Highway North

Sebastopol,CA 95472

中国:

北京市西城区西直门南大街2号成铭大厦C座807室(100035)

奥莱利技术咨询(北京)有限公司

要询问技术问题或对本书提出建议,请发送电子邮件至errata@oreilly.com.cn

本书配套网站https://oreil.ly/Implementing_SLOs上列出了勘误表、示例以及其他信息。

关于书籍、课程、会议和新闻的更多信息,请访问我们的网站http://oreilly.com

我们在Facebook上的地址:http://facebook.com/oreilly

我们在Twitter上的地址:http://twitter.com/oreillymedia

我们在YouTube上的地址:http://www.youtube.com/oreillymedia

致谢

哇,我写了一本书。我要感谢的人多得难以置信。我很可能忘记列出应该出现在本书的一些人,如果真的是这样,那纯属意外。

首先,我要感谢所有参与的作者。与其说我写了一本书,不如说我们一起写了一本书。当我第一次开始考虑写这本书时,我脑海中想到了几个人,让他们写某些主题,大概有两到三章,然后我写剩下的部分。但随着消息的传开,人们开始自告奋勇地加入写作,最后本书有8章是由其他贡献者撰写的。这太神奇了,因为没有什么比让一群人谈论同一个话题更重要的了。

感谢Daria Barteneva、Blake Bisset、Toby Burress、Polina Giralt、Niall Murphy、Eva Parish、Dave Rensin、Ben Sigelman、Harold Treen、Salim Virji和Jaime Woo。由于他们和我一起讲述这个故事,因此读者会从本书收获更多。请在本书的“关于贡献者”部分详细了解他们的相关信息。

然而对一本书有贡献的不仅仅是参与写这本书的人。

我要感谢策划编辑John Devins,感谢他相信本书的理念。感谢本书的内容编辑Corbin Collins和制作编辑Deborah Baker,没有他们的支持和耐心,本书就永远不会出版。

感谢本书的文字编辑Rachel Head,她很有洞察力,而且很全面,她的参与让本书达到了一个全新的高度。

David Blank-Edelman:谢谢你抽出时间来回复一封随机的电子邮件,让我开始了这整个旅程。如果没有你的回应和帮助,本书可能最终会成为一个被遗忘的空想。

Gabe Ochoa:谢谢你鼓励我这么做。2019年夏天,我感叹为什么没有一本关于这个主题的书,我厌倦了一遍又一遍地向他人讲述同样的事情。当我向你提到这件事时,你说我应该写这本书。我刚开始很拒绝,解释说写这本书的人应该是专家,而你的回答是:“你就是专家。”这是我听过的最有意义的话,正因为这句话,我们才出版了这本书。

Eva Parish和John Turner:谢谢你送我的几碗拉面,并在我最需要的时候帮我找到了归宿。

感谢所有的审稿人和其他帮助者!当书稿开始寄给O’Reilly后,我收到了以下回信:

你们太棒了。难以置信我竟沦落到如此挑剔的地步。写得很好,质量控制也很细致。超级让人耳目一新。

你们太棒了,我感谢你们每一个人。感谢William Banfield、Abby Bangser、Betsy Beyer、Danyel Fisher、Liz Fong-Jones、Heinrich Hartmann、Marke Howell、Matt LeMay、Matthias Loibl、Christian Long、Ben Lutch、Charity Majors、Ben Picolo、Isobel Redelmeier、John Reese、Shelby Spees、Daniel Spoonhower、Emil Stolarsky、Tim Tischler、Amy Tobey和Scott Wilson。你们中有些人我认识很久了,有些人是因为本书认识的,但我现在把你们每个人都看作我的朋友。

如果我不把你们列出来我就太失职了……

Jacob Scott,你对本书的评论几乎比任何人都多,而且是带着专业的好奇心和怀疑态度来做的。谢谢你让我们把本书写得更好,我很高兴我们的观点并不总是一致。

Štěpán Davidovič,你在我们最需要你的时候出现了,好几章都归功于你的非凡才能。

Kristina Bennett,你是一个绝对的摇滚明星,在正确的时刻介入,你的评论写得太好了。我怀念和你一起工作的日子,如果没有你,本书也不会有今天。你帮我开创了一切,也帮我完成了一切。谢谢你!

致Molly van Tassel:谢谢你允许我在前言中分享你的故事。我怀念你为我剪发。

致Denise Yu:感谢你在第12章中提供的令人惊叹的维那犬图片。

致Pizzachat:谢谢你所做的一切。每一天你都让我感受到了踏实和爱。

致Prodigy Coffee:感谢你的所有咖啡、微笑,以及对本书进展情况的关切。你的鼓励给了我很大的帮助。

致The Gate and Skylark:本书的很多内容都写在你们的墙上,一边喝着你们的饮料一边写的。很遗憾,我没能以开始的方式完成它,但还是要感谢你们。另外,感谢Lucey’s Lounge对我的鼓励,以及疫情到来后提供的外带玛格丽特酒。

致Jimmy Eat World:20多年来,我一直在重复播放Clarity,我就是这样完成了所有的写作。谢谢你录制了我最喜欢的专辑,它深深地烙进了我的灵魂。

致Tanya Reilly:感谢你在我加入Google的第一天陪伴我,感谢你在我离开Google的最后一天陪伴我,感谢你始终是SRE和一个好人的典范,感谢你鼓励我将更多的想法投入更广阔的世界中。

致Niall Murphy:我不知道该怎么感谢你才好。你对本书的贡献比任何人都重要。你是最好的导师和朋友。

致我的母亲、兄弟姐妹,还有其他的家人:感谢你们在我逼你们读我的“书”时像对待一个孩子一样纵容我,我一直想成为一名作家,我做到了。

致六岁时的我,我知道这不是一个充满了龙和魔法的幻想故事,但是,我们做到了!我们毕竟成了作者!

最后,也是最重要的一点,感谢我的妻子Jen和我的救援犬Taco。你们是我的灵魂伴侣,是我写本书的理由。我爱你们。