作为一个搞运维的,你真的了解 SRE 么?

来自:知乎,作者:悟冥

链接:https://zhuanlan.zhihu.com/p/97600369

0、为什么诞生 SRE?

  • 原因一:企业成本的增长同用户的增长不成线性变化。但是随着系统的复杂度提升,组建越来越多,用户的流量压力也越来越大,相关的变更也会越来越多,各模块之间的变更顺序也会越来越复杂。在这样的情况下,单纯的靠运维人力的数量提升无法满足业务的发展需求,而且会提升企业的成本;

  • 原因二:传统的研发团队和运维团队天然具有冲突。公司的IT人员的配置:研发(Dev)和运维(Ops),研发部门聚焦在快速构建和快速发布;运维部门关注的是如何避免发生故障,从目标上讲就是矛盾的。且随着 IT 技术的发展,对 IT 从业者的要求也越来越高,既要懂得底层系统,也要懂得数据算法,同时对主流技术还要快速追赶,满足这样要求的人才太少;

  • 原因三:生产工具为适配生产力发展的必然产物。为了提高IT行业的整体效率和质量,使得从手工运维时代,逐渐过度到脚本工具运维,在发展到平台数据运维,再到平台软件运维,在发展到智能自动化运维。通过一系列手段、工具、理念的进步,将 Ops 技术发展到 DevOps、DataOps、AIOps 等;

一、什么是 SRE?

1.1 SRE 的基本了解

那么区别于研发同学和运维同学,SRE 要做一些什么工作,又要具备什么样的能力呢?

Google 试从解决 Dev 和 Ops 之间的矛盾出发,雇佣软件工程师,创造软件系统来维护系统运行以替代传统运维模型中的人工操作。SRE 团队和产品研发部分在学术和工作背景上非常相似,从本质上将,SRE 就是在用软件工程的思维和方法论完成以前由系统管理员团队手动完成的任务。

Google 的 SRE 具体会负责哪些?

SRE在Google不负责某个服务的上线、部署,SRE主要是保障服务的可靠性和性能,同时负责数据中资源分配,为重要服务预留资源,SRE并不负责某个业务逻辑的具体编写,主要负责在服务出现宕机等紧急事故时,可以快速作出响应,尽快恢复服务,减少服务掉线而造成的损失。

SRE 日常工作和职责包含哪些

一般来说,SRE团队要承担以下几类职责:可用性改进、延迟优化、性能优化、效率优化、变更管理、监控、紧急事物处理以及容量规划与管理。Tools Don’t create reliability. Humans do. But tools can help.

SRE 的使命

在减少资源消耗的同时,从可用性和性能层面,提升用户的体验。
Operations should NOT be a part of SRE missions. Operation is a way to understand production.

1.2 SRE 的技能堆栈

  • 语言和工程实现

  • 深入立即开发语言(Java/Golang等)

  • 业务部门使用开发框架

  • 并发、多线程和锁

  • 资源模型理解:网络、内存、CPU

  • 故障处理能力(分析瓶颈、熟悉相关工具、还原现场、提供方案)

  • 常见业务设计方案,多种并发模型,以及相关 Scalable 设计

  • 各类底层数据库和存储系统的特性和优化

  • 问题定位工具

  • 容量管理

  • Tracing 链路追踪

  • Metrics 度量工具

  • Logging 日志系统

  • 运维架构能力

  • Linux 精通,理解 Linux 负载模型,资源模型

  • 熟悉常规中间件(MySQL Nginx Redis Mongo ZooKeeper 等),能够调优

  • Linux 网络调优,网络 IO 模型以及在语言里面实现

  • 资源编排系统(Mesos / Kubernetes)

  • 理论

  • 机器学习中相关理论和典型算法

  • 熟悉分布式理论(Paxos / Raft / BigTable / MapReduce / Spanner 等),能够为场景决策合适方案

  • 资源模型(比如 Queuing Theory、负载方案、雪崩问题)

  • 资源编排系统(Mesos / Kubernetes)

二、SRE 是如何解决问题的?

2.1 解耦中台系统与应用

研发同学为生产环境负责,而SRE为组件或集群的可服务能力和稳定性负责

SRE工程师中大部分是标准的软件工程师,他们擅长使用系统工程的方法去解决基础系统中的问题,同时持续的、工程化的解决问题,使得运维的压力不会随着上层应用的增加而线性增加(通常20人的SRE团队,可以支持上千研发同学的应用开发)。同时SRE同学对Unix系统内部细节、1~3层网络比较了解,可以同研发一起分析应用程序性能问题。

