以下这些文章的核心思想是:稳定性不仅依赖技术,更依赖于组织文化、流程规范和人员管理。 单纯的技术手段无法根除问题,必须通过系统性的组织和流程建设来提升整体韧性。

“1-3-5-10”原则:B站如何落地安全生产体系?
3年零严重故障:货拉拉如何连续保持业务高峰的稳定运行?
月活近千万,连续365天无故障:货拉拉怎么做稳定性指标度量?
团队新人多,稳定性经验不足,研发质量怎么保障?
开发任务都完不成,哪有空搞稳定性?先看看这13条建议
保险业务连续性保障:从测试到生产,混沌平台建设节奏如何把控?
系统故障工程师居然可以不背锅?看看几家大厂是怎么做到的!


一、 组织文化与责任:从“追责”到“改进”的转变

问题与教训:

  • “背锅”文化盛行:故障发生后,首要任务是找出“责任人”并进行惩罚,导致团队成员相互推诿、隐瞒问题,无法进行坦诚的复盘。
  • 对人过度追责:将故障简单归咎于个人操作失误,忽视了流程、工具和系统设计上的根本缺陷。

实践与提升方法:

  1. 建立“无责文化”(No Blame Culture),对事不对人
    • 怎么做:明确故障定责的目的是为了改进系统,而非惩罚个人。复盘时聚焦于“发生了什么”、“为什么发生”、“如何防止再次发生”,而非“谁干的”。
    • 降低问题:营造安全的环境,鼓励一线工程师主动报告问题和潜在风险,敢于承认错误,从而更早地发现问题。
  2. 区分“定责”与“惩责”
    • 怎么做:采用“按事定责,对违规者惩责”的原则。
      • 定责(Responsibility):分析故障中各团队、各系统模块的责任田,明确后续的改进责任方。
      • 惩责(Punishment):仅针对明知故犯、违反“高压线”原则(如绕过发布流程、删除生产数据等)的行为进行处罚。
    • 降低问题:避免因一次无心之失就全盘否定个人贡献,同时对恶意或严重违规行为保持威慑力。
  3. 允许犯错,但不允许一错再错
    • 怎么做:对于因经验不足或流程缺陷导致的首次失误,以教育和改进为主。但如果同样的问题在改进措施落地后再次发生,则需严肃处理,说明流程未被遵守或改进无效。
    • 降低问题:鼓励创新和探索,同时确保改进措施真正落地,形成闭环。
  4. 将“人”作为系统中最不重要的因素来设计
    • 怎么做:借鉴谷歌的范式,通过自动化、工具化、流程化来减少人为操作的依赖和出错空间。例如,通过代码化的发布流程(GitOps)、自动化的故障注入和恢复、强约束的代码规范检查等。
    • 降低问题:从根本上减少人为失误的可能性,提升系统的“防呆”能力。

二、 流程与规范:从“口号”到“落地”的执行

问题与教训:

  • 规范流于形式:制定了很多规范和流程,但仅通过邮件或会议宣导,缺乏强制力,最终无人遵守。
  • 缺乏统一认知:团队成员对故障处理、变更发布等关键流程的理解不一致,导致执行混乱。

实践与提升方法:

  1. 用工具做强制约束,而非依赖自觉
    • 怎么做:将规范嵌入到工作流工具中。例如:
      • 代码提交时自动检查是否引用了低版本二方包。
      • 故障处理流程在工单系统中流转,自动@负责人,超时自动升级。
      • 变更发布必须经过审批流程和自动化测试,否则无法执行。
    • 降低问题:将“人要遵守规范”转变为“系统不允许违规操作”,极大提高规范的执行率。
  2. 设立明确的“保护期”和“传帮带”机制
    • 怎么做:为新入职的工程师设置“保护期”,在此期间,线上问题由其“师兄”承担主要责任。这能有效推动“师兄”主动向新人传授稳定性文化和最佳实践。
    • 降低问题:加速新人融入,确保稳定性经验在团队内有效传承,减少因新人经验不足导致的故障。
  3. 通过培训和考核确保规范落地
    • 怎么做:参考福格行为模型(动机、能力、提示),不能假设员工“知道”就会“做”。需要通过培训提升能力,通过考核(如让员工录制故障处理视频作为“作业”)来验证掌握程度,通过工具(如系统提示)来提供操作提示。
    • 降低问题:确保每一位成员都真正理解并具备执行规范的能力,避免“知而不行”。
  4. 建立“统一的故障认知”
    • 怎么做:定义清晰的故障等级标准(如B站的1-3-5-10原则:1分钟发现、3分钟定位、5分钟止损、10分钟恢复),并确保所有团队成员都理解并认同。在日常的小问题处理中就按照此标准演练,不断强化。
    • 降低问题:在真正发生故障时,团队能快速、有序地响应,避免因认知不一致导致的混乱和延误。

