SRE:“正确做事”的法门

标签: sre 正确 法门 | 发表时间:2021-03-15 05:43 | 作者:新牛哥
出处:http://weekly.dockone.io

【编者的话】本文是作者多年SRE实践的经验总结,阐明了为什么要选择SRE及SRE的目标,并从六个角度指明如何实践SRE:合作和沟通、人员团队结构、工具和平台、版本工程学、监控、事后回顾。

本文是我对SRE实践的介绍,这些实践来自于我组建过的不同SRE团队,这些团队负责管理SAAS平台快速添加特性。

为什么选择Site Reliability Engineering (SRE)?

处于成长期的基于SAAS/PAAS的公司需要:
  • 提升速度
  • 持续提高可靠性
  • 保持精简


上述目标需要SRE实践,如果还没到位的话。下面是我的概述,如果你需要深入研究SRE,可以参考一些关于SRE实践的书籍和博客。

SRE的任务是什么?

方便以下工作:
  • 快速开发
  • 免回归的版本周期
  • 通过自动化解决复杂问题
  • 跨部门共享生产知识


“SRE就是要把风险降到最低。”

实现SRE的重点应该放在哪里?

你如何快速驱动SRE变化取决于你的工程团队结构、文化和SDLC过程的成熟度。在较高的层次上,以下领域将是开始使用SRE的一个很好的框架。

1. 合作和沟通

SRE是一种工程文化,并不是特定于任何垂直功能。只有所有的工程领导者团结在一起,形成一个共同的愿景,这才会成功。

合作:
  • 在工程部门之间设置共享的目标和对象。
  • 领导者接纳并执行。
  • 为各种服务设定“服务水平目标”(SLO)文化。在可靠性和稳定性(it成本)方面,我们要走多远?
  • 明确定义产品/服务所有权,包括将SLO作为生产准备要求的一部分。


沟通:与工程团队的所有成员保持一致的沟通。每个领导者都应该以自己喜欢的方式来推动这一进程。
  • 要从利弊两方面分析我们为什么要做这件事?(要提到商务司机。)
  • 对每个团队/成员的期望是什么?新的结构在未来会是什么样的?
  • 领导如何帮助避免扩大知识差距或减轻未来的挑战/风险?
  • 带有时间表路线图的高层次里程碑——我们如何到达那里?


“聚焦在切实可以实现的目标上。”

2. 人员和团队结构

混合人才使用,优化到最佳结构。
  • 文化:寻求帮助、合作、教导和负责任
  • 雇佣合适的人才(面向未来的以及经验丰富的人才)。
  • 组织团队以利于平滑传播知识。
  • 雇佣员工是为了解决复杂问题,而不是为了扩大规模(通过自动化来扩大规模)。
  • 团队应该对解决复杂的问题感到兴奋。
  • 50%的SRE时间应用于质量工程工作。


SRE文化应该是一种力量倍增器。

3.工具/平台

从POC开始(从小处开始),并在此基础上不断发展。
  • 使用星型方法来实现任何更改。在没有明确目标和预期结果的情况下,不要引入任何改变(无论多么小)。
  • 实现成功:倾听用户(工程师),适应并推动采用的想法。

  • 模板
    • 带有关键性能指标的仪表板(保持简单,愚蠢)。
    • 最佳实践的剧本
    • 用于监视和安全的通用插件/模板。

  • 自动化工具/剧本是版本控制的,并遵循自助模式。


“自动化的重点是解决复杂的问题。”

4. 版本工程学(RE)

发布工程不应该是事后的想法。相反,这是为了一致地测试和验证发行版而构建的主要支柱之一。这是SRE的核心功能:

  • 原则:
    • 自助服务
    • 高速
    • 一致性
    • 加强ACL和策略

  • 质量和安全应该移到SDLC的左边,并且应该是版本工程自动化的一部分。
  • 每个版本都应该通过kpi的镜头进行验证,并与设定的SLO进行比较。
  • 负载和容量在放行前要进行测试和认证。
  • 构建一个测试环境来检测零MTTR,从而避免生产错误。
  • 产品准备就绪后才发布服务。


“服务的可靠性在于了解用户的容忍度。”

5. 监控

  • 在客户端和服务端使用工具收集时间序列数据
  • 使开发人员能够轻松地向监控系统添加各种指标。
  • 为每个常用指标构建一组可重用的SLI模板;这也使得每个人更容易理解特定SLI的含义。


“如果你不能监控某样东西,那它就没有生产的必要。”

6. 汇报/ RCA(事后的)

  • 每次都修正(战术和战略)。
  • 不要责怪任何人,专注于解决方案、过程和技术。
  • 通过适当的发布周期,有一个过程来跟踪问题和采取的修复行动。
  • 定期召开架构和产品评审会议。


“你不可能在没有经历过问题的情况下找到正确的解决方案。”

注意:无所畏惧和协作是组成一个有效的SRE团队的关键特征。

原文链接: SRE: Key Insights "Done the Right Way"(翻译:池剑锋)

相关 [sre 正确 法门] 推荐:

SRE:“正确做事”的法门

- - DockOne.io
【编者的话】本文是作者多年SRE实践的经验总结,阐明了为什么要选择SRE及SRE的目标,并从六个角度指明如何实践SRE:合作和沟通、人员团队结构、工具和平台、版本工程学、监控、事后回顾. 本文是我对SRE实践的介绍,这些实践来自于我组建过的不同SRE团队,这些团队负责管理SAAS平台快速添加特性. 为什么选择Site Reliability Engineering (SRE)?.

SRE 的工作介绍

- - 卡瓦邦噶!
有很多人问过我想了解一下 SRE 这个岗位,这是个很大的话题,在这篇博客中把想到的一些介绍一下吧. 这是一个最早由 Google 提出的概念,我的理解是,用软件解决运维问题. 标准化,自动化,可扩展,高可用是主要的工作内容. 这个岗位被提出的时候,想解决的问题是打破开发人员想要快速迭代,与运维人员想要保持稳定,拒绝频繁更新之间的矛盾.

从零开始搭建SRE

- - DockOne.io
【编者的话】Google在10年前创造了SRE这个工种. SRE,Site Reliability Engineering的缩写. 其中site是指Website,可以翻译为网站可靠性工程. 几年前资深Google SRE Chris Jones等人联合撰写了《Google SRE: How Google runs production systems》,首次向外界解密了Google的生产环境以及整个SRE的方法论.

云端的SRE发展与实践

- - 美团点评技术团队
本文根据作者在美团点评第21期技术沙龙的分享记录整理而成. SRE(Site Reliability Engineering)是Google于2003年提出的概念,将软件研发引入运维工作. 现在渐渐已经成为各大互联网公司技术团队的标配. 美团点评作为综合性多业务的互联网+生活服务平台,覆盖“吃住行游购娱”各个领域,SRE就会面临一些特殊的挑战.

SRE 与 DevOps 有什么不同?

- - IT瘾-dev
SRE和DevOps有什么区别. 您可能会说这很大程度上是语义问题,实际上,SRE和DevOps工程师扮演着相同的基本角色. 尽管如此,SRE和DevOps之间还是存在一些区别,即使是细微的区别. 考虑到这两种角色在很大程度上具有相同的价值观和实践,它们似乎并不重要,但现实是,最终SRE和DevOps工程师满足了不同的需求.

DevOps和SRE的区别 - 知乎

- -
最近有一位朋友和我聊职业发展方向问题,聊了不少 DevOps 和 SRE 话题. 我几年前刚接触这两个概念时也常常将之混淆,可惜当时没有人来解答我困惑. 现在这虽然已经极为流行,但是我发现我这位朋友对这两个职位还存在一些误区. 于是我给了一些见解并整理成文章以饕大众. DevOps 新概念,好高级哦.

什么是 SRE?与 DevOps 相比,到底谁才是真正的王者

- - IT瘾-dev
有很多人问过我想了解一下 SRE 这个岗位,这是个很大的话题,在这篇博客中把想到的一些介绍一下吧. 这是一个最早由 Google 提出的概念,我的理解是,用软件解决运维问题. 标准化,自动化,可扩展,高可用是主要的工作内容. 这个岗位被提出的时候,想解决的问题是打破开发人员想要快速迭代,与运维人员想要保持稳定,拒绝频繁更新之间的矛盾.

Kubernetes组件问题排查思路 – 十点运维吧-Linux|Kubernetes|Docker|Prometheus|Python|Golang|云原生|SRE

- -
Kubernetes的基础组件就像一栋房子的地基,它们的重要性不言而喻. 作为Kubernetes集群的维护者,经常会遇到组件的问题,那平时是怎么去定位解决的呢. 这里简要分析一下我的排查思路. 通过集群的状态,找到故障的节点或者组件. 使用pprof分析组件的具体性能. Kubernetes的基础组件不多,而且部署也非常简单,所以在定义范围的时候还是很容易的,比如我们在使用.

正确理解ThreadLocal

- - Java - 编程语言 - ITeye博客
转自: http://www.iteye.com/topic/103804. 首先,ThreadLocal 不是用来解决共享对象的多线程访问问题的,一般情况下,通过ThreadLocal.set() 到线程中的对象是该线程自己使用的对象,其他线程是不需要访问的,也访问不到的. 另外,说ThreadLocal使得各线程能够保持各自独立的一个对象,并不是通过ThreadLocal.set()来实现的,而是通过每个线程中的new 对象 的操作来创建的对象,每个线程创建一个,不是什么对象的拷贝或副本.

正确重置MySQL密码

- xxg - 火丁笔记
谁都不想弄丢家门钥匙,但不管多么小心,时间长了,这样的事情总会发生几次. MySQL密码也是一样,把它写在文档上不太安全,记在脑子里又难免会忘记. 如果你忘记了MySQL密码,如何重置它呢. 首先停止MySQL服务,然后使用skip-grant-tables参数启动它:. 此时无需授权就可以进入到MySQL命令行,使用SQL重置MySQL密码:.