本篇文章3290字,读完约8分钟

这篇文章由《科学技术新知》编辑,略有增删。

有一天,你需要使用谷歌,但谷歌是不可用的——你最后一次遇到这种情况是什么时候?

Google是如何做到从不宕机的?

很有可能这种情况从未发生过。事实上,有时谷歌不被使用是因为网络连接中断;但是谷歌的基本在线服务——从搜索引擎到gmail再到谷歌文档——几乎总是触手可及。根据谷歌的官方数据,2015年,其谷歌应用套件有99.97%的时间是可用的。也许我们认为这是理所当然的,但它确实是一个伟大的事实;全世界数十亿谷歌用户似乎从未停下来,冷静地思考谷歌是如何处理如此激动人心的事情的。

Google是如何做到从不宕机的?

用软件代替人工

谷歌用这三个词来解释这个问题:网站可靠性工程。也许这三个词听起来并不特别性感,但它们确实是谷歌(其名字听起来更不性感)十年前一直坚持的核心理念。这个想法很难用一两句话解释清楚,但可以用一个中心思想来概括:让代码农民来操作网络服务,而不是让专门从事网络服务的it专业人员来操作。如果实现了这个想法,代码农民将开发一个不需要人工干预的工具来帮助完成操作(这里的操作主要是指维护服务的稳定性和性能)。

Google是如何做到从不宕机的?

“我们以这种方式构建这样一个团队:每个人都厌倦了自己完成任务,而是通过编写软件来取代以前需要手动完成的工作。”一位名叫本·特雷诺·斯洛斯的谷歌员工在一篇文章中写道。

Google是如何做到从不宕机的?

对于硅谷的许多人来说,这似乎已经成为一种常识;从亚马逊到box,这种方法已经被整个技术圈所采用。人们称之为devops(开发加操作)模式,这意味着通过一些努力将软件开发人员与系统管理员联系起来。然而,以厨师和木偶为代表,自从devops模式逐渐从谷歌的sre衍生以来,发生了巨大的变化。只是在过去的十年里,谷歌一直对sre保持沉默,但它过去在处理大规模和高效的网络运营时也是如此。

Google是如何做到从不宕机的?