三、 组织架构与资源投入:从“兼职”到“专职”的保障

问题与教训:

  • 稳定性工作与业务开发冲突:研发团队忙于业务需求,无暇顾及稳定性建设,“开发任务都完不成,哪有空搞稳定性”。
  • 资源投入不足:缺乏专职团队或足够的资源来系统性地推进稳定性工作。

实践与提升方法:

  1. 设定硬性的资源投入比例
    • 怎么做:像亲宝宝那样,明确规定业务需求与稳定性需求的投入比例(如9:1),确保每个团队有不低于10%的精力持续投入在稳定性建设上。
    • 降低问题:将稳定性工作常态化,避免“平时不烧香,临时抱佛脚”,从源头上保障投入。
  2. 设立横向的稳定性组织
    • 怎么做:成立由专职人员和各业务线虚拟成员组成的“稳定性小组”或“SRE团队”。该团队负责:
      • 制定和推广稳定性规范。
      • 主持故障复盘和定级。
      • 推动共性问题的解决和工具平台建设。
      • 在业务线稳定性问题严重时,介入并推动专项整改。
    • 降低问题:打破团队壁垒,实现经验共享和资源协同,确保稳定性工作有牵头人和推动力。
  3. 建立“问题驱动”的资源争取机制
    • 怎么做:利用“故障驱动”来向上级争取资源。清晰地展示故障带来的业务损失和改进后的收益,以此证明增加人力或预算投入稳定性的必要性。
    • 降低问题:将稳定性建设从“成本中心”转变为“价值中心”,获得高层支持,解决资源不足的困境。
  4. 根据业务特性平衡“稳”与“快”
    • 怎么做:不同业务对稳定性的要求不同。对于阿里云这类基础设施,必须“基础不牢,地动山摇”,投入更多资源保稳定;对于部分互联网业务,可能更追求快速迭代,需要在“跑得快”和“跑得稳”之间找到平衡点。
    • 降低问题:避免一刀切,资源分配更精准有效,确保投入产出比最大化。

四、 混沌工程与前瞻性建设:从“被动救火”到“主动防御”

问题与教训:

  • 害怕在生产环境做实验:担心混沌工程导致业务中断,不敢在生产环境进行演练。
  • 仿真环境与生产环境不一致:在测试环境演练效果有限,无法发现生产环境的真实问题。

实践与提升方法:

  1. 分阶段、有节奏地推进混沌工程
    • 怎么做:遵循“开发环境 -> 仿真/预生产环境 -> 生产环境(边缘系统)”的路径。初期在开发环境补齐漏洞,中期在仿真环境重点演练核心应用,后期在生产环境的非核心、低流量系统(如活动平台)进行小范围尝试。
    • 降低问题:逐步建立信心,控制风险,确保混沌工程能安全、有效地落地。
  2. 建设强大的监控和熔断能力
    • 怎么做:在推进混沌工程前,必须先整合好各类监控系统(硬件、网络、应用、日志等),确保能及时、全面地感知系统状态。同时,必须具备强有力的中断控制能力,一旦实验超出预期,能立即停止。
    • 降低问题:将混沌实验的风险控制在最小范围内,避免演变为真实故障。
  3. 设定清晰的目标(如0-1-5-10)
    • 怎么做:为混沌工程设定明确的阶段性目标,例如“0故障 -> 1次演练 -> 5个核心应用覆盖 -> 10次常态化演练”。根据目标制定详细的落地和保障方案。
    • 降低问题:确保项目有清晰的方向和衡量标准,便于呈现价值和争取支持。

总结:

提升组织与流程层面的稳定性,关键在于构建一个以改进为导向、以工具为保障、以协作为基础、以预防为重心的良性循环。通过改变文化、固化流程、保障资源和主动防御,可以系统性地降低人为失误、流程缺陷和响应迟缓等问题的发生,最终实现业务的长期稳定运行。