首页 > 其他分享 >SRE Google 运维解密读书笔记一:SRE 方法论概述

SRE Google 运维解密读书笔记一:SRE 方法论概述

时间:2023-05-17 14:45:26浏览次数:45  
标签:Google 运维 读书笔记 SRE 研发 SLO 团队

SRE Google 运维解密,是 SRE 领域的启蒙之作,讲述了 Google 的 SRE 实践,SRE 就是从 Google 流传出来的。本文是读书笔记,第一篇,概述 SRE 方法论。帮大家把书读薄,当然,也加入了一些我的个人理解,希望对你有帮助。

为何需要 SRE

传统的 sysadmin 的方式,偏手工运维,机器越多所需运维工程师越多,对于 Google 的体量(毛估估现在大概有几百万台机器)和增长速度,成本(人工成本、管理成本等)不可承受。

因为目标不同、技术背景不同、对可靠性理解不同,传统运维和产品研发团队之间,很容易形成巨大的鸿沟,有时会上升到部门之间的信任和尊重层面。比如拿变更举例,研发部门想要:“随时随地发布新功能,没有任何阻拦”,传统的运维团队想要的则是:“一旦一个东西在生产环境中正常工作了,就不要再做任何改动”。这样的两个团队,是没法很好的合作的,尤其是在 Google 的体量和增速下,得改。解法就是 SRE。

Google SRE 概述

Google SRE 的创始人是 Benjamin Treynor Sloss,研发出身,2003 年加入 Google,被任命领导一个 7 人小组(现在,SRE 团队已经上千人了),负责“生产环境维护”。Google 当时的增速是非常快的,如果按照传统的玩法,招人的速度完全无法匹配机器增速,怎么做这个“生产环境维护”的工作呢?

Benjamin Treynor 是资深研发,自然就会考虑用软件工程的手段来解决遇到的各类问题,所以 Google SRE 首先,得具备研发技能,用研发技能来解决各类生产维护重复工作。他们具备如下特质:

  • 对重复性、手工性的操作有天然的排斥感
  • 有足够的技术能力快速开发出软件系统以替代手工操作

但是,做过运维的人都知道,总有一些日常运维的工作无法避免,有时根本没时间写代码,比如处理工单、手工操作,尤其是在基础设施平台工程不完备的情况下。这可咋整?

Google 提出了 50% 的原则,即日常运维的时间不能超过 50%,即需要至少拿出一半以上的时间来做工程研发,釜底抽薪,用工程手段解决手工操作。那有的时候,日常运维工作繁重,超过了 50% 时间分配原则,怎么办?把相关工作交给产品研发团队的 leader,让他来帮忙消化掉一部分工作。研发 leader 一看,运维侧的工作好多啊,是不是我们的软件不够鲁棒、很多应该自动处理的逻辑没有自动处理,就会去改进,形成正向循环。当然,这个机制需要公司管理层强力推动。如果遇到一个研发团队说,运维的活你们运维干不完,干不完可以招人啊,管理层也不作为,就完了。

DevOps 还是 SRE

Benjamin Treynor 认为,SRE 是 DevOps 模型在 Google 的具体实践,带有一些特别的扩展

SRE 技能组成

实际的人员组织来看, SRE 团队分两类人,一类就是纯研发,一类是具备八九成研发能力,同时还懂一些 UNIX 知识、网络知识。如果国内运维团队想要转型为 SRE 组织,就这个技能要求就很难达成(其实除了 Google,其他国外的公司也很难做到)。咋办?

国内的组织的做法:一个人能力有限,弄个团队来顶上,团队里既有只懂研发的人,又有只懂网络的人,又有只懂操作系统的人,应该就可以了吧。个人的看法是,这个做法基本是对的,但是不完全够。因为虽然是一个团队,但是不同的小组或个人的知识仍然是无法完全共享的,这使得在做工程决策、实践的时候,没法做到像 Google SRE 那样如臂指使。

