本帖最后由 monicazhang 于 2020-12-18 16:23 编辑
前言:
一、首先我们来了解一下SRE
有一种说法,“一个系统如果已经开发完成,部署在生产环境上,则它就是稳定的,就不需要那么多工程师对其花费精力去优化、维护。”
从当下来看,这个说法显然不对。
那么,Google 是怎么认为的?
我们认为如果软件工程主要专注于设计和构建软件系统,那么应该有另一种职业专注于整个系统的生命周期管理。
从其设计一直到部署,历经不断改进,最好到退役。这样一种职业必须具有非常广泛的技能,但是和其他职业的专注点都不同。Google将这个职位称为站点可靠性工程师(SRE,Site Reliability Engineering) 细致的讲一下SRE
首先,也是最重要的一点,SRE 是工程师。SRE使用计算机科学和软件工程手段来设计和研发大型、分布式计算机软件系统。 有时候,SRE和产品研发团队共同工作,其他时候我们需要开发这些系统的额外组件。如备份系统和负载均衡系统等。理想情况下,同时推进这些组件在多个项目中的复用。 还有的时候,我们的任务是想出各种各样的办法用现在的组件解决新的问题。 其次,SRE的关注焦点在于可靠性。Ben Treynor Sloss,Google负载724运维的副总裁,SRE名称的发明者,宣称可靠性应该是任何产品设计中最基本的概念:*任何一个系统如果没有人能够稳定地使用,就没有存在意义。 因此,SRE专注于对其负责的软件系统架构设计、运维流程的不断优化,让这些大型软件系统运行得更可靠,扩展性更好,能更有效的利用资源。 但SRE比不是无止境地追求完美,当一个系统已经“足够可靠”时,SRE通常将精力投入到研发新的功能和创造新的产品中。 最后,SRE的主要工作是运维在分布式集群管理系统上运行具体业务服务(service)。不论是遍布全球的存储服务,还是亿万用户赖以工作的E-mail服务,还是Google最初的Web搜索服务。 SRE中“S”最开始指代 的运维服务,因为SRE的第一个工作就是维持网站的正常运转。随着时间推移,SRE接管了Google内部绝大部分产品系统,包括Google Cloud Platform 这类开发者平台,也包括内部的一些非网站类的基础设施系统,如Bigtable
二、据说,她是史上第一个SRE ?
NASA史上著名的女程序员,Margaret Hamilton。
在《Google SRE》这本书中,Google 选择了Margaret,MIT教授为史上第一个SRE,她参与了阿波罗计划的软件开发工作。
Google 同学说,她具有现代SRE的一切特性。而Margaret又长期供职于NASA.
看样子第一个SRE的产生,和NASA的阿波罗(Apollo)计划有关?
三、事情是这样的……
在Apollo 7 飞船研发期间的某一天(根据历史考证,为1968年某一天),Margaret带着她的小女儿Lauren一起来到公司。
在Margaret忙着和组员们在大型计算机上运行飞行模拟测试的时候,Lauren偷偷地按下了控制台的 DSKY 键。
整个模拟程序出乎意料地崩溃,导致整个火箭发射程序意外终止。
Margaret和组员调试后发现,原来Lauren意外触发了P01这段子程序的执行,导致整个模拟过程的失败。
P01程序是起飞前调试程序,执行时会删除现存的导航信息,如果在火箭飞行过程中执行此程序,计算机将无法继续维持火箭航线,后果将是灾难性的。
凭借着SRE的直觉,Margaret为项目组提交了一个软件改动,申请在飞行程序中增加一项特殊状态检查,以避免飞行员在飞行过程中意外出发P01程序。
但不幸的是,NASA管理层认为,这项错误发生的可能性太小了,根本不值得为此添加这项修改。
于是Margaret没有能够成功提交这项软件修改。只能在火箭飞行手册中添加一段文字,写到:“飞行过程中,请勿触发P01 程序。”
此段文字在当时被很多NASA工程师认为是可笑又没必要的,所以人都认为宇航员经过长时间专业训练,绝不会犯这种低级错误。
当在Apollo 8 执行飞行任务时。三名宇航员执行长达四天的飞行任务途中,其中一人意外出触发了P01。 更巧的是,当天正好是圣诞节,大部分工程师都去休假了。可想而知,那时 NASA 一片混乱。
这种人命关天的时刻,如果不能及时解决,三名宇航员将永远无法安全返回了。
所幸,当时Margaret的飞行手册更新中恰恰提到了这种情形,并且提供重新上传数据以及恢复执行的有效办法,在有限的时间内解决了问题,任务可以继续进行。Margaret曾经说过:
“无论对一个软件系统运行原理掌握得多么透彻,也不能阻止人犯意外错误。”
这句话分明就是SRE的真谛啊。。。怎么实现真正的可靠性?
明明可以靠脸吃饭,她却要靠才华
那个年代并不鼓励女性参与高强度的技术工作。但是她却坚持选择了一条非典型的程序员进化之路。她一半是对科学的如痴如醉,另一半则是作为一个普通女性对于家庭的依恋。 她依旧日复一日地读书、做研究、顺其自然地嫁人,还打算要个孩子。她遵循着一般女性的足迹,虽然比当时的家庭主妇显得更 「高知」了一些。
那个时代,晶体管计算机还没发展完善,编程用的是汇编语言,计算机世界缺乏统一和规范。阿波罗飞船上包含着许多不同的计算机模块,为了给不同的模块编程,少说得学三五套汇编语言。玛格丽特作为项目的领导,基本每套汇编语言都需要精通,其复杂程度可想而知。
人类实现的第一个卡尔曼滤波器(线性系统的最优估计观测器)是在阿波罗计划中实现的。作为首席工程师的玛格丽特也参与了讨论和开发,代码一定也在这一摞厚厚的纸当中。
Margaret在担任 MIT 仪器实验室软件工程部的主管,帮助该实验室开发阿波罗计划中航天器搭载的飞行软件,其编写的程序都以最大程度防止崩溃为目的,从而防止了阿波罗 11 号登月计划中缀。
基于阿波罗计划中这些工作经历,在2003 年,Margaret获得 NASA 杰出太空行动奖,同时也被世人评为最伟大的女程序员。
虽然事故已经过去几十年,但是工程师们一定不会对此感到陌生,类似的场景总是在不断重演。
希望大家以史为鉴,只有靠着对细节不懈关注,做好充足的灾难预案和准备工作,时刻警惕着,不放过一切机会去避免灾难发生。 这就是SRE最重要的理念!
|