首页 > 其他分享 >五一假期学习总结:从DevOps到SRE

五一假期学习总结:从DevOps到SRE

时间:2024-05-06 09:04:22浏览次数:8  
标签:架构 SRE 稳定性 DevOps 故障 SLO 五一

大家好,我是Edison。

五一假期,没出远门,带娃露营玩水玩沙骑平衡车,累的不亦乐乎。同时,也刷了一门极客时间的课程《SRE实战总结》,给我带来了一些新的认知,我将这些认知整理了以下,特此总结分享与你,强烈建议已经实践了DevOps的童鞋了解一下SRE

什么是SRE?

SRE全称Site Reliability Enginering,站点稳定性工程。站在不同角色人员的角度会有不同的认知和解读,但从中立和全局角度来看,SRE其实和PMBOK(项目管理PMP认证的教材)一样提供的是一套体系化的方法,这套方法可以帮助我们保障我们的IT系统的稳定性,进而交付更大的用户价值。

既然是体系化,就得有一系列的规划和措施,下面这张图可能是课程中最大的亮点:

 对,这张图就像是PMBOK中的五大过程组和49个子过程一样的存在,用于标准化的指导我们的保障工作全旅程。可以看到,这个所谓的框架图,里面很多的事情其实我们已经在做了,还有些没有做,不过他们也都还比较常见。但是,一旦它们结合起来形成一套稳定的体系,这套体系发挥出的力量就大了,也会告别只发挥某项技术的能力。因此,可以看出:SRE的建设需要高效的跨团队组织协作,而不是依赖单一岗位解决所有稳定性问题。

做SRE的目的是什么?

做SRE的目的,从本质上来看,其实就是 减少系统故障时间,增加系统正常运行时间。换句话说,就是“减少故障,提升MTBF;同时,提升故障处理效率,降低MTTR”。SRE要做的所有事儿,其实都是围绕这两个目标来服务的。

NOTE:从业界稳定性通用的衡量标准看,有两个非常关键的指标:

  • MTBF,Mean Time Between Failure,平均故障时间间隔。

  • MTTR,Mean Time To Repair, 故障平均修复时间。

通俗地说,MTBF 指示了系统正常运行的阶段,而 MTTR 则意味着系统故障状态的阶段。

SRE和DevOps有什么区别?

DevOps 核心是做全栈交付,SRE 的核心是稳定性保障,关注业务所有活动,两者的共性是都使用软件工程解决问题

DevOps 的诞生是由于互联网商业市场竞争加剧,企业为减少试错成本,往往仅推出最小可行产品,产品需要不断且高频地迭代来满足市场需求,抢占市场(产品的迭代是关乎一整条交付链的事),高频的迭代则会促使研发团队使用敏捷模式,敏捷模式下对运维的全栈交付能力要求更严格,运维必须开启 DevOps 来实现全栈交付。因为不断的迭代交付(也就是俗称的变更)是触发故障、非稳定性的根源,而对于互联网产品来说,服务稳定性缺失会造成用户流失,甚至流到竞争对手那里, 因此关注业务稳定性也变得十分重要,SRE 由此诞生。

DevOps 的出发点是“更加高效地交付用户价值”,而 SRE 的出发点是“保障和提升系统稳定性”,两者要做的事情其实本质上差别不大,但是角度不同,那么在执行的时候,要解决的问题也就会有所差异。

实践SRE的切入点是什么?

SRE涉及的范围很大,我们应该从哪里入手呢?

首先,要明确 SRE 关注的稳定性是系统的整体运行状态,而不仅仅只关注故障状态下的稳定性,在系统运行过程中的任何异常,都会被纳入稳定性的评估范畴中。因此,SRE 会更多地采用请求维度的统计方式,即 Availability = Successful request / Total request,而我们常见的系统可用性的几个9就是基于这个维度的一个可量化的实现:

其次,要切入SRE,推荐的做法就是“选择合适的SLI,设定对应的SLO”。例如,“状态码为非 5xx 的比例”就是 SLI,“大于等于 99.95%”就是 SLO。换句话说,SLO 是 SLI 要达成的目标

NOTE:SLI 就是我们要监控的指标,SLO 就是这个指标对应的目标。

常见的SLI即系统监控指标如下图所示:

常见的SLO的计算方式如下:

  • 第一种:直接根据成功的定义来计算

    • 比如:Successful = (状态码非 5xx) & (时延 <= 80ms)

  • 第二种:复合定义来计算

    • SLO1:99.95% 状态码成功率

    • SLO2:90% Latency <= 80ms

    • SLO3:99% Latency <= 200ms

    • Availability = SLO1 & SLO2 & SLO3 => 即只有当这3个SLO同时达标,整个系统的稳定性才算达标。


当设计定好了这些指标,在实践SRE时最重要的方法就是“以赛代练”,即通过事先考虑自己的业务系统的极端场景到底是什么,然后基于这些场景去设计和规划。而这些“以赛带练”的事情,会有一部分转化为例行工作,同时还会增加一些周期性的工作。

如何处理故障的发现、处理 和 复盘?

对于线上故障的处理实践中,耗时最多的就是故障的发现阶段。要提高故障发现的效率,就得建设好On-Call机制。老师在课程中分享了一个On-Call关键5步法:

  • 确保关键角色在线;
  • 组织 War Room 应急组织;
  • 建立合理的呼叫方式;
  • 确保资源投入的升级机制;
  • 与云的联合 On-Call。


而对于故障的处理,只有一条基本原则:“一切处理活动皆以恢复业务为最高优先级”。故障处理过程中效率如何,其实取决于三个因素:

  • 技术层面的故障隔离手段是否完备;
  • 故障处理过程中的指挥体系是否完善,角色分工是否明确;
  • 故障处理机制保障是否经过足够的演练。

可以看到,想要真正高效处理故障,并不是在技术层面做到完备就可以了,这的确是一个需要体系化建设和反复磨炼才能达成的目标。

如果只处理故障,不对故障复盘也是不行的。而要做好复盘,我们可以通过黄金三问 和 故障判定三原则

故障复盘黄金三问:

  • 第一问:故障原因有哪些?
  • 第二问:我们做什么,怎么做才能确保下次不会再出现类似故障?
  • 第三问:当时如果我们做了什么,可以用更短的时间恢复业务?

具体开复盘会时,我们应该围绕这三个问题来进行,不允许出现互相指责和埋怨的情况,如果出现,会议主持者需要及时控制和打断!

故障判定三原则:

  • 健壮性原则
    • 业务应用需要提高快速恢复能力
  • 第三方默认无责任原则
    • 比如云厂商的各类CDN、OSS等服务
  • 分段判定性原则
    • 将一次故障分段判断,各自完善改进措施

来自《Google SRE运维解密》的经典名句:“故障是系统运行的常态,正常才是特俗状态”。对于我们而言,无论什么角色,都要以一颗平常心来对待故障,鼓励改进,并持续改进。

实践SRE也是在革新生产协作关系

高效的故障应对和管理工作,其实是需要整个技术团队共同参与和投入的。那么这也就必然涉及到生产协作关系的革新,换据说说就是组织架构的调整,这是因为:

  • 组织架构需要和技术架构相匹配

  • SRE是微服务和分布式架构的产物

如果我们去梳理一下整个软件架构发展的历程,就可以得到下面这张图。我们会发现不仅仅是 SRE 和 DevOps,就连容器相关的技术,持续交付相关的方法和理念,也是在微服务架构不断流行的趋势下所产生的,它们的产生就是为了解决在这种架构下运维复杂度过高的问题

总的来说,如果我们的技术架构朝着微服务和分布式的方向演进,那我们可以考虑落地 SRE,这时候,我们的组织架构就要匹配我们的技术架构,也就是说,要想在组织内引入并落地 SRE 这套体系,原有技术团队的组织架构,或者至少是协作模式必须要做出一些变革才可以

蘑菇街的SRE组织架构实践

老师在课程中分享了蘑菇街的SRE组织架构实践,如下图所示。可以看到,SRE 并不是一个单纯的岗位定义,它是由多个不同角色组合而成的一个团队。

参考资料

极客时间,赵成,《SRE实战总结

推荐学习

Microsoft Learn,《制定站点可靠性工程(SRE)策略

 

作者:周旭龙

出处:https://edisonchou.cnblogs.com

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。

