9.0 第 9 部分简介:运维、可靠性与可观测性
构建软件只是工作的一半。让它良好运行是另一半,而对大多数组织来说,这一半永无止境。本部分讲的是在生产环境中运维系统。你将定义”足够可靠”意味着什么,并朝着这个目标进行工程设计。你将学会足够深入地洞察复杂系统,从而调试意外情况、在出现故障时做出连贯的响应,并且在做这一切的同时不浪费资金、不排放多余的碳。正是这些学科,将一个在演示中能运行的系统,变成一项人们可以依赖多年的服务。
对于大型团队而言,这些关切不再是背景活动,而成为一套自成体系的系统。一个现代平台横跨数百个服务、多个团队、多个区域和第三方依赖,没有任何一个人能把整体装在脑子里。规模同时提高了可靠性的价值和出错的代价。一小时的停机会变成收入损失和信任受损。一条含糊的告警会变成成千上万条呼叫。云资源的一点点浪费会变成数百万美元。在这种规模下,运维需要共享的语言、共享的遥测数据和共享的结构,这样众多人员才能对一个没有人完全拥有的系统采取一致行动。
企业和政府环境让每一项利害关系都更加突出。受监管行业背负法定的可用性承诺、审计要求和强制性的停机报告义务。面向公民的服务必须切实达到公开发布的性能目标,绝不能简单地下线。公共部门在日益增长的可持续性与净零排放要求下,支出的是纳税人的资金。在这些环境中,运维、可靠性和可观测性(从系统的外部输出理解其内部状态)不仅仅是运维卫生工作。它们是问责、安全与制度信任的工具。
本部分的章节
9.1 站点可靠性工程: 通过 SLI(服务水平指标)、SLO(服务水平目标)和 SLA(服务水平协议)来定义可靠性,使用错误预算(相对完美可靠性所允许的差额)在速度与稳定性之间取得平衡,通过自动化不懈地减少繁重劳动(重复性的、可自动化的手动运维工作),并预测容量,让规模化永远不会让你措手不及,从而将软件工程应用于运维。
9.2 可观测性与遥测: 从仅监控已知故障,转向真正的可观测性,建立在系统发出的遥测数据(由共享标识符关联的指标、日志、跟踪和事件)之上,采用厂商中立的 OpenTelemetry(一种用于生成和采集遥测数据的开放标准),并设计只在出现可操作、用户可见的问题时才呼叫人员的告警机制。
9.3 事件管理: 通过可持续的待命轮值、具有明确角色和严重级别的清晰事件指挥结构(用于协调响应的既定层级体系)、诚实的利益相关者沟通,以及推动纠正措施落实到位的无责事后总结(针对系统性原因而非个人过错的事件复盘),来检测、协调、解决中断并从中学习。
9.4 成本、可持续性与绿色软件: 通过 FinOps(面向云支出的财务运维)可见性与优化、碳感知(在电力更清洁的时间和地点安排工作)与高能效设计、持续的资源调整,以及在成本、性能与可靠性这三者之间进行刻意权衡,为生产环境带来财务与环境层面的问责。
9.5 灾难恢复与业务连续性: 通过业务影响分析设定恢复时间目标和恢复点目标,保持经过测试且不可篡改的备份,在成本与速度的谱系中选择恢复策略,并演练故障切换,让恢复能力得到证明而非仅仅是寄望,从而为”糟糕的一天”做好准备。
9.6 混沌工程与韧性测试: 通过定义稳态、形成假设,并在可控的影响范围内注入真实的故障,来建立对系统能够承受动荡状况的信心,从游戏日逐步发展为持续、自动化的韧性验证。
9.7 容量规划与需求预测: 让计算、存储和网络的供给与预测需求相匹配,并留出刻意的余量,使用负载测试和排队论推理,让延迟不会在接近饱和时飙升,并在成本与可靠性之间取得平衡。
9.8 待命与运维就绪: 设计具备可操作告警、清晰升级路径以及生产就绪评审和操作手册的人性化、可持续的待命机制,让运维服务的人员能够成功,而不是精疲力竭。
这些章节之间的相互关系
这四个章节构成一个紧密的运维闭环。站点可靠性工程(第 9.1 章)设定目标:SLI 和 SLO 定义了什么是可靠,而错误预算决定何时放慢速度。可观测性(第 9.2 章)是你衡量并捍卫这些目标的方式,因为基于 SLO 消耗速率的告警只有在遥测数据结构良好时才有效,它也是响应人员找到故障”原因”的方式。事件管理(第 9.3 章)是当你消耗错误预算的速度超出计划时所发生的事情:第 9.2 章中的告警触发,指挥结构介入,随后产生的无责事后总结将持久的改进反馈回可靠性和监测工作中。成本与可持续性(第 9.4 章)闭合了这个循环。它们坚持要求你按照第 9.1 章中定义的 SLO 来配置可靠性和性能,而不是处处过度打磨,从而使成本、性能与可靠性这三者被刻意地而非出于恐惧地加以平衡。
这些联系远远超出本部分的范围。此处的可靠性归属由第 1.2 章的团队拓扑塑造,并通过第 8.1 章和第 8.4 章的流水线与平台工程来交付,因为安全、频繁的部署是大规模运维的前提条件。让事件响应保持诚实的无责、学习导向文化,始于第 1.1 章,而支撑这些实践的可靠性与韧性模式则根植于第 3.3 章和第 3.5 章的架构之中。最后,这些学科所产生的证据()从可供审计的遥测数据,到事后总结,再到成本归因()直接反馈进第 10.2 章和第 11.3 章的风险、保证与治理工作中。运维得当时,本部分所述的系统能让一个组织在代码编写完成很久之后,依然信守其承诺。