第 12 章 案例研究
引言
在本节中,我们将走出课堂,进入站点可靠性工程(SRE)的真实世界。请将本章想象成一本故事书,里面充满了来自科技行业一线的真实故事。这是一次幕后之旅,你将看到 SRE 专家如何应对日常挑战,并找到让一切平稳运行的解决方案。通过这些故事,我们将向你展示 SRE 的动态——从重大胜利到汲取的艰难教训。每个故事都是独特的,让你一窥所面临的不同问题以及找到的创造性解决方案。这是一个深入了解站点可靠性工程师生活的机会,并为你的职业道路寻找灵感。我们收集这些故事不仅是为了提供信息,更是为了激发你的好奇心和想象力。当你阅读它们时,我们鼓励你思考所做出的选择、所采用的策略以及所取得的成果。这是一种很好的学习方式,并能为解决 SRE 领域的问题获得新思路。
结构
在本章中,我们将涵盖以下主题:
- Netflix
- Spotify
- Amazon
目标
本章的主要目标是通过真实案例为读者提供 SRE 动态世界的第一手视角。本章旨在弥合理论与实践之间的差距,让读者有机会观察 SRE 原则如何在不同环境中应用,以解决复杂问题、增强系统可靠性并促进创新。通过探索来自不同行业的一系列场景,读者将能够对 SRE 策略的多样性和有效性获得更深入的理解和欣赏。通过这些案例研究,我们希望能激励未来的 SRE 专业人士在职业生涯中创新并追求卓越,同时配备从真实世界经验和解决方案中汲取的见解。
在互联网服务占主导地位的社会中,这些服务的可靠性至关重要。早在 2000 年代初期,作为在线服务巨头的 Google 在维护其庞大且不断扩展的基础设施方面遇到了巨大困难。Google 发明了 SRE 来解决这些问题。这种方法的发展、指导原则和成果为大规模服务管理和运营提供了富有洞察力的信息。
背景与困难
随着 Google 扩展其服务,传统的 IT 运营难以跟上其快速创新和部署的节奏。运营团队(负责确保稳定性和可用性)与软件开发人员(专注于推出新功能)之间的冲突显而易见。公司致力于为客户提供可靠、高速服务的承诺因这种摩擦而受到威胁。Google 的 SRE 理念归功于其创始人 Ben Treynor Sloss,他将其定义为“当你让一名软件工程师设计运营职能时会发生什么”。
认识到此前系统的缺点,Google 于 2003 年引入了 SRE。这些工程师主要负责确保 Google 服务的效率、可扩展性和可靠性。他们像软件工程师一样处理问题,但具备传统运营的知识。
Google 的软件可靠性工程模型
让我们看看 Google 是如何通过多年的实践形成这样一个明确的模型的。
服务等级目标与服务等级指标
以下是一些前面章节讨论过的服务等级指标;现在,我们将研究 Google 如何使用它们:
- SLI(服务等级指标):SLI 是用户期望的数值度量。例如系统延迟、错误率和正常运行时间百分比。
- SLO(服务等级目标):为 SLI 设定的目标。例如,如果服务的延迟是 SLI,那么 SLO 可能要求 99.9% 的情况下用户请求的延迟低于 200 毫秒。
- 错误预算:Google 提出了错误预算的概念,代表服务可接受的风险或不可靠程度,而不是追求无法实现的 100% 正常运行时间。如果某个服务超过了其错误预算,部署可能会被暂停,直到可靠性恢复到可接受水平。
自动化一切:Google 的 SRE 是自动化的坚定支持者。他们通过减少手动操作,消除了人为错误,并腾出精力专注于更具战略性、高价值的工作。
无指责事后审查:当出现问题时,审查侧重于系统原因而不是追究个人责任。这种策略鼓励持续学习与改进的文化。
消除辛劳:辛劳是指任何费力、重复、乏味且没有长期价值的工作。Google 希望确保任何 SRE 在辛劳上花费的时间不超过 50%,以便他们能专注于更重要的任务。
应用与技术
Google SRE 策略的应用与技术如下:
- 监控与告警:Google 使用先进的监控工具,仅在需要人工干预时才发出告警。这可以防止告警疲劳,并确保 SRE 只对严重问题做出响应。
- 容量规划:Google 的 SRE 使用数据驱动的方法预测流量和使用模式。这样做可以确保基础设施适当扩展以满足需求,而不会过度配置资源。
- 变更管理:Google 逐步实施变更,先从一小部分用户开始,然后密切监视结果再逐步扩大。
- 事件管理:当事件发生时,会遵循明确的协议来处理情况、咨询关键人员并执行事后审查。
优势与影响
Google SRE 策略的优势与影响如下:
- 可靠性:Google 的服务在创新与可靠性之间取得了令人印象深刻的平衡,确保用户每次都能获得高质量体验。
- 提高开发者速度:通过使用错误预算,开发人员可以确定他们可以接受多少风险,从而实现更频繁、更动态的发布。
- 成本效益:通过自动化流程和有效的容量规划,资源(计算和人力)得到了最大程度的利用。
- 协作:SRE 模式促进了运营与开发团队之间更好的沟通,从而带来更顺畅的产品发布。
- 可扩展性:借助 SRE 实践和基础设施工具,Google 能够有效管理极其庞大和复杂的基础设施。
文化格局的变化
除了技术优势,Google 的 SRE 策略还带来了文化上的转变:
- 共同责任:通过承担产品的整个生命周期,开发人员和 SRE 都培养了一种共同所有权感。
- 持续改进:对无指责事后审查的强调促进了一种从错误中学习的文化。
- 价值驱动运营:通过消除繁琐和耗时的职责,SRE 能够专注于为组织带来真正价值的项目。
Google 引入站点可靠性工程不仅仅是对运营问题的解决方案;它是一种变革性的方法,用于管理和运营大规模在线服务。通过将运营视为软件问题,并培养共同责任和持续学习的文化,Google 为许多其他公司树立了榜样。正如 Google 所确立的,SRE 原则和实践已成为科技行业的黄金标准,彰显了该模式的成功与持久影响力。
Netflix
世界上最大的流媒体服务 Netflix 无需介绍。Netflix 从 DVD 租赁服务崛起为全球顶级流媒体平台,是一个关于创新、可扩展性和无缝服务可靠性的故事。实施 SRE 概念是促成这种可靠性的工程实践之一——这并非巧合。让我们看看 Netflix 如何处理 SRE,并确保全球数百万用户拥有完美的观看体验。
背景与困难
随着 Netflix 从 DVD 租赁转向流媒体,基础设施需求发生了巨大变化。随着用户数量的增加,对可靠、持续可用服务的需求也随之增长。停机或延迟不仅令人烦恼,还会直接影响用户留存和信任。Netflix 必须在一个分布式、全球化且复杂的环境中保证可靠性,它借助微服务架构和云提供商的使用做到了这一点。
Netflix 的软件可靠性工程方法论
尽管 Google 的 SRE 概念已被广泛记录和讨论,但 Netflix 采用了一种略有不同的策略。他们高度重视自由与责任,给予工程师很大的自由度。这导致更少的刚性规则,但期望更高的所有权和问责制。
Netflix SRE 策略的核心思想
Netflix 致力于遵循以下核心原则,以取得最佳成果并保持不间断运营。
这些原则如下:
- 全周期开发者:Netflix 期望开发者积极参与其服务的整个周期——从编码到部署再到运营,这与传统的开发与运营划分形成对比。这种全面的方法培养出强烈的责任感和对系统深入的理解。
- 接受失败:Netflix 以其指导原则“失败不可避免”而闻名。他们不是仅仅在故障发生时做出响应,而是故意使用 Chaos Monkey 等工具注入错误并进行测试。这种策略确保系统能够抵御故障并快速恢复。
- 自动化一切:人工干预的风险被认为是存在的。因此,Netflix 在基础设施、部署、监控和纠正行动的自动化方面进行了大量投资。
- 运营洞察:鉴于自由与责任的理念,开发者需要深入了解他们的系统在实时环境中的运行方式。Netflix 的开发者可以使用复杂的仪表板和工具来理解和跟踪系统行为。
应用与技术
Netflix SRE 策略的应用与技术如下:
- 混沌测试:Netflix 的 Simian Army,特别是 Chaos Monkey,旨在通过混沌工程将随机故障注入其生产环境。这种主动策略确保服务具有弹性并能承受意外中断。
- 实时监控与分析:为了获取实时运营信息,Netflix 使用像 Atlas 这样的先进监控系统。这些工具能够即时反馈用户和系统的性能。
- 金丝雀部署:Netflix 在推出新服务或功能之前会使用金丝雀部署,将更新分发给一小部分用户,以监控和评估其影响。
- 自动回滚:Netflix 的系统配置为在部署后若出现系统降级或故障时自动回滚更改,以最大限度地减少服务中断。
- 有针对性的无指责事后审查:当故障发生时,重点不是追究责任,而是确定原因并确保不再发生。
优势与影响
Netflix SRE 策略的优势与影响如下:
- 增强的可靠性:尽管规模庞大,Netflix 在全球范围内提供了令人惊讶的稳定和可靠的观看体验。
- 开发者效率:Netflix 通过让开发者承担端到端的责任并提供所需资源,促进了快速而可靠的服务开发。
- 弹性:Netflix 的服务被设计为能够承受并从故障中恢复。
12. 案例研究
Netflix
Netflix 致力于为全球用户提供无缝、可靠的观看体验,尽管其规模极其庞大。
开发者效率:Netflix 通过赋予开发者端到端责任和所需资源,促进快速且可靠的服务开发。
韧性:Netflix 的服务设计旨在抵御故障并从故障中恢复,保持高可用性。这是通过混沌工程和主动测试实现的。
成本优化:Netflix 凭借自动化和云资源的有效利用,能够在不影响服务质量的前提下控制开支。
文化要素
Netflix SRE 的成功在很大程度上受其独特文化的影响:
- 所有权与问责制:根据“自由与责任”的座右铭,工程师被期望确保其服务完美运行,同时拥有这样做的自由度。
- 拥抱失败:将失败视为学习的机会,确保持续发展和改进。
- 协作:尽管拥有自主权,但非常强调团队合作、分享最佳实践和利用集体智慧。
尽管与传统 Google 模式不同,Netflix 的站点可靠性工程方法证明了 SRE 的核心原则:在不阻碍创新的前提下确保服务可靠性。Netflix 通过给予工程师大量自主权、构建所有权文化以及主动拥抱并从挫折中学习,创建了一个支持其全球规模和影响力的 SRE 范式。该范式的成功——体现在 Netflix 的稳定增长和极高的客户满意度上——为当今复杂技术环境中追求可靠性的企业提供了宝贵的指导。
Spotify
全球最大的音乐流媒体服务 Spotify 改变了世界的音乐消费方式。该公司规模庞大,拥有数百万活跃用户和数千万首曲目。其用户友好界面的背后是一个复杂的基础设施,负责确保完美体验。站点可靠性工程 (SRE) 对于维持这一水平至关重要。本案例研究探讨 Spotify 独特的 SRE 策略。
背景与挑战
自推出以来,Spotify 一直致力于为用户提供无延迟、无中断的音频内容流。随着平台走向国际化并变得更加多样化(包括播客和其他内容类型),维护可靠服务交付的复杂性也随之增加。庞大的用户需求、多样化的内容类型以及快速的功能发布带来了独特的可靠性挑战。快速功能发布是 Spotify 早期发展的一个显著特点。随着时间的推移,公司认识到需要专门的可靠性关注点,从而促成了更有组织的运维方法,并采纳了 SRE 理念。然而,Spotify 独特的组织文化——以独立团队(或小队)负责功能或服务为特征——对其 SRE 实践产生了影响。
Spotify 的软件可靠性工程方法
Spotify 围绕以下关键理念发展了其 SRE 方法:
- 自主权与一致性:与其总体组织理念一致,Spotify 的 SRE 实践允许团队选择最适合其需求的工具和流程,同时与组织目标保持一致。
- 黄金信号监控:作为系统健康指标,Spotify 监控黄金信号(如延迟、流量、错误和饱和度),而非监控所有内容。
- 事件管理与无指责事后复盘:当问题发生时,Spotify 优先快速解决、从错误中学习,并确保问题不再发生。
- 创新与可靠性平衡:Spotify 鼓励快速创新,但也理解需要在创新与系统可靠性之间取得平衡。
应用与技术
- 去中心化决策:与其基于小队的方法保持一致,Spotify 允许团队选择自己的监控工具、方法和响应计划。为了保持一定的一致性,这种去中心化配合了中央指令。
使用的技术包括:
- 实时监控:Spotify 使用内部和外部工具来跟踪异常、检查系统健康并触发警报。
- 主动基础设施管理:Spotify 经常规划用户增长并扩展其基础设施,以防止需求高峰对系统造成压力。
- 全面事件审查:事件发生后,团队进行深入审查,分析出了什么问题、响应的有效性,并实施预防措施。
Spotify 的 SRE 与开发人员密切合作,确保在开发过程的早期就纳入可靠性问题。
优势与影响
Spotify SRE 策略的优势和影响如下:
- 增强的可靠性:通过融入 SRE 理念,Spotify 提高了系统可靠性,确保即使在需求高峰期也能持续提供服务。
- 提升的用户体验:可靠的后端支持无缝内容流,助力 Spotify 成为优质音乐服务的声誉。
- 资源利用率:主动基础设施管理在性能和成本之间取得平衡,有效利用资源。
- 根本原因分析 (RCA):事件审查和无指责事后复盘促进了持续学习和改进的文化。
文化要素
Spotify 的文化对其 SRE 方法有很大影响:
- 小队自主权:团队可以自由做出决策,促进了责任感和主人翁意识。
- 持续改进:秉持成长心态,错误不被惩罚,而是被视为改进的机会。
- 协作:尽管强调个性,但各小队通常合作分享想法和最佳实践。
批评与挑战
尽管 Spotify 的 SRE 实践带来了众多优势,但也存在一些缺点:
- 过度去中心化:高度自主性有时会导致工具和流程不一致,危及系统可靠性。
- 平衡难题:在快速功能部署与系统可靠性之间找到最佳平衡点仍然是一个挑战。
Spotify 采纳和调整 SRE 理念的方式提供了一个引人注目的案例研究,展示了企业文化与实际需求的结合。他们对自主权的关注和对可靠性的承诺在 SRE 领域提供了独特的范式。Spotify 的策略强调,SRE 没有一刀切的解决方案;组织应根据其独特的环境、需求和文化来修改这些原则。Spotify 的持续增长和成功证明了其策略的价值。
全球最受欢迎的专业社交网站 LinkedIn 是一个以惊人速度发展的科技公司的典范。其平台拥有超过 7 亿专业人士,支撑它的复杂基础设施需要无与伦比的可靠性。在鼓励创新的同时维持这种可靠性是一项挑战,这正是 SRE 发挥作用的地方。本案例研究探讨 LinkedIn 独特的 SRE 策略。
背景与挑战
由于平台用户群快速增长以及服务范围广泛(包括教育课程和职位发布),确保无缝用户体验至关重要。任何中断或错误都可能影响数百万用户,并可能损害品牌声誉。因此,对专注、可扩展且有效的可靠性框架的需求推动了 SRE 原则的采用。
LinkedIn 的软件可靠性工程历程
由于其微服务架构带来的挑战以及快速增长的全球用户群的期望,LinkedIn 最初涉足 SRE。在认识到需要超越传统 IT 运维后,LinkedIn 修改了 SRE 模型以匹配其组织需求。
LinkedIn SRE 方法的核心原则
LinkedIn 致力于以下核心原则,以实现最佳结果并保持不间断运营:
- 协作而非孤岛:协作而非各自为政是 LinkedIn SRE 策略的关键组成部分,确保从一开始就将可靠性融入产品中。
- 自动化与自愈:LinkedIn 高度重视自动化重复性操作,并创建能够自行识别和修复问题的自愈系统。
- 容量规划与性能:考虑到其用户群的动态特性,LinkedIn 主动投资于容量规划和性能优化。
- 无指责事后复盘:与其他 SRE 方法类似,LinkedIn 鼓励一种文化,将错误视为成长的机会而非指责的理由。
应用与技术
应用与技术如下:
- InSync:LinkedIn 的关键 SRE 技术之一,InSync 致力于确保部署在整个公司庞大生态系统中保持一致,降低由版本不一致引起的异常可能性。
- 自动修复:LinkedIn 使用 Project Waterbear,实现对常见问题的自动修复。这缩短了平均恢复时间,并使 SRE 能够专注于更复杂的问题。
- 主动监控:LinkedIn 结合使用内部工具和外部解决方案定期监控其系统,以确保快速发现并解决任何潜在问题。
- 流量转移:LinkedIn 使用流量转移策略,根据需要将用户请求路由到更稳健的系统,确保部署期间或可能出现问题时的无缝用户体验。
优势与影响
以下是前述核心原则的优势和影响概述:
- 增强的用户体验:LinkedIn 的 SRE 程序通过大幅减少系统中断,改善了用户体验。
- 效率与生产力:自动化和自愈系统使 SRE 和开发团队能够专注于创新而非救火。
- 可扩展性:SRE 模型确保基础设施随着 LinkedIn 用户群的增长而平稳扩展,以支撑其持续增长。
- 组织学习:无指责事后复盘和对持续改进的强调促进了集体学习的文化。
文化要素
让我们讨论实施 SRE 原则的文化方面:
- 所有权与问责制:LinkedIn 采用的 SRE 方法促进了一种文化,即团队对其管理的服务有强烈的认同感并承担责任。
- 持续学习:公司鼓励一种心态,将挑战视为学习的机会。
- 协作:协作一直是 LinkedIn SRE 之旅的文化支柱,有助于打破孤岛并增加不同部门之间的合作。
挑战与变革
让我们讨论 LinkedIn 实施 SRE 实践时的情况:
- 复杂性管理:随着 LinkedIn 扩张和产品多样化,管理日益增长的复杂性是一个挑战。
- 工具演进:由于技术生态系统是动态的,LinkedIn 的工具和技术必须不断进步。
- 速度与可靠性平衡:与许多组织一样,LinkedIn 努力在确保快速功能部署的同时维护系统可靠性。
LinkedIn 调整 SRE 模型的方式展示了该方法对不同组织模式的适应性。通过将 SRE 理念融入其现有文化与实践,用户体验得到改善,效率得到提升,并支持了 LinkedIn 的快速增长。随着平台的持续发展,其 SRE 实践无疑将在帮助管理规模和复杂性问题中发挥关键作用。
12. 案例研究
Amazon
Amazon,这个电子商务平台,已将其服务从在线零售扩展到云计算、人工智能和娱乐领域。Amazon 运营的庞大规模在确保高可用性和系统可靠性方面带来了独特挑战。本案例研究揭示了 Amazon 在 SRE 方面的独特方法。
背景与挑战
Amazon 最初是一家在线书店,但很快实现了业务多元化,构建了一个复杂的服务网络,每个服务都有其自身的可靠性要求。从准时交付包裹到流式传输视频以及运行庞大的云基础设施,Amazon 对结构化且有效的可靠性方法的需求变得至关重要。
Amazon 的 SRE
与一些直接效仿 Google 等公司模式采用 SRE 的公司不同,Amazon 的方法源于其早期对卓越运营的承诺。该公司始终关注客户满意度,这直接转化为其服务的性能和可靠性。
Amazon SRE 方法的核心原则
Amazon 致力于遵守基本原则,以便获得最佳结果并保持业务平稳运行:
- 客户至上:Amazon 的领导力原则“客户至上”是其 SRE 实践的基石。这意味着系统的设计和监控以最终用户体验为主要指标。
- 基础设施即代码 (IaC):Amazon 倡导 IaC 原则,使其能够自动化大部分基础设施管理,从而获得一致且可靠的环境。
- 去中心化与所有权:在 Amazon,构建服务的团队负责运营该服务。这种被称为“你构建,你运行”的模式确保开发者直接参与其服务的运营健康。
- 自动化:从部署到恢复机制,Amazon 高度依赖流程自动化,确保对出现的问题做出快速响应。
实施与实践
让我们讨论 Amazon 为维持这些原则而采取的常规实践:
- 细粒度监控:Amazon 结合使用内部工具和 AWS 服务(如 Amazon CloudWatch)来监控系统健康,重点关注与客户体验直接相关的指标。
- 自愈系统:通过 AWS 服务(如 Auto Scaling),服务可以从故障中自动恢复,保持可用性。
- 彻底的故障复盘:当发生中断或重大事件时,重点是了解根本原因,并确保改进系统以防止未来再次发生。
- 游戏日:Amazon 定期进行“游戏日”,在受控环境中模拟故障。这不仅可以测试系统的弹性,还可以帮助团队练习和改进他们的故障响应。
收益与影响
以下是前述关键原则的收益与影响的概述:
- 更高的弹性:得益于 SRE 原则所实施的稳健实践,Amazon 的服务(尤其是 AWS)拥有高可用性。
- 运营效率:通过自动化许多运营任务,Amazon 可以用相对精简的团队管理庞大的基础设施。
- 快速创新:有了可靠的系统和自动化,Amazon 可以专注于创新和推出新功能/服务,而不会损害可靠性。
- 反馈循环:“你构建,你运行”模式确保开发者直接收到关于其服务运营健康的反馈,从而持续改进。
文化层面
让我们谈谈这些指导理念如何在文化上被接受:
- 所有权:Amazon 的文化强调所有权。这延伸到系统可靠性,团队对其部署的服务承担全部责任。
- 行动偏好:另一项领导力原则“行动偏好”鼓励团队主动出击,迅速应对出现的挑战。
- 学习与好奇:持续学习是 Amazon 文化的一个重要方面,这自然延伸到了他们的 SRE 实践中。
挑战与适应
让我们讨论 Amazon 在实施 SRE 实践方面的经验:
- 规模:Amazon 庞大的服务组合带来了独特的挑战,因为每个服务可能有其自身的可靠性要求。
- 复杂性:确保相互连接的服务之间的无缝集成和可靠性是一项持续的挑战。
- 快速扩张:随着 Amazon 不断推出新服务并进入新市场,保持相同的可靠性标准需要持续适应。
Amazon 对 SRE 的诠释证明了该公司对卓越运营和客户满意度的承诺。通过将 SRE 原则融入其独特的组织文化和结构中,Amazon 确保了其多样化服务的高可靠性。该方法以所有权、自动化和持续学习为特征,为任何希望在当今复杂技术环境中提高运营可靠性的组织提供了宝贵的见解。
结论
当我们结束这一通过案例研究探索各种 SRE 格局的洞察之旅时,很明显 SRE 的世界既多样又动态。我们探索的每个叙述都体现了该领域固有的创造力、坚韧性和创新性。从应对可伸缩性挑战的小型初创公司,到像 LinkedIn 这样制定精细战略以确保无缝运营的技术巨头,SRE 的光谱充满了经验教训和灵感。这些案例研究不仅应该作为了解 SRE 原则实际应用的窗口,还应作为在您的 SRE 工作中激发创造性解决问题和创新思维的催化剂。当我们回顾行业资深人士所经历的成功与挫折时,很明显 SRE 之路是由持续学习和适应铺就的。
当您继续前行,带着从这些案例研究中获得的知识和见解时,愿您能找到在 SRE 领域创造自己的成功与创新故事的灵感。请记住,这里介绍的案例研究仅仅是站点可靠性工程中等待您的无限机遇与挑战的缩影。无论您是经验丰富的专业人士还是刚刚开启职业生涯的新手,我们希望这些真实世界的例子能加深您的知识,并激发您对影响技术与创新未来格局的热情。
加入本书的 Discord 空间
加入本书的 Discord 工作区,获取最新更新、优惠、全球技术动态、新书发布以及与作者的交流: https://discord.bpbonline.com
12. 案例研究
图片600(第337页)