推荐 - SRE 精英联盟发布的《SRE实践白皮书》1.0.5 版本
相关阅读
笔者之前整理的相关文章:
发布公众号
下载地址:http://docs.sre-elite.com/SRE-White-Paper-v1.0.5.pdf
白皮书介绍
Site Reliability Engineering(SRE)的主要目标是通过结合软件工程和系统运维的最佳实践,提高大规模分布式系统的可靠性、可用性、性能和效率。以下是部分SRE追求的核心目标:
• 可靠性:
SRE的首要目标是确保服务和系统的可靠性。这包括减少故障、提高系统的稳定性,以确保用户在任何时候都能够获得一致的高质量服务。• 可扩展性:SRE 致力于设计和实施能够随着用户需求增长而扩展的系统。这涉及到对系统的架构和资源进行优化,以便在不降低性能的情况下,适应实际工作负载持续不断的峰谷状态变化。
• 性能:
SRE关注系统的性能,旨在确保系统能够在合理时间内快速响应用户请求。这包括对系统瓶颈的持续监控和优化,以提高整体性能。• 自动化:
SRE倡导自动化运维工作,以减少人为错误和提高效率。通过自动化,可以更快速地部署新功能、检测并响应故障,并合理地开展系统的升级和维护工作。• 监控和告警:SRE 强调对系统的全面监控,以便及时发现并解决问题。通过设置有效的告警系统,可以在重大问题发生前迅速做出反应,从而减少对用户的影响。
• 故障恢复:
SRE强调迅速而有效地恢复服务,以最小化用户体验的中断。这包括制定和演练紧急情况的应急计划。
企业实现 SRE 核心目标的过程并不相同,落地路径各异。不论 SRE 部门(团队)在企业中的存在形式和所处位置,SRE 相关实践工作存在于大量流程中。这些工作流程与研发、测试、运维、产品运营等团队紧密的融合在一起,所有参与团队都在上述共享的 SRE 目标上做着各自的贡献。
目录
**第一章 SRE整体介绍** ............................................ 1- 1.1 前言 .................................................. 1- 1.2 SRE发展历程 ........................................ 2- 1.3 SRE的目标 ............................................ 4**第二章 SRE的组织架构** ........................................ 6**第三章 SRE的职能** .............................................. 10- 1 可靠性架构设计 ......................................... 10- 1.1 应用韧性架构 ..................................... 11- 1.1.1 分布式设计 ................................. 11- 1.1.2 解耦设计 ................................... 11- 1.1.3 冗余设计 ................................... 11- 1.1.4 熔断设计 ................................... 12- 1.1.5 限流设计 ................................... 12- 1.1.6 降级设计 ................................... 13- 1.1.7 可观测设计 ................................. 13- 1.2 基础设施保障 ..................................... 14- 1.2.1 机房多活 ................................... 14- 1.2.2 网络容灾 ................................... 14- 1.3 数据灾备 ......................................... 14- 1.3.1 数据备份 ................................... 14- 1.3.2 数据回滚 ................................... 14- 2 研发保障 ............................................... 15- 2.1 研发保障体系设计 .................................. 16- 2.1.1 代码可靠性 ................................. 16- 2.1.2 代码仓库可靠性 ............................. 28- 2.1.3 构建可靠性 ................................. 34- 2.1.4 制品可靠性 ................................. 38- 2.2 研发保障工程体系设计 .............................. 42- 2.2.1 面向研发保障的持续集成流水线 ................ 42- 2.2.2 面向研发保障的可观测设计 .................... 46- 2.2.3 面向研发保障的操作调度操作平台 .............. 48- 2.2.4 面向研发保障的ITSM 平台 ..................... 51- 2.2.5 面向研发保障的容器平台 ...................... 51- 2.2.6 面向研发保障的编译加速平台 .................. 53- 2.3 研发保障案例 ...................................... 55- 2.3.1 腾讯游戏全球研发保障实践 ................... 55- 2.3.2 某语音直播公司研发过程保障实践 ............. 129- 3 入网控制 .............................................. 152- 3.1 运行环境适配 .................................... 152- 3.1.1 运营环境设计 .............................. 152- 3.1.2 容器云适配 ................................ 154- 3.1.3 数据库存储适配 ............................ 157- 3.1.4 信创适配 .................................. 158- 3.2 运行环境交付 .................................... 163- 3.2.1 基础资源服务 .............................. 163- 3.2.2 可观测策略 ................................ 165- 3.2.3 自动化策略 ................................ 167- 3.3 测试策略 ........................................ 169- 3.3.1 连通性验证 ................................ 169- 3.3.2 功能测试 .................................. 171- 3.3.3 性能压测 .................................. 174- 3.3.4 数据迁移 .................................. 179- 3.4 变更评审 ........................................ 180- 3.4.1 稳定性架构设计评估 ........................ 180- 3.4.2 非功能性技术评估 ......................... 182- 3.4.3 变更保障准备工作评估 ...................... 185- 3.4.4 新系统或新业务上线保障评估 ............... 186- 4 变更管理 .............................................. 188- 4.1 发布管理与变更管理关系阐述 ....................... 189- 4.2 变更体系设计 ..................................... 191- 4.2.1 变更体系设计原则 .......................... 191- 4.2.2 变更及发布流程设计 ........................ 192- 4.2.3 变更的工程体系设计 ........................ 215- 4.3 变更管理案例 ..................................... 243- 4.3.1 B站变更防控的设计与实践 ................... 243- 4.3.2 携程云平台基础设施变更管理实践 ............. 265- 4.3.3 某银行变更管理设计与实践 ................... 287- 4.4 发布管理案例 ..................................... 306- 4.4.1 中移互联网敏捷发布平台建设实践 ............. 306- 4.4.2 某证券变更一体化平台建设实践 ............... 325- 4.4.3 游戏GitOps发布管理实践 .................... 343- 5 故障应急 .............................................. 350- 5.1 故障体系 ......................................... 350- 5.1.1 故障定义 ................................... 350- 5.1.2 故障等级 ................................... 350- 5.1.3 故障序列 ................................... 351- 5.1.4 关键业务场景 ............................... 352- 5.1.5 应用服务SLI/SLO/SLA ........................ 354- 5.2 故障应急体系 ..................................... 362- 5.2.1 故障应急体系设计原则 ....................... 362- 5.2.2 故障应急流程设计 ........................... 362- 5.2.3 故障应急工程体系设计 ....................... 389- 5.3 故障应急案例 ..................................... 402- 5.3.1 小米故障应急响应经验分享 ................... 402- 5.3.2 中国联通数字化监控平台稳定性保障实践 ....... 431- 5.3.3 腾讯全球化游戏故障管理实践 ................. 463- 5.3.4 XX银行应急管理一体化平台建设实践 .......... 503- 5.3.5 美图故障管理体系搭建实践 ................... 517- 5.3.6 B站轻量级容灾演练体系构建 ................. 572- 5.3.7 蚂蚁故障应急全流程体系构建及应用实践 ....... 612- 5.4 重大技术保障 ..................................... 650- 5.4.1 整体统筹保障 .............................. 650- 5.4.2 技术方案保障 .............................. 651- 5.4.3 工具可靠性保障 ............................ 652- 5.4.4 突发事件保障 .............................. 654- 5.4.5 示例1:Oppo 春节业务保障 ................. 655- 5.4.6 示例2: 交易类大促核心保障流程和方案 ...... 670- 5.4.7 示例3:银行类通用重大保障活动 ............ 673- 5.4.8 示例4:发布会直播通用重大保障活动 ........ 676- 5.4.9 示例5:哀悼日停止游戏服务保障 ............ 680- 6 上线后持续优化工作 .................................... 687- 6.1 用户体验优化 .................................... 687- 6.1.1 基于用户端的直接用户体验优化 .............. 687- 6.1.2 基于系统端的间接用户体验优化 .............. 688- 6.2 运维琐事的日常管理及优化 ........................ 691- 6.2.1 运维琐事的介绍 ............................ 691- 6.2.2 运维琐事的质量管理 ........................ 694- 6.2.3 运维琐事的效率管理 ........................ 695- 6.3 业务全生命周期工具建设 ........................... 696- 6.3.1 研发期工具建设 ............................ 697- 6.3.2 上线期工具建设 ............................ 698- 6.3.3 运营期工具建设 ............................ 699- 6.3.4 下线期工具建设 ............................ 700- 6.4 运营成本分析及优化 .............................. 701- 6.4.1 运营成本分析及优化的必要性 ................ 701- 6.4.2 运营成本实时监控 .......................... 702- 6.4.3 运营成本分析及优化的指标 .................. 702- 6.4.4 运营成本的统计及分析方法 .................. 704- 6.4.5 运营成本的优化方法 ........................ 707- 6.4.5 运营成本优化持续运营 ...................... 710- 6.5 持续改进 ........................................ 712- 6.5.1 效率持续改进 .............................. 712- 6.5.2 质量持续改进 .............................. 714- 6.5.3 安全持续改进 .............................. 715- 6.5.4 人员能力持续提升 .......................... 716- 6.5.5 流程持续改进 .............................. 718- 7 平台工程 .............................................. 721- 7.1 标准应用平台工程建设 ............................ 721- 7.1.1 应用元信息平台 ............................ 722- 7.1.2 统一资源供给 .............................. 725- 7.1.3 持续集成 .................................. 726- 7.1.4 持续部署 .................................. 730- 7.1.5 部署编排 .................................. 733- 7.1.6 可观测 .................................... 737- 7.1.7 成本(定价、用量、出账) .................. 738- 7.2 异构应用平台工程建设 ............................ 741- 7.2.1 总体设计 .................................. 742- 7.2.2 aPaaS结构设计 ............................ 743- 7.2.3 iPaaS结构设计 ............................ 749- 7.2.4 通用原子设计 .............................. 751- 7.2.5 SaaS分级 ................................. 758- 7.2.6 服务管理 .................................. 761- 7.2.7 安全与审计 ................................ 763**附录** ......................................................... 768- 1 参考文献 ......................................... 768- 2 术语 .............................................. 768
精彩内容
可靠性架构设计是指在进行系统架构设计的过程中,根据系统的可靠性需求,采用分布式设计、解耦设计、冗余设计等高可靠性的架构设计方案,以提升系统的可靠性。
SRE团队提供的全托管研发保障体系,涵盖从代码提交、代码仓库管理、构建流程到制品分发的全过程。通过代码分析、仓库安全管理、编译加速、制品共享等多项服务,确保了研发过程的高效性和安全性。大部分情况下,研发只需要往平台提交代码的后,后继的环节将不需要进行干预,即可高效获取到相应的制品。
变更管控平台面向不同用户提供丰富的功能,包括面向研发和SRE的变更信息感知、检索和订阅,以及面向平台方提供的变更场景接入、托管等能力。
技术风险管理平台应面向各个业务部门,涵盖了众多业务单元(BU)。他们均能在该平台上进行操作。产品形态主要服务于普通的 SRE(Site Reliability Engineer)人员以及业务接口人员。稍后我会介绍我们的整体应急响应架构。针对不同的用户角色,我们设计了多种工作台形式。
面向异构应用的平台工程的总体结构可划分为3层,自下而上依次是:原子平台层、PaaS 层和 SaaS 层,其中 PaaS 层包括 aPaaS 和 iPaaS 两大核心能力,SaaS 根据场景分为一级 SaaS 和二级 SaaS 。除此之外,平台工程本身也需要提供平台服务管理和安全审计的能力。