猜你喜欢
SRE原理与实践:构建高可靠性互联网应用

SRE原理与实践:构建高可靠性互联网应用

书籍作者:张观石 ISBN:9787111715825
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:3076
创建日期:2023-05-22 发布日期:2023-05-22
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

这是一本从架构、开发、测试、运维全流程讲解如何进行软件可靠性工程建设的著作,它将帮助读者构建针对软件可靠性工程的完整的知识体系、工程体系和理论体系。


本书作者是虎牙科技的SRE架构师,他基于20余年的架构、研发和运维经验,用4年时间反复打磨,代表中国的工程师总结了中国互联网企业的SRE方法和经验。本书得到了中国SRE奠基人、虎牙科技CEO以及华为、腾讯、阿里、B站、亚马逊等企业的10余位技术专家高度评价并一致推荐。


本书参考传统可靠性工程及软件可靠性工程体系,把传统可靠性工程中的“六性”(可靠性、维修性、测试性、保障性、安全性、环境适应性)转化为互联网软件可靠性工程的6种能力(可靠性设计能力、观测能力、修复能力、保障能力、反脆弱能力、管理能力)。每一项能力都包括:互联网SRE体系中的概念、能力的设计、能力建设的原则与方法、能力的度量与改进,以及相应的实践案例。通过这6种能力把可靠性相关的工作组织起来,6种能力对应6个工作方向,不仅清晰地描绘出互联网软件可靠性工程体系的全貌,而且详细阐述了每一种能力的获得方法。


本书基于传统可靠性和软件可靠性的研究成果,借鉴和应用它们的成熟理论和工程方法,结合互联网软件的实际情况并加以融合和改进,提出了一套符合互联网时代的软件可靠性工程方法。
此外,本书还介绍了可靠性管理能力,对互联网软件开发团队、运维团队的技术领导者以及希望转型为可靠性工程师的传统运维人员、开发人员应该都有一定参考价值。

作者简介

张观石


资深运维专家和架构师,拥有20余年软件开发、架构、运维、SRE经验。目前就职于虎牙直播,历任项目研发负责人、SRE负责人、架构师,虎牙事故管理委员会委员、基础保障部架构师委员会委员。


为虎牙基于微服务架构的直播业务、音视频业务、海外直播业务建立了稳定的保障体系,多次担任虎牙“英雄联盟全球总决赛直播”稳定性保障负责人。在混合多云架构、可观测性、预案、变更管控、AIOps等SRE领域有深入研究和丰富经验。


同时,他也是中国信通院分布式系统稳定性实验室高级技术专家,参与编写了《信息系统稳定性保障能力建设指南》。《运维前线》一书的联合作者。多次参与GOPS、MSUP、GDevops技术大会分享。

编辑推荐
适读人群 :*互联网行业运维工程师、研发工程师、架构师 *关注软件系统可靠性的管理者 *关注软件可靠性的研究者、计算机专业师生等

(1)作者背景资深:就职于虎牙直播,历任项目研发负责人、SRE负责人、架构师,虎牙事故管理委员会委员、基础保障部架构师委员会委员。
(2)作者经验丰富:拥有20年软件开发、架构、运维、SRE经验,为虎牙基于微服务架构的直播业务、音视频业务、海外直播业务建立了稳定的保障体系。
(3)总结中国SRE实践:作者立足于本土SRE实践经验,历时4年精心打磨,帮助读者构建针对SRE的完整的知识体系、工程体系、理论体系。
(4)全流程讲解SRE:从架构、开发、测试、运维全流程讲解如何进行软件可靠性工程建设,总结了要符合时代要求的SRE方法论体系。
(4)建设SRE六种能力:详解SRE的6种能力(可靠性设计能力、观测能力、修复能力、保障能力、反脆弱能力、管理能力)的概念、设计、建设原则与方法、度量与改进。
(5)10余行业专家推荐:中国SRE奠基人、虎牙科技CEO以及华为、腾讯、阿里、B站、亚马逊等企业的10余位技术专家高度评价。

