书刊介绍
《SRE原理与实践》内容简介
这是一本从架构、开发、测试、运维全流程讲解如何进行软件可靠性工程建设的著作,它将帮助读者构建针对软件可靠性工程的完整的知识体系、工程体系和理论体系。
本书作者是虎牙科技的SRE架构师,他基于20余年的架构、研发和运维经验,用4年时间反复打磨,代表中国的工程师总结了中国互联网企业的SRE方法和经验。本书得到了中国SRE奠基人、虎牙科技CEO以及华为、腾讯、阿里、B站、亚马逊等企业的10余位技术专家高度评价并一致推荐。
本书参考传统可靠性工程及软件可靠性工程体系,把传统可靠性工程中的“六性”(可靠性、维修性、测试性、保障性、安全性、环境适应性)转化为互联网软件可靠性工程的6种能力(可靠性设计能力、观测能力、修复能力、保障能力、反脆弱能力、管理能力)。每一项能力都包括:互联网SRE体系中的概念、能力的设计、能力建设的原则与方法、能力的度量与改进,以及相应的实践案例。通过这6种能力把可靠性相关的工作组织起来,6种能力对应6个工作方向,不仅清晰地描绘出互联网软件可靠性工程体系的全貌,而且详细阐述了每一种能力的获得方法。
本书基于传统可靠性和软件可靠性的研究成果,借鉴和应用它们的成熟理论和工程方法,结合互联网软件的实际情况并加以融合和改进,提出了一套符合互联网时代的软件可靠性工程方法。此外,本书还介绍了可靠性管理能力,对互联网软件开发团队、运维团队的技术领导者以及希望转型为可靠性工程师的传统运维人员、开发人员应该都有一定参考价值。
张观石,资深运维专家和架构师,拥有20余年软件开发、架构、运维、SRE经验。目前就职于虎牙直播,历任项目研发负责人、SRE负责人、架构师,虎牙事故管理委员会委员、基础保障部架构师委员会委员。
为虎牙基于微服务架构的直播业务、音视频业务、海外直播业务建立了稳定的保障体系,多次担任虎牙“英雄联盟全球总决赛直播”稳定性保障负责人。在混合多云架构、可观测性、预案、变更管控、AIOps等SRE领域有深入研究和丰富经验。
同时,他也是中国信通院分布式系统稳定性实验室高级技术专家,参与编写了《信息系统稳定性保障能力建设指南》。《运维前线》一书的联合作者。多次参与GOPS、MSUP、GDevops技术大会分享。作品目录
Foreword
推荐序1、Foreword
推荐序2、Foreword
推荐序3、Foreword
推荐序4、Praise
赞誉
Preface
前言
Chapter
1、第1章:互联网软件可靠性概论
1.1、为什么要研究互联网软件可靠性工程
1.1.1、大型互联网企业的典型案例回顾
1.1.2、研究互联网服务可靠性的迫切性和重要性
1.1.3、研究软件可靠性工程是未来更复杂的软件产品发展的需要
1.2、什么是可靠性工程
1.2.1、可靠性与可靠性工程概述
1.2.2、可靠性工程发展的3个阶段
1.2.3、传统物理可靠性工程方法
1.3、软件可靠性工程
1.3.1、软件可靠性工程的概念
1.3.2、软件可靠性工程发展的两个阶段
1.4、互联网软件的可靠性
1.4.1、相关名词介绍
1.4.2、互联网软件可靠性工程现状及挑战
1.4.3、互联网软件可靠性工程方法发展的3个阶段
1.5、互联网软件可靠性工程的工作思路
1.5.1、理解软件可靠性的3个核心问题
1.5.2、建立可靠性工程体系框架的思路
1.6、本章小结
Chapter
2、第2章:互联网软件可靠性工程及可靠性度量
2.1、软件生命周期的可靠性工作
2.1.1、互联网软件生命周期的可靠性工作及原则
2.1.2、需求阶段的可靠性工作
2.1.3、设计与实现阶段的可靠性工作
2.1.4、测试与验证阶段的可靠性工作
2.1.5、部署与发布阶段的可靠性工作
2.1.6、持续运行阶段的可靠性工作
2.2、故障生命周期的可靠性工作
2.2.1、监控故障
2.2.2、故障定界定位
2.2.3、修复故障
2.3、可靠性工程6种能力综述
2.4、互联网软件可靠性度量与评价
2.4.1、可靠性度量介绍
2.4.2、可靠性度量和分析方法
2.4.3、软件可靠性度量过程
2.4.4、如何制定可靠性目标
2.5、本章小结
Chapter
3、第3章:互联网软件可靠性设计与分析
3.1、为什么要进行可靠性设计
3.1.1、什么是可靠性设计
3.1.2、可靠性是设计出来的
3.2、可靠性设计原则与通用方法
3.2.1、可靠性设计的原则
3.2.2、可靠性设计的4种方法
3.3、软件可靠性架构模型
3.4、可靠性分析与架构风险
3.5、可靠性分配
3.5.1、可靠性分配的目的
3.5.2、可靠性分配的原则
3.5.3、可靠性分配的方法
3.6、架构分层设计及其可靠性方法
3.6.1、可靠性视角的分层架构
3.6.2、业务架构的可靠性设计
3.6.3、应用架构的可靠性设计
3.6.4、系统架构的可靠性设计
3.6.5、部署架构的可靠性设计
3.6.6、基础设施架构的可靠性设计
3.6.7、可靠性相关能力的设计
3.7、架构可靠性评审
3.7.1、评审目的
3.7.2、评审过程
3.7.3、评审方法
3.8、可靠性预计
3.9、本章小结
Chapter
4、第4章:可靠性观测能力建设与实践
4.1、建设观测能力的目的
4.2、排查、监控、观测技术的发展
4.2.1、登录服务器通过系统命令排查问题
4.2.2、集中式监控系统与日志系统
4.2.3、可观测性
4.2.4、观测能力与监控
4.2.5、建立综合的观测能力
4.3、监控观测的感知场景与感知方式
4.3.1、业务可靠性感知
4.3.2、影响范围及原因定界定位
4.3.3、帮助理解复杂系统结构并自动建模
4.3.4、智能告警条件的数据感知
4.3.5、根因推荐与排查诊断、决策
4.3.6、容量感知与弹性
4.3.7、人的感知与决策能力
4.3.8、场景化的固化大盘
4.3.9、巡检与非实时分析
4.4、观测能力设计
4.4.1、设计原则
4.4.2、设计方法
4.5、观测能力要求与度量
4.5.1、定性要求与分析
4.5.2、定量要求与分析
4.6、观测能力建设实践
4.7、本章小结
Chapter
5、第5章:故障修复、综合保障能力建设与实践
5.1、软件故障修复能力概述
5.1.1、什么是软件故障修复能力
5.1.2、修复能力是现代软件系统的重要能力
5.1.3、研究故障规律是修复能力的基础
5.2、软件故障修复能力设计与建设
5.2.1、设计原则
5.2.2、预案平台的设计
5.2.3、变更型故障快速修复
5.2.4、灾难型故障快速修复
5.2.5、容量型故障快速修复
5.2.6、应急协同
5.3、运维保障能力
5.4、修复能力的度量和要求
5.4.1、定性要求
5.4.2、定量要求与评估
5.5、修复能力及保障能力建设实践
5.5.1、虎牙音视频修复能力实践
5.5.2、预案平台建设实践
5.5.3、虎牙带宽资源保障能力实践
5.6、本章小结
Chapter
6、第6章:可靠性试验与反脆弱能力建设与实践
6.1、互联网软件可靠性试验与反脆弱能力概述
6.1.1、什么是可靠性试验与反脆弱能力
6.1.2、为什么要反脆弱
6.2、软件系统的脆弱性因素分析
6.2.1、环境、产品、人的关系
6.2.2、脆弱性因素分析
6.3、反脆弱能力建设与分析
6.3.1、应对脆弱性的思路
6.3.2、反脆弱能力建设原则
6.3.3、环境脆弱性的可靠性试验:混沌工程
6.3.4、软件系统自身的可靠性试验:故障注入
6.3.5、人为因素反脆弱设计:故障演练
6.3.6、变更型故障反脆弱设计:变更管控
6.4、可靠性试验与反脆弱能力的要求
6.4.1、定性要求
6.4.2、定量要求
6.5、实践案例
6.6、本章小结
Chapter
7、第7章:可靠性管理能力
7.1、可靠性管理工作概述
7.2、软件可靠性工作规划及目标管理
7.3、故障治理
7.3.1、故障复盘
7.3.2、故障评审定级
7.3.3、定期回顾可靠性
7.4、人员与团队管理
7.4.1、可靠性工程师团队
7.4.2、团队转型
7.5、以SRE方式运维业务
7.5.1、以SRE方式接手现有业务
7.5.2、接手新业务
7.6、本章小结