稍微改进一下的做法是:团队里仍然要招聘一两个 SRE 专家,姑且称为 SRE COE,既懂开发又懂运维的那种,统筹所有工作,然后那些单方面的技能人才,辅助 SRE COE 来完成工作,相对会更靠谱一些。

SRE 方法论

SRE 团队的职责:可用性改进,廷迟优化,性能优化,效率优化,变更管理,监控,紧急事务处理以及容量规划与管理。要转型的团队注意了,用软件工程的手段达成以上目标,就说明你们团队转型成功了:)

在保障服务 SLO 的前提下最大化迭代速度

变更是万恶之源,生产环境中的故障,大概有 70% 都是变更引起的。屁股决定脑袋,运维团队就希望尽量别有变更,研发团队要上线新 feature,那就需要频繁变更,咋整?Google 提出了 “错误预算” 的理念。

产品首先得确定 SLO,比如某个服务的季度 SLO 目标是 99.99%,那不可用的 Quota 预算就是 0.01%,每个月按照 30 天来算,一个季度 90 天,允许的不可用分钟数是:

90 * 24 * 60 * 0.01% = 12.96 分钟 ≈ 13 分钟

只要服务的季度不可用时长低于 13 分钟,随便折腾,但是一旦超过了 13 分钟,说明 Quota 用光了,就不能随意上线了,非得要上线,行么?也行,VP 审核通过吧。那意思就是:你看这个研发团队,上线老是出问题,不可信赖,现在又要上线了,SRE 是不准备放行了,VP 大佬来决策吧,VP 大佬也非要允许上,那就上。

咋样,这个方法听着不错吧。贵司可以试试。这里要注意,服务要想减少故障时长,是需要有良好的基础设施保障的,比如研发上线发现问题,想回滚,结果部署系统不可靠,这找谁说理去。所以,错误预算这个方法可以用,但是不同的公司,SLO 的阈值得谨慎制定,没有金刚钻不揽瓷器活,基础设施很烂,SLO 就定低点吧。

SLO 谁来定?

SLO 应该是业务来定,但是 SRE 要提供一些信息,告诉业务达成什么样的 SLO 要付出什么样的成本,业务有了这些信息了,再来确定制定什么样的 SLO。比如某个业务不盈利,就是个实验性质的业务,SLO 低一点很正常,具体要看业务本身的决策,所以 SLO 的制定需要业务拍板。

监控系统

核心要学习的是:每个需要通知到人的告警,必须对应 Runbook,即预案手册。如果一个告警发出来,没有人响应,没有相应的动作执行,这个告警就是无效的。Runbook 链接一般配置在告警规则里,比如 Grafana、Nightingale、Datadog 的告警规则配置,都支持这么干。告警规则的 Runbook 预置率是一个很好的告警治理指标。

有些告警可以不用立即处理,但是至少得创建个工单留待后续处理。

应急事件处理

提前准备好 Runbook,即预案手册,比即兴发挥,效果好 3 倍。

变更管理

要自动化!要自动化!要自动化!自动化完成以下项目:

  • 采用渐进式发布机制
  • 有良好的监控系统,可以快速发现问题
  • 当问题发生时,可以安全回滚

需求预测和容量规划

要考虑的点包括:

  • 自然增量:随着用户自然增长带来的增量
  • 非自然增量:比如市场活动
  • 周期性压测:这点很关键,这点很关键,这点很关键,通过压测才知道你的系统瓶颈在哪个微服务,才能把系统原始资源和业务容量对应起来

资源部署

扩容需要部署资源,变更也需要,这就是 Borg 的作用,其他公司可以采用类似 Kubernetes 的方案。不管使用什么方案,能够快速、正确的完成部署,最大化资源使用,就可以了。

效率与性能

SRE 也需要关注服务性能,提升了性能,其实就是提高了资源利用效率,同样的硬件可以支撑更大量的客户。NetFlix 有专门的 Performance 工程师,Google 的话 SRE 一并干了这个事情。

小结