前言

【为何写作本书】
互联网已经成为社会运行的基础设施,支撑起人们的衣食住行与日常工作生活。互联网也已深入生产端,如工厂、码头、矿山等都离不开软件管理和自动化控制。互联网平台服务如此重要,一旦发生故障,会造成巨大影响。软件故障轻则影响用户体验和导致生活不便,重则可能造成巨大的经济损失,如证券交易平台故障导致无法进行交易,电商平台故障造成数亿元的经济损失,航空系统故障导致服务关闭,公有云故障造成众多公司的业务无法正常开展等。


如何保证互联网平台服务的可靠性和稳定性成为整个行业面临的难题。谷歌提出的SRE(网站可靠性,本意是软件可靠性工程)方法被业界奉为解决这一难题的经典,其他各种概念也层出不穷,如混沌工程、智能运维、可观测性等。但很多新人,甚至资深工程师、管理者在实际工作中仍很迷茫。我认为一个重要原因是当前互联网软件可靠性没有完整的知识体系、工程体系和理论体系。不完整的知识体系让新人甚至工作多年的工程师缺乏全面认识,以至于在做可靠性工作时摸不着头绪;不完整的工程体系让技术团队很难进行统一规划,只能参考业界热门概念或者最佳实践;不完整的理论体系使得整个行业靠大厂实践摸索,小厂模仿大厂,工程师靠踩坑积累经验,导致行业的整体工程能力提升缓慢,缺少对问题本质和规律的研究。


本书尝试系统性地讨论如何建立互联网软件可靠性工程体系。首先,本书参考传统可靠性工程及软件可靠性工程体系,把传统可靠性工程中的“六性”(可靠性、维修性、测试性、保障性、安全性、环境适应性)转化为互联网软件可靠性工程中的六种能力(可靠性设计能力、观测能力、修复能力、保障能力、反脆弱能力、管理能力)。然后,本书通过这六种能力把可靠性相关的工作组织起来,比较清晰地描绘出互联网软件可靠性工程的体系全貌,并将六种能力对应到六个工作方向上。最后,本书深入探讨了各种能力如何建设、如何度量、如何改进等。本书也较为系统地总结了互联网软件可靠性工程的发展过程,参考了可靠性工程方法来讨论当前行业面临的突出问题,初步分析、总结了各种故障的规律,并提出了“可靠性是和故障作斗争”的观点。

【本书主要特点】

本书具有以下几个特点。
1)整体性。本书较完整地介绍了互联网软件可靠性工程体系,并结合互联网平台软件的技术特点、业务特点,把互联网SRE相关工作总结为六种能力,帮助工程师快速理解SRE体系全貌。
2)重视度量。书中对各种能力都进行了定性与定量的评估。度量才能真正了解现状,才能推动改进,才能见到改进的效果。
3)从原理出发。本书较为全面地总结了互联网平台软件的故障特点和故障规律。研究规律是我们学习SRE相关工作的必经之路。通过研究规律,我们不仅可以积累经验,而且能更深刻地了解故障的本质。
本书在写作时引用了大量虎牙直播的实践案例,这些案例对一些中小型平台建设应该有一定的参考价值。


【本书读者对象】
*本书是一本涉及互联网软件开发、架构设计、运维等全流程可靠性建设的书,适合的读者主要分为下面几类:
*互联网行业运维工程师、研发工程师、架构师
*关注软件系统可靠性的管理者
*关注软件可靠性的研究者、计算机专业师生等

【本书主要内容】