SRE应该更好的进行系统元数据的管理

系统的元数据应该是系统的架构拓扑图,通过动态、准确的更新元数据可以将采集到的Event、Message、Metric 等数据映射到真实环境中去,并能通过各种手段进行系统健康程度的诊断,是的自动化监控和管理成为可能。

SRE通过稳定性进行抽象,可以通用的解决稳定性问题

为了让庞大系统的运行效率提高,要不断的优化系统中的热点,并将系统中的热点服务扩展、升级、重构成为一个组建化的服务,这也是SRE中解耦系统的方法。不仅如此,SRE对各个服务的可用性进行标准化定义,将统一的标准应用到不同的服务中去,将稳定性作为各个服务的重要度量指标,通过上述操作,收拢服务治理问题,提供系统的鲁棒性。

2.2 明确服务之间的可用性依赖

2.2.1 面向 SLO 编程标准的推行

image

针对 SLO,我们举一个例子来说明以下,

image

为什么要有 SLO,设置 SLO 的好处是什么呢?

  • 对于客户而言,是可预期的服务质量,可以简化客户端的系统设计

  • 对于服务提供者而言

  • 可预期的服务质量

  • 更好的取舍成本/收益

  • 更好的风险控制(当资源受限的时候)

  • 故障时更快的反应,采取正确措施

注:

2.2.2 面向 SLO 监控的设计

SLO 结果导向的告警,而不是原因导向的告警

  • 四个黄金信号

  • 当平台服务不可用,或访问速度变慢时,往往会影响到产品的整体质量,目前了解到的一些基础监控指标就达到上百种,通常的做法是在这些指标当中需要选取平台或业务比较关注的指标进行监控报警;

  • Google的网站可靠性工程师小组(SRE)定义了四个需要监控的关键指标。

    他们称之为“四个黄金信号”:延迟(Latency),流量(Traffic),错误(Errors)和饱和度(Saturation)。这四个信号应该是服务级别非常关键部分,因为它们对于提供高可用性的服务至关重要。

  • 如何定义高质量的监控:

  • 明确业务服务的SLO(应该与该业务提供给客户的期望达成一致),并采用合理的SLI来描述;

    比如计数信息(总量、成功量)、测量信息(同比、环比);

  • 主观上监控应该有丰富的内部状态数据、具备高可观测性条件;

    客观上具备业务视角,能够快速定位是全局问题还是局部问题;

    系统本身的鲁棒性,不会因为某个局部问题影响监控的权威性;

    具备quota限制能力,防止出现容量的问题;

  • 报警清理和定期的规则优化,定期进行盘点告警,并优化掉无SLO影响的规则;

2.3 完善的场景化演练

自动化系统的建设中除了要考虑系统的能力外,还要考虑人在其中所发挥的重要作用,毕竟一旦一些突发的时事件若必须由人来处理,则这时刻人的稳定性和准确性也是需要保证的。微软在SRE大会中提出了一个有意思的观点:如果一个系统能够比人做的更好,那人应该知道如何监控这个系统本身。因此,在保证SLO的情况下,可以做一些攻防演练(关闭SRE系统的UI后,SRE该如何操作?);或构建一个模拟系统,让人来执行系统;并学习故障的复盘报告等。

三、浅谈 SRE 的观察

3.1 从 SRE 2019 观察

SRE CONF 2019 传送门:

  • Conference Report:
SRECON AMERICAS 2019 :



https://noidea.dog/blog/srecon-americas-2019
  • Conference Program:
SRECON Asia/Pacific 2019 :



https://www.usenix.org/conference/srecon19asia/program

3.2 几个应该多花精力关注的点

  • 系统的可观测性,换句话说是你真的了解你的系统么?你真的了解你的应用么?(不仅是后台系统、还有一些移动端系统和应用)要从 Logs 中索取更多的知识,挖掘出更多的内容供 SRE 使用

  • 随着观测性要求的不断提供,灵活、新颖的可视化工具被大家越来越认可,单独使用线图进行可视化指标是远远不够了,需要更加新颖和便捷的可视化方案;同时要让数据产生价值,而不是简单的可视化,越来越多的公司使用Pipeline来解决相关任务的创建和管理,让数据清洗和规整后变的更优价值,使得算法产生最大的效用

  • SRE 不仅仅要发现系统中存在的热点问题,也要能快速解决这些热点问题,并在以后的架构演进中消除这样的问题,则系统的自愈能力应该成为每个公司都关注的问题

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容