首页 > 其他分享 >《SRE实战手册》学习笔记之认识SRE

《SRE实战手册》学习笔记之认识SRE

时间:2022-11-02 23:12:47浏览次数:40  
标签:稳定性 SRE 保障 DevOps 笔记 手册 故障 交付

转载:https://www.cnblogs.com/imyalost/p/15889223.html

前言

我自己一直是专注在性能测试和稳定性保障领域的,因此买了很多相关的技术课程学习。

极客时间上赵成老师的《SRE实战手册》是线上稳定性保障领域很好的一门技术课程。

这篇文章是我将学习过程总结的内容还有部分自己的思考做了提炼总结,供大家参考。

课程链接

 

SRE背景

背景:互联网行业不断发展;

目的:提升用户价值交付效率;

措施:积极采用微服务、容器化及其他分布式技术产品,并且积极引入DevOps之类的先进理念;

优势:交付效率提升巨大;

挑战:复杂系统架构的稳定性很难得到保障;

最佳实践:业内稳定性领域的最佳实践是Google SRE;

1、SRE包含哪些工作事项

稳定性规范制定,监控、压测、服务治理、大促稳定性保障、故障应急和管理、组织架构建设;

2、SRE常见的问题与困惑

3、我们所看到的SRE

理念:SRE 到底是什么?我们应该怎么来理解它?有哪些关键点?

实践:到底应该从哪里入手建设 SRE?组织架构应该怎么匹配?

4、稳定性保障的切入点

切入点:稳定性保障的标准化!

跨团队部门沟通:没有共识、统一的稳定性衡量标准;

衡量稳定性的标准:SLO是稳定性保障的共识;

稳定性保障的核心:合理的组织架构可以有效应对各种稳定性问题!

5、DevOps和SRE的区别

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

DevOps的诞生是由于互联网商业市场竞争加剧,企业为减少试错成本,往往仅推出最小可行产品,产品需要不断且高频的迭代来满足市场需求,抢占市场(产品的迭代是关乎一整条交付链的事)。

高频的迭代则会促使研发团队使用敏捷模式,敏捷模式下对运维的全栈交付能力要求更严格,则运维必须开启DevOps来实现全栈交付;

因为不断的迭代交付(也就是俗称的变更)是触发故障,非稳定性根源,而互联网产品/服务稳定性缺失会造成用户流失,甚至流到竞争对手那里, 因此关注业务稳定性也变得十分重要,SRE由此诞生。

 

如何理解SRE

1、SRE的定义

定义:SRE是一整套稳定性保障的最佳实践体系!

2、SRE认知误区

管理的角度: SRE就是一个具备全栈能力且能解决所有稳定性问题的岗位;

运维的角度:做好监控,快速发现问题、快速定位问题根因;

平台的角度:加强容量规划,学习Google做到完全自动化的弹性伸缩;

其他的角度:SRE传统运维的升级版,把运维自动化做好就行;

3、如何理解SRE

SRE稳定性保障规划图:

SRE是一整套稳定性保障的最佳实践体系,需要高效的跨团队组织协作才能完成。

从体系角度出发,需要将不同的技术结合起来,设置不同的职能岗位,制定让不同角色有效协作的机制,让体系发挥力量。而目前存在的一个痛点是角色和团队之间的协作相对独立,各自为战。

4、SRE根本目的

目的:提升稳定性,保障高效的用户价值交付。

通用衡量指标及计算公式:

MTBF(Mean Time Between Failure):平均故障时间间隔。

MTTR(Mean Time To Repair):故障平均修复时间。

提升稳定性的2个措施:提升故障时间间隔,降低故障修复时间,SRE也是以这两个指标为宗旨。

5、MTTR细分指标

6、不同阶段TODO项

Pre-MTBF阶段(无故障阶段):做好架构设计,提供限流、降级、熔断这些 Design-for-Failure 的服务治理手段,以具备故障快速隔离的条件;

还可以考虑引入混沌工程这样的故障模拟机制,在线上模拟故障,提前发现问题。

Post-MTBF(故障复盘阶段):上一故障结束开启新MTBF阶段,应该要做故障复盘,总结经验,找到不足,落地改进措施等。

MTTI阶段(故障发现响应阶段):依赖监控系统及时发现问题,对于复杂度较高和体量非常大的系统,要依赖 AIOps 的能力,提升告警准确率,做出精准的响应。

同时 AIOps 能力在大规模分布式系统中,在 MTTK 阶段也非常关键,因为我们在这个阶段需要确认根因,至少是根因的范围。

7、DevOps和SRE的协同

7.1:DevOps主要以驱动价值交付为主,搭建企业内部功效平台,SRE主要需要协调多团队合作来提高稳定性。如:

  • 与开发和业务团队落实降级;
  • 在开发和测试团队内推动混沌工程落地;
  • 与开发团队定制可用性衡量标准;
  • 与开发、测试、devops、产品团队,共同解决代码质量和需求之间的平衡问题;

