数人云推出 SRE 系列译文,为大家带来国外 SRE 的深刻解读与实践。本文基于作者组建相应 SRE 组织总结出来的经验,提供了大家开始 SRE 之旅之前需要思考的各方面问题。
SRE 最近已成为许多公司间一个热门讨论的话题。什么是 SRE ?谁是 SRE ?我们如何实现?对于这个话题我当然也有自己的一些观点。但是大部分观点都有一个共同点, SRE 不仅是工具和技术,它更是在企业内部的一种文化转变。现在,作为一个免责声明我想说以下的内容只是基于我自己组建相应组织的一些经验,以及通过和其他一些已经实施或正在实施 SRE 的组织交流而总结出来的。建立 SRE 体系没有一个统一的处方,每个企业都会找到适合自身组织体系和运营模式的方法。仅仅因为这是一种流行趋势而强迫引入这种文化绝非一种正确的态度,这些都要取决于企业自身。
在这篇文章中,会使用到一些不同的术语。将它们统一提出这样大家在阅读的时候就不用再去查询这些术语。定义非常简短,后面会深入阐述。
由于 SRE 的技术具有很多不同的方面,似乎很难缩小 SRE 实际应该花费时间和精力的地方。这些人不会直接面向公众的产品或功能(当然这完全取决于你的公司),那他们的职责到底应该覆盖什么范围呢?当然 SRE 的责任绝非仅限于以下所列内容,但这应该是 SRE 团队需要关注的基本范畴。如果无法对底层基础设施进行合适地搭建、监测、测量,那就很难对组织外部成员宣扬这种新的文化。看到以下项目也许会觉得基础架构部分很重,其实很多项目可以拆分成基础设施 SRE 和应用 SRE ,一个是主要的生产者,另一个是主要的消费者。
这是一个很多人都疑惑的问题。我极力推荐将 SRE 分成多个小组(基础设施 /监控 /工具 /应用 /服务等)。虽然它会按照某种逻辑进行拆分但是汇报链始终都应保持在组织内部。个人看来,打破这种集中的层级结构会导致 SRE 实行的失败,需要集中汇报的原因在于 SRE 应该向有相同思维方式的人报告,这些个人(领导)将为建立工具而提供协助,这是团队成功的关键。他们还能提供有关通用工具集、最佳实践和架构指导的信息。有一件事是值得考虑的,那就是最初的应用 /服务 SRE 可以选择应用程序 /服务团队中对运维和基础架构有兴趣的成员,可以先用他们因为他们最接近代码,既可以转变为 SRE 也可以再回到团队继续做软件工程师。
应用软件工程师团队和基础架构需要不同层次的支持。应用程序 SRE 会花费 70%左右的时间来服务应用 /服务团队,而其他的 30%将用于协助其他领域的 SRE (主要是基础架构相关的项目)。基础架构 SRE 首先要集中精力在基础设施相关的产品 /服务等上,较少与开发功能的应用团队有直接的合作。这两者不一定要分开工作,但他们尊重对方的侧重点。
确保 SRE 团队不是一个垃圾场,只接收应用团队不想做的工作。这种情况之前是见过的,它很快破坏了嵌入式团队和应用程序 /服务团队之间的关系。应该将部分业务相关的运维工作分配给应用 /服务团队(大约 5-10%),这样他们可以更加了解环境也知晓底层在发生什么,使得成员在团队中流动成为可能,如果项目可以自动运行则不再需要专职的 SRE 支持。
应用 SRE
基础设施 SRE
建设 SRE 就应该及早解决组织架构的问题,组织必须集中化。画一个图来显示应用程序 SRE 和基础设施 SRE 的分类逻辑。团队领导可以依据类型和项目来处理复杂的应用程序 /基础设施团队,根据组织特点来设定团队领导 /经理 /总监等级别,目前进行组织分隔的标准就是如此。
下面是 Ruby 应用程序团队和 SRE 团队之间协作的一个典型案例。可以注意下底部增加了一个额外的支持,这一部分方法并非必须但是能避免大家精疲力竭。一线支持的职责是按照运行手册运行和处理来自监控系统的告警。如果发生紧急事件该员工将获得监控页面的第一手信息。外包这个部分也可以雇佣驻厂人员来处理,对于一个刚刚开始运维工作并希望了解尽可能多的堆栈知识的初级员工来说这是一个伟大的起点。我们习惯于把新的 SRE 和有经验的团队成员分成一组,然后在第一周左右就去执行值班任务,这能让他们够快速学习,根据过往经验当一个新成员加入后这种做法是非常有效的。
对于 SRE 其实还有很多内容,在此谈了一些开始 SRE 之旅时需要最先思考的问题。目前已经有很多公司在组织内部实施了 SRE 文化可供参考。要记住,没有公式,对别人有用的对你未必有用,必须真正推动组织内部对 SRE 文化转变的理解并确保每个人都准备好了,只要大家全力协作,可能性是无穷无尽的。感谢阅读!
作者: Anthony Caiafa 来源: https://www.linkedin.com/pulse/sre-incomplete-guide-cultural-narnia-anthony-caiafa