NetFlix SRE 实践
本文作者:Hank Jacobs,来自 NetFlix 的 CORE 团队的 SRE 工程师。原文地址:https://netflixtechblog.com/keeping-customers-streaming-the-centralized-site-reliability-practice-at-netflix-205cc37aa9fb
我们很荣幸能够在 Netflix 为我们的客户带来欢乐。无论是引人注目的新系列剧集还是创新的产品功能,我们都努力提供人们喜爱并随时随地享受的一流服务。让我们的客户满意和流媒体正常播放的一个关键基础是对可靠性的高度关注。
可靠性,正式来讲,是一个在给定条件下持续运行的能力。简而言之,可靠性意味着系统应该工作,并持续工作。从故障注入测试到周期性切流演练,Netflix 工程师投入了大量资金来确保其服务稳定可靠。许多团队为 Netflix 的可靠性做出了贡献,负责了他们各自的服务和领域的稳定性。CORE 团队(The Critical Operations and Reliability Engineering team)负责 NetFlix 整体服务的稳定性。
注意,CORE 是一个团队名称的简写,并非是指某个团队的核心成员。
CORE 是一个由站点可靠性工程师、弹性工程师和性能工程师组成的团队。我们团队负责关键业务的运营稳定性(译者注:看起来,CORE 团队主要关注公司的北极星指标)。
与大多数 SRE 团队不同,我们不负责具体服务的运维,不做线上变更,不构建基础设施,组织层面也不会嵌入业务团队,而是一个公司级的中心化的组织。我们的主要重点是确保 Netflix 保持正常运行。实际上,这包括系统性风险识别、事件生命周期处理和可靠性咨询等活动。
译者注:大白话来讲他们的核心职能,平时就是研究 NetFlix IT 系统,看看哪里可能有问题,其次就是故障时拉通各个团队来解决,最后就是做咨询,类似教练的角色。这个团队的人应该很少,而且都是老炮。不知道这个团队是否参与制定线上规范。
Netflix 的团队遵循服务所有权模式 :自己开发自己运维。大多数时候,服务所有者会在问题影响客户之前发现问题。事情仍然偶尔会出现偏差,并会发生影响客户体验的事件。这就是 CORE 团队介入的地方:CORE 配置、维护和响应监控高级业务 KPI(例如每秒流启动数)的警报。当 KPI 告警时,CORE On-call 工程师会评估情况以确定影响范围,识别相关的服务,并把服务所有者拉进来一起解决。从那里,CORE 开始管理事件。
Netflix 的事件管理不遵循 ITIL 模型等常见管理实践。在事件中,CORE On-call 工程师通常担任故障 Manager 的橘色。他负责执行或委派任务,例如:
- 协调 - 引入相关服务的 owner 来帮助调查并专注于缓解措施
- 决策 — 做出关键选择以降低影响或止损(例如,决定是否应该切流)
- 记录 - 持续跟踪故障详情,比如涉及到哪些团队、为了缓解故障而做了哪些努力、当前影响的范围情况等
- 排查 - 协助各个服务的 owner 来了解是哪些系统导致了故障
- 联络 — 根据需要与内部和外部团队跨业务职能部门传达有关事件的信息
一旦成功减轻(译者注:原文用的 mitigated,难道降低了影响就可以做事后复盘了么?按理应该是止损之后再复盘呀,难道 mitigated 是想表达止损的意思?)了对客户的影响,CORE 就会负责协调事件后分析。根据事件的影响和独特性,分析有多种形式和规模,但大多数事件都会经历我们所说的“memorialization”。这个过程包括写下发生了什么、发生了哪些缓解措施以及讨论了哪些后续工作。对于特别独特、有趣或有影响力的事件,CORE 可能会举办事件复盘或进行更深入的长期调查。大多数事后分析,尤其是对于影响大的事件,都是与 CORE 的一位应用弹性工程师合作完成的。需要强调的一个关键点是,所有事件分析工作都侧重于事件的社会技术(sociotechnical)方面。因此,事后分析往往会为所有相关人员发现许多实际经验和改进。我们经常将这些发现与直接相关人员之外的人进行交流,以帮助在整个公司内分享经验教训。
“sociotechnical” 即 “社会技术的”,是一个融合社会因素与技术因素的概念。
在文中提到的事件分析场景中,它强调不能仅从技术角度(如系统漏洞、代码错误等)看待问题,还要考虑社会因素(如团队协作、沟通流程、人为决策等)。例如,分析一起服务故障时,不仅要排查技术层面的系统缺陷,还要审视团队在响应过程中的协作效率、信息传递是否顺畅等社会层面的因素,从而全面理解事件成因并找到更有效的改进方案。
如果 CORE 工程师没有在 On-call 或做故障分析,那他平时在忙什么?典型的比如:
- 保持运营可见性和响应能力 — 修复和改进我们的仪表板、警报和自动化
- 可靠性咨询 — 讨论各个方面,包括架构决策、系统可观测性、应用程序性能和 On-call 健康培训
- 系统性风险识别和缓解 — 与各个团队合作,识别和修复事件揭示的系统性风险
- 内部工具 — 构建和维护支持和增强我们的事件响应能力的工具
- 学习和重新学习复杂、不断变化的系统
- 与其他团队建立和维护关系
总体而言,我们发现这种形式的可靠性工作最适合 Netflix 的需求和目标。可靠性是 CORE 的主要关注点,这样我们有余力去主动探索潜在的关键业务风险以及有效应对这些风险。此外,对系统有一个广阔的视野,使我们能够在系统性风险发展时发现它们。通过成为一个独立的中央团队,我们可以更有效地在更大的工程组织中共享经验教训,并更轻松地临时与团队进行咨询。最终,CORE 对可靠性的专注使我们能够揭示关键业务社会技术(sociotechnical)风险,促进对这些风险的有效响应,并确保 Netflix 继续为我们的客户带来欢乐。