本书一共7章。
第1章介绍互联网软件可靠性基础知识,讲述物理设备可靠性工程和传统软件可靠性工程的发展过程、基本理论,引出互联网软件可靠性的概念、问题,希望能让读者了解SRE的由来、发展,从更广阔的视角去学习、研究、认识互联网的软件可靠性工程体系。
第2章提出了互联网软件可靠性工程的基本框架,分别介绍了SRE的六种能力(对应传统可靠性工程的“六性”),然后重点介绍了互联网软件可靠性的度量方法,以评估当前的能力现状及不足。
第3章介绍互联网软件可靠性设计与分析方法,从可靠性角度讨论架构设计的原则,分析可靠性设计的相关因素和故障模式,并详细介绍了互联网软件系统的可靠性架构实践,包括业务架构、应用架构、系统架构、部署架构、基础设施架构等的可靠性设计与实践。
第4章介绍了可靠性观测能力建设与实践,较为全面地讨论了互联网软件观测能力的相关话题,总结了监控技术的发展,并结合大量实践场景介绍了互联网软件观测能力。
第5章介绍了故障修复能力建设与实践,以及可靠性工作中的综合保障能力建设与实践。
第6章介绍了可靠性试验与反脆弱能力建设与实践,这是对互联网“混沌工程”的再思考。
第7章介绍了可靠性管理能力,对互联网软件开发团队、运维团队的技术领导者,以及希望转型为可靠性工程师的传统运维人员、开发人员有一定参考价值。

目录

第1章 互联网软件可靠性概论 1

1.1 为什么要研究互联网软件可靠性

工程 1

1.1.1 大型互联网企业的典型案例

回顾 1

1.1.2 研究互联网服务可靠性的

迫切性和重要性 3

1.1.3 研究软件可靠性工程是未来更

复杂的软件产品发展的需要 3

1.2 什么是可靠性工程 3

1.2.1 可靠性与可靠性工程概述 4

1.2.2 可靠性工程发展的3个阶段 4

1.2.3 传统物理可靠性工程方法 6

1.3 软件可靠性工程 9

1.3.1 软件可靠性工程的概念 9

1.3.2 软件可靠性工程发展的两个

阶段 10

1.4 互联网软件的可靠性 16

1.4.1 相关名词介绍 16

1.4.2 互联网软件可靠性工程现状及

挑战 18

1.4.3 互联网软件可靠性工程方法

发展的3个阶段 21

1.5 互联网软件可靠性工程的工作

思路 26

1.5.1 理解软件可靠性的3个核心

问题 26

1.5.2 建立可靠性工程体系框架的

思路 30

1.6 本章小结 31


第2章 互联网软件可靠性工程及

可靠性度量 32

2.1 软件生命周期的可靠性工作 32

2.1.1 互联网软件生命周期的可靠性

工作及原则 33

2.1.2 需求阶段的可靠性工作 34

2.1.3 设计与实现阶段的可靠性

工作 35

2.1.4 测试与验证阶段的可靠性

工作 37

2.1.5 部署与发布阶段的可靠性

工作 38

2.1.6 持续运行阶段的可靠性

工作 39

2.2 故障生命周期的可靠性工作 41

2.2.1 监控故障 42

2.2.2 故障定界定位 42

2.2.3 修复故障 43

2.3 可靠性工程6种能力综述 44

2.4 互联网软件可靠性度量与评价 45

2.4.1 可靠性度量介绍 45

2.4.2 可靠性度量和分析方法 47

2.4.3 软件可靠性度量过程 54

2.4.4 如何制定可靠性目标 58

2.5 本章小结 60


第3章 互联网软件可靠性设计与

分析 61

3.1 为什么要进行可靠性设计 61

3.1.1 什么是可靠性设计 61

3.1.2 可靠性是设计出来的 62

3.2 可靠性设计原则与通用方法 64

3.2.1 可靠性设计的原则 64

3.2.2 可靠性设计的4种方法 65

3.3 软件可靠性架构模型 68

3.4 可靠性分析与架构风险 72

3.5 可靠性分配 74

3.5.1 可靠性分配的目的 74

3.5.2 可靠性分配的原则 75

3.5.3 可靠性分配的方法 75

3.6 架构分层设计及其可靠性方法 76

3.6.1 可靠性视角的分层架构 77

3.6.2 业务架构的可靠性设计 78

3.6.3 应用架构的可靠性设计 78

3.6.4 系统架构的可靠性设计 85

3.6.5 部署架构的可靠性设计 92