标签:架构,SRE,稳定性,DevOps,故障,SLO,五一
From: https://www.cnblogs.com/edisonchou/p/-/sre_study_notes

相关文章

  • 2024牛客五一集训-1
    CoffeeChicken基本思路:f[i]表示s[i]的字符串长度即f[i]=f[i-2]+f[i]solve(n,k)表示s[n]中第k个字符当n<=2时,直接返回答案当n>2时,k>f[i-2]时solve(n-1,k-f[n-2]);说明要找的字符在前一天中,也就是不在前两天的数据范围之内,因此直......
  • QBXT五一集训DAY3笔记
    \(Day\)\(3\)位运算位运算包含了五个运算符,分别是:&与只有两个对应位都为\(1\)时才为\(1\)|或只要两个对应位中有一个\(1\)时就为\(1\)^异或只有两个对应位不同时才为\(1\)<<左移如\(n<<i\)表示将\(n\)的二进制向左移动\(i\)位,等价于\(n*2^i\)>......
  • [出去走走]带着水韵江苏年卡,五一游南京附近的茅山森林世界
    茅山森林世界位于常州境内,水韵江苏年卡可以使用。登录后可以查看目前支持的园林列表。苏州、南京、常州、无锡、连云港、淮安、泰州、扬州、镇江的景点都有。从南京出发,沿着绕城转入长深高速再转入沪武高速,大概约一个半小时左右的车程。路上江宁服务区休息了一次。自驾的话,注意如......
  • DevOps是什么?DevOps能够给我们带来什么?
    一、DevOps是什么?DevOps是Development和Operations的组合词。它是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。它是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例......
  • QBXT五一集训DAY1笔记
    \(Day1\)\(ASCII\)简单来说,\(ASCII\)其实就是字符与数字之间的映射比如说,\('a'\)的\(ASCII\)就是\(97\)模运算:%来复习一下小学数学:\(a/b=c……d\)这里的\(d\)就是\(a\)除以\(b\)的余数,在计算机中,用%来表示通过这个式子,我们进而得出\(a=b*c+d\)请一定要记住这......
  • 使用浏览器无密码登录Azure DevOps Server
    1.概述AzureDevOpsServer作为软件开发管理平台服务器,除了支持主流的IDE开发工具外,普通用户使用最频繁的客户端工具是网页浏览器。由于AzureDevOpsServer集成AD域服务器实现用户认证,用户每次使用浏览器登录服务器时都需要输入用户的域账户和密码。但是,对于已经使用域账户登录......
  • 我五一是这样计划的,第一天...
    前言这个时间点,大多数人一定已经“峡谷做好准备全军出击”或者在出行的路上了。这个时间我也在回老家路上聊一聊。行程老读者都知道我老家在内蒙的西北的边陲城市,往年票都是随便买、除了春运几乎坐不满,今年五一居然也需要抢票,直到两天前才抢到换乘的车票。自从口罩之后不知道......
  • 五•一颂|广州流辰信息致敬每一个辛勤的劳动者,祝大家五一快乐!
    时光飞逝,一年一度的五一国际劳动节如期而至。在这个竞争激烈的社会中,拥有勤劳品质的人儿总会在适当的时机迎来人生的高光时刻。或许你的人生经历非常丰富,或顺利,或坎坷,不管是哪种状态,勤劳的人应该是这个时代值得尊敬的人。正值五一国际劳动节来临之际,广州流辰信息感恩这个伟大的时......
  • 五一~感恩回馈,SolidKits工具折扣来袭!
    SOLIDWORKS插件多样且丰富,有着不同的种类和用途,可以为SOLIDWORKS软件本身提升使用效率,更快速的响应你的操作方式。SolidKits自主设计研发多款SOLIDWORKS增效插件,包括:自动化参数设计插件、高级BOM插件、批量编码器插件、标准件增强工具等,也可提供按需定制开发服务。自动完成重复性......
  • DevOps到底是什么?DevOps能够给我们带来什么
    DevOps到底是什么?DevOps能够给我们带来什么一、DevOps的定义是什么?DevOps是开发(Dev)和运营(Ops)的复合词,它将人、流程和技术结合起来,不断地为客户提供价值。DevOps对团队意味着什么?DevOps使以前孤立的角色(开发、IT运营、质量工程和安全)可以协调和协作,以生产更好、......