然而,谷歌已经进入了一个新的阶段,它更愿意讨论sre相关的问题。(这主要是因为谷歌希望推广自己的云服务,以便外部公司可以使用自己的软件服务。不仅如此,谷歌还写了一本书来讨论sre问题。

Google是如何做到从不宕机的?

这本书的题目是网站可靠性工程。这本书刚刚由o'reilly出版,这是一家专门从事科技书籍的出版公司,sloss的论文被认为是这本书的第一章。如果你对德文普斯感兴趣,那么这本书是必读的;即使你不感兴趣,这本书的开头--前言、导言和第一章--也足以让我们了解谷歌这个世界上最大的网络帝国的驱动方式。

Google是如何做到从不宕机的?

对许多技术公司来说——事实上,他们也可以是技术圈之外的人——系统管理(或操作,无论你怎么称呼它)是计算机技术的收尾工作,也是最烦人的方面之一。然而,外界所知的负责谷歌内部“不间断运营”的副总裁斯洛斯扭转了这一问题,他认为网站的可靠性“是所有产品最基本的功能”。毕竟,“如果一个系统不能工作,那么它就毫无用处。”

Google是如何做到从不宕机的?

黑格尔的对立统一理论

斯洛斯是sre的起源。当谷歌在他早年聘请他负责公司的运营项目时,他创建了这个项目。他说:“当你让一个软件工程师设计一个操作团队时,sre就出现了。”“我设计并管理这个团队;这个团队的工作方式就好像我自己就是一个sre一样。”

Google是如何做到从不宕机的?

托德·安德伍德目前是谷歌的sre总监;他认为谷歌雇佣像sloss这样的代码农民是非常自然的。“当谷歌还处于早期开发阶段时,就已经有软件工程师清楚地意识到哪些地方可能出错,以及如何解决这些问题,但他们都不愿意亲自处理这些事情。”

Google是如何做到从不宕机的?

这实际上是一个麻烦。但是大厨首席技术官亚当·雅各布(adam jacob)也认为,如果你想成长为一家大公司,就应该做出这样的改变。“将软件开发和实际操作联系起来是非常自然的事情,你不能自然地将两者分开;尤其是当你从历史的角度看待这个问题时,你可能会更清楚这一点。”

Google是如何做到从不宕机的?

考虑到在传统意义上,开发和运营是两个完全不同的层面,你会发现这种转变非常有趣。开发者致力于写一个新软件,然后修改它,最后尽快把软件推向大众用户;操作者保证不会出错,最好的方法是尽量减少变化。安德伍德说:“这些原本都是无关紧要的目标。”“但只是开玩笑,当你把开发和运营联系起来时,你就开始消除它们之间的竞争目标。”。

Google是如何做到从不宕机的?

安德伍德称之为“黑格尔的对立统一理论”;但是当他这么说的时候,没有人买它。他打趣道:“人们不再读黑格尔了。”然而,这种描述一针见血。一旦这一切准备就绪,谷歌就加快了将所有好的想法融入这种模式的过程。

Google是如何做到从不宕机的?

发展与经营的平衡

一个重要的想法是,谷歌不需要100%的正常运行时间来减少开发和运营之间的冲突。正如斯洛斯在书中所写,事实上,没有必要确保网络服务100%可用。用户无法真正区分100%和99.999%(事实上,他们的笔记本电脑、无线网络和电源已经断开超过0.001%)。如果你将一个合理的在线时间比率设置在100%误差预算以下,那么你将有足够的时间进行修改并完成调试。

Google是如何做到从不宕机的?

“错误预算的应用消除了开发工作和恢复工作之间的冲突诱因”,sloss说,“一次中断不再是坏事。”它存在于创新过程中的预期范围内;这样,开发部门和sre部门都可以毫无畏惧地解决这个问题。”

Google是如何做到从不宕机的?

与此同时,谷歌还引入了一些相应的规定,以确保sre不会演变成老式的系统管理。原则上,sre不允许在传统操作上花费超过50%的时间(这与编程相冲突)。如果在一个sre团队中,操作的优先性已经超过了开发,谷歌将部署一些操作人员到普通的软件开发工作中。sloss说:“有意识地调整开发和运营之间的平衡,可以确保SREs有足够的空时间投资于创新和自动化项目。”“当然,他们也要听取运营部的意见。”

Google是如何做到从不宕机的?

厨师公司的雅各布认为这里提到的50%的比例并不重要,但他喜欢这种态度。他说,“那是生意,总要有人来处理经营工作;而且手术几乎没完没了,所以你必须给他们一顶帽子是可以理解的。”

Google是如何做到从不宕机的?

在雇佣sre时,谷歌甚至制定了严格的规定。在招聘的人员中,50%到60%的人将像所有其他谷歌工程师一样通过严格的考试,其余的人需要具备85%到99%的谷歌工程师技能,加上一些特别适用于软件工程师的技能,但大多数软件工程师不具备——例如,他们熟悉unix操作系统和硬件网络协议。所有这些都是为了确保开发和运营之间的适当平衡。

Google是如何做到从不宕机的?

Sre的野心

从许多方面来看,这是一个全新的概念。但是在他的书中,当他们试图描述这个想法时,谷歌团队选择了一个老例子。谷歌sre的精神先驱是麻省理工学院的一位名叫玛格丽特·汉密尔顿的程序员,她在20世纪60年代为阿波罗飞船登月编写了程序。正如哈米顿自己所说,从阿波罗计划中衍生出来的文化的一部分是向每个人和每件事学习,包括那些似乎什么也没学到的人。

Google是如何做到从不宕机的?

虽然汉密尔顿是一个代码农民,她在行动中发挥了重要作用。为了证明这一点,这本书讲述了一个故事:她经常带着女儿劳伦去计算机实验室。一天,劳伦碰巧按了一个按钮,然后将阿波罗发射前的程序植入运行“发射后场景”程序的计算机中。

Google是如何做到从不宕机的?

这使得整个系统陷入困境;汉密尔顿试图在系统中添加一个错误监控代码,以便在实际飞行中防止这种错误。她的老板拒绝了整个想法,认为宇航员永远不会犯这样的错误;但是在阿波罗8号中,宇航员确实犯了这样一个错误。幸运的是,汉密尔顿在系统文档中添加了一个变通方法。在后续工作中,她添加了这个错误监控代码。

Google是如何做到从不宕机的?

如果你来找我说“它会崩溃”,那是没有用的;安德伍德说:“但如果你说‘它会崩溃,让我告诉你如何解决它’,那你就太棒了。”“在我们的案例中,会有人知道将会出现一些问题以及问题在哪里,并且能够找到解决方案来防止问题的发生。”

Google是如何做到从不宕机的?

这是devops,或者用谷歌的话说,sre。这三个字听起来没什么,但它们确实是一个非常强大的想法。通过它,谷歌诞生了,但是对于一些像安德伍德这样有哲学思想的人来说,他们有更大的野心。在他们看来,行动本身比发展更快。

Google是如何做到从不宕机的?

“我们希望在很长一段时间后,没有人会再次操作。”安德伍德这么说。

这篇文章由《科学技术新知》编辑,略有增删。

*本文是作者的独立观点,并不代表老虎嗅探网络的立场

本文由《新科技知识》授权的老虎嗅探网发表,老虎嗅探网编辑。转载这篇文章必须得到作者的批准,并请附上来源(老虎嗅探网络)和本页的链接。原链接户县/文章/145043/1

标题:Google是如何做到从不宕机的?

地址:http://www.3mta.com/xlxw/5846.html