3.6.6 基础设施架构的可靠性设计 97

3.6.7 可靠性相关能力的设计 99

3.7 架构可靠性评审 99

3.7.1 评审目的 99

3.7.2 评审过程 100

3.7.3 评审方法 101

3.8 可靠性预计 102

3.9 本章小结 103


第4章 可靠性观测能力建设与

实践 104

4.1 建设观测能力的目的 104

4.2 排查、监控、观测技术的发展 107

4.2.1 登录服务器通过系统命令

排查问题 107

4.2.2 集中式监控系统与日志系统 110

4.2.3 可观测性 115

4.2.4 观测能力与监控 116

4.2.5 建立综合的观测能力 117

4.3 监控观测的感知场景与感知

方式 118

4.3.1 业务可靠性感知 119

4.3.2 影响范围及原因定界定位 121

4.3.3 帮助理解复杂系统结构并

自动建模 126

4.3.4 智能告警条件的数据感知 129

4.3.5 根因推荐与排查诊断、决策 131

4.3.6 容量感知与弹性 135

4.3.7 人的感知与决策能力 137

4.3.8 场景化的固化大盘 138

4.3.9 巡检与非实时分析 140

4.4 观测能力设计 141

4.4.1 设计原则 141

4.4.2 设计方法 143

4.5 观测能力要求与度量 148

4.5.1 定性要求与分析 148

4.5.2 定量要求与分析 150

4.6 观测能力建设实践 154

4.7 本章小结 157


第5章 故障修复、综合保障能力建设与实践 158

5.1 软件故障修复能力概述 158

5.1.1 什么是软件故障修复能力 158

5.1.2 修复能力是现代软件系统的

重要能力 159

5.1.3 研究故障规律是修复能力的

基础 159

5.2 软件故障修复能力设计与建设 160

5.2.1 设计原则 160

5.2.2 预案平台的设计 163

5.2.3 变更型故障快速修复 167

5.2.4 灾难型故障快速修复 171

5.2.5 容量型故障快速修复 175

5.2.6 应急协同 177

5.3 运维保障能力 184

5.4 修复能力的度量和要求 188

5.4.1 定性要求 188

5.4.2 定量要求与评估 189

5.5 修复能力及保障能力建设实践 193

5.5.1 虎牙音视频修复能力实践 193

5.5.2 预案平台建设实践 194

5.5.3 虎牙带宽资源保障能力

实践 196

5.6 本章小结 196


第6章 可靠性试验与反脆弱能力

建设与实践 197

6.1 互联网软件可靠性试验与反脆弱

能力概述 197

6.1.1 什么是可靠性试验与反脆弱

能力 198

6.1.2 为什么要反脆弱 199

6.2 软件系统的脆弱性因素分析 200

6.2.1 环境、产品、人的关系 201

6.2.2 脆弱性因素分析 202

6.3 反脆弱能力建设与分析 212

6.3.1 应对脆弱性的思路 213

6.3.2 反脆弱能力建设原则 213

6.3.3 环境脆弱性的可靠性试验:

混沌工程 214

6.3.4 软件系统自身的可靠性试验:

故障注入 218

6.3.5 人为因素反脆弱设计:

故障演练 221

6.3.6 变更型故障反脆弱设计:

变更管控 222

6.4 可靠性试验与反脆弱能力的

要求 223

6.4.1 定性要求 223

6.4.2 定量要求 226

6.5 实践案例 227

6.6 本章小结 230


第7章 可靠性管理能力 231

7.1 可靠性管理工作概述 231

7.2 软件可靠性工作规划及目标

管理 235

7.3 故障治理 237

7.3.1 故障复盘 238

7.3.2 故障评审定级 243

7.3.3 定期回顾可靠性 247

7.4 人员与团队管理 248

7.4.1 可靠性工程师团队 248

7.4.2 团队转型 250

7.5 以SRE方式运维业务 254

7.5.1 以SRE方式接手现有业务 255

7.5.2 接手新业务 256

7.6 本章小结 257

产品特色