SRE 团队的职责:可用性改进,廷迟优化,性能优化,效率优化,变更管理,监控,紧急事务处理以及容量规划与管理。我们要用软件工程的思维来解决这些问题,完活。留个问题:

SRE 要不要修改业务代码?

比如增加一些监控埋点,或者优化一个算法提升软件性能,或者换了一个更合理的存储?欢迎大家留言讨论 :)

标签:Google,运维,读书笔记,SRE,研发,SLO,团队
From: https://www.cnblogs.com/ulricqin/p/17408672.html

相关文章

  • googlebenchmark
    pref原理及效率计算:top--PR/NI(priority/nice)/proc/stat其他fs文件信息.gbenchmark配置及使用:安装方式(注:***RPP使用cmake方式):cmake方式:设计框架:othertools.pref原理及效率计算:linux官方参考blog参考top--PR/NI(priority/nice)priority是比较好理解的......
  • Google Ajaxslt 使用
    类似插件:jquery.xslt[url]http://hyperthunk.github.io/jquery.xslt/[/url]jqueryxsltplugin:[url]http://www.jongma.org/webtools/jquery/xslt/[/url][url]http://book.51cto.com/art/200805/72637.htm[/url]a.xml<?xmlversion="1.0&quo......
  • 几个主要搜索引擎(Google和百度、雅虎)的站内搜索代码
    几个主要搜索引擎(Google和百度、雅虎)的站内搜索代码,使用时只需要将代码里的"www.williamlong.info"替换成你的网址即可。<!--Google站内搜索开始--><formmethod=getaction="http://www.google.com/search"><inputtype=textname=q><inputtype=submitname=btnGvalue="......
  • 怎么样用 Google Analytics 区分 Google Shopping 页的流量
    我们知道GoogleShopping收费以来,GoogleSearch页的PLA广告和GoogleShopping页的流量归在了付费搜索(Medium是CPC)流量里面了(收费以前从GoogleShopping页和GoogleSearch页自然结果里产品信息到达网站的流量都归于自然流量,Medium是Organic),因此,现在我们要想评估这2个......
  • google-java-format 插件
    GoogleJavaStyleGuidegoogle-java-formatgoogle-java-format插件可用于重新格式化Java源代码,。启用后,它将替换通常的ReformatCode操作。该操作可以通过Code->ReformatCode触发,也可以使用Ctrl+Alt+L触发。IDEA中使用google-java-format插件在File->Settings->Pl......
  • 读书笔记
    团队模型:在MSF团队模型中,每一个部分都是非常重要的,任何一个角色无法实现其目标都会危及整个项目。这也和微软内部的理念相契合,即:每个成员之间都是平等的。这样的团队中,需要的是直言不讳,例如为了团队方案的争吵、因为产品质量而不赞同增加功能,每个人都参与设......
  • Google I/O 2023
    视频   产品框架  思维导图......
  • Google I/O 2023发布大语言模型PaLM2
    ·PaLM2模型提供了不同规模的四个版本,其中轻量级的Gecko模型可以在移动设备上运行,速度非常快,不联网也能在设备上运行。谷歌还推出了两个专业领域大模型,其中,Med-PaLM2能回答各种医学问题,是首个在美国医疗执照考试中达到专家水平的大语言模型。 谷歌首席执行官桑达尔·皮查伊......
  • 人件读书笔记
    《人件》这本书是一本关于人力资源管理的经典著作,作者是托马斯·J·彼得斯和罗伯特·H·华特曼。通过阅读这本书,我对人力资源管理的重要性和方法有了更深入的理解。首先,我深刻认识到人力资源是企业最重要的资产之一。无论企业规模大小,优秀的人才都是推动企业发展的关键因素。人力......
  • Delphi 检测密码强度 规则(仿 google)
    一、密码长度:5分:小于等于4个字符10分:5到7字符25分:大于等于8个字符二、字母:0分:没有字母10分:全都是小(大)写字母20分:大小写混合字母三、数字:0分:没有数字10分:1个数字20分:大于等于3个数字四、符号:0分:没有符号10分:1......