7.2:SRE解决运维领域的故障目标,DevOps更偏向于为价值导向的效率目标,这是互相成就的一个过程。

在实践SRE过程中,不可避免要使用一些DevOps的技术,方法论,组织文化等,通过这些,达成一致目标。

7.4:DevOps整体的表现倾向于价值交付,与敏捷的价值观贴合;而SRE的侧重点在于保障系统的稳定运行,通过系统稳定性实现价值最大化!

两者有不同,也有交叉,他们不是非此即彼的选项。至于哪种更好,主要看团队的实际情况,产品本身所处的阶段,是另一个重要的考量依据!

7.5:devops目标是提升开发效率和提升交付效率,sre是保证服务稳定。devops针对的是交付产品和开发者,追求交付在产品的质量上的快。

 

系统可用性:故障≠稳定

业界常说的系统可用性(Availability)"3个9"、"4个9",和建设SRE的目标强相关。SRE的稳定性目标就是尽量减少系统故障或异常运行状态的发生,提升系统可用的运行时间占比。

1、衡量可用性2种方式

一个是时间维度,一个是请求维度,计算公式如下:

时间维度:Availability=Uptime/(Uptime+Downtime):从故障角度出发对系统稳定性进行评估;

请求维度:Availability=Successful request/Total request:从成功请求占比角度出发,对系统稳定性进行评估;

2、衡量稳定性的三要素

衡量指标:如系统请求状态码;

衡量目标:如非5XX占比达到95%;

影响时长:如非5XX占比低于95%持续10分钟;

PS:上述案例只是从请求维度出发,加上时间维度,还有统计周期的因素需要考虑。

3、时长维度:可用性对照表

稳定性只与故障挂钩,粒度不够精细。

经验:故障一定意味着不稳定,但是不稳定,并不意味着一定有故障发生。

4、设定稳定性目标要考虑3个因素

成本因素:追求的指标越高,要求更多的资源冗余,需要综合考虑ROI来做平衡;

业务容忍度:核心业务——99.9%-99.99%;非核心业务——99%%+;

系统当前稳定性情况:合理的标准比更高的标准更重要!

SRE 关注的稳定性是系统整体运行状态,而不仅仅只关注故障状态下的稳定性,在系统运行过程中的任何异常,都会被纳入稳定性的评估范畴中,需要采用多维度的衡量指标和统计方式来评估。

 

标签:稳定性,SRE,保障,DevOps,笔记,手册,故障,交付
From: https://www.cnblogs.com/ceshi2016/p/16852889.html

相关文章

  • 《Unix/Linux系统编程》第十二章学习笔记
    第十二章  块设备I/O和缓冲区管理12.1块设备I/O缓冲区I/O缓冲的基本原理非常简单。文件系统使用一系列I/O缓冲区作为块设备的缓存内存。当进程试图读取(dev,blk)标识......
  • 论文笔记 - RETRIEVE: Coreset Selection for Efficient and Robust Semi-Supervised
    Motivation虽然半监督学习减少了大量数据标注的成本,但是对计算资源的要求依然很高(无论是在训练中还是超参搜索过程中),因此提出想法:由于计算量主要集中在大量未标注的数据上......
  • 学习笔记:KMP
    引入KMP是一种字符串匹配算法,可以在将近线性的时间复杂度内进行字符串匹配。此类问题通常有一个文本串$S$和一个模式串$P$构成,说白了就是在$S$中匹配$T$,S.find(T)......
  • 类的作用域详解(C++ primer7.4笔记)
    7.4类的作用域名字查找的过程:(查找匹配的声明)在名字所在块中寻找语句,查找使用名字之前出现的声明。如果没找到,查找外层作用域还没找到就报错类的定义分为两步处理:......
  • 核磁共振成像学习笔记——基本加权成像方式
    对核磁共振成像而言,最为基本的加权成像包括T1-weighted(T1W),T2-weighted(T2W),protondensity(PDW)。T1:是所谓的纵向弛豫时间,就是说你把质子磁化弄到z轴负向后,他要花......
  • SpringBoot笔记:集成MyBatis
    SpringBoot中使用MyBatis与MVC中本质是一样的,只是某些配置可以直接使用注解完成,使编码更加便捷了。1.pom依赖集成MyBatis通常需要MyBatis、Spring、数据库驱动三个依赖,......
  • vue学习笔记
    今日内容概要vue3介绍创建vue3项目的方式setup函数ref和reactive计算和监听属性生命周期hookstoRefs后台管理模板今日内容详细vue3介绍1.性能的提升......
  • 日常笔记
    1.openresty+redis+lua缓存使用openresty+lua脚本实现多级缓存:用户访问openresty中的Nginx,若null则访问redis,若null则访问数据库,数据库返回信息并存储在redis,redis在存......
  • 学习笔记-pupy
    pupy免责声明本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关.项目地址https://github.com/n1nj4sec/pupy相......
  • 学习笔记-merlin
    merlin免责声明本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关.项目地址https://github.com/Ne0nd0g/merlin......