SRE原理与实践:构建高可靠性互联网应用
上QQ阅读APP看书,第一时间看更新

Preface
前言

为何写作本书

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

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

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

本书主要特点

本书具有以下几个特点。

1)整体性。本书较完整地介绍了互联网软件可靠性工程体系,并结合互联网平台软件的技术特点、业务特点,把互联网SRE相关工作总结为六种能力,帮助工程师快速理解SRE体系全貌。

2)重视度量。书中对各种能力都进行了定性与定量的评估。度量才能真正了解现状,才能推动改进,才能见到改进的效果。

3)从原理出发。本书较为全面地总结了互联网平台软件的故障特点和故障规律。研究规律是我们学习SRE相关工作的必经之路。通过研究规律,我们不仅可以积累经验,而且能更深刻地了解故障的本质。

本书在写作时引用了大量虎牙直播的实践案例,这些案例对一些中小型平台建设应该有一定的参考价值。

本书读者对象

本书是一本涉及互联网软件开发、架构设计、运维等全流程可靠性建设的书,适合的读者主要分为下面几类:

□互联网行业运维工程师、研发工程师、架构师

□关注软件系统可靠性的管理者

□关注软件可靠性的研究者、计算机专业师生等

本书主要内容

本书一共7章。

第1章介绍互联网软件可靠性基础知识,讲述物理设备可靠性工程和传统软件可靠性工程的发展过程、基本理论,引出互联网软件可靠性的概念、问题,希望能让读者了解SRE的由来、发展,从更广阔的视角去学习、研究、认识互联网的软件可靠性工程体系。

第2章提出了互联网软件可靠性工程的基本框架,分别介绍了SRE的六种能力(对应传统可靠性工程的“六性”),然后重点介绍了互联网软件可靠性的度量方法,以评估当前的能力现状及不足。

第3章介绍互联网软件可靠性设计与分析方法,从可靠性角度讨论架构设计的原则,分析可靠性设计的相关因素和故障模式,并详细介绍了互联网软件系统的可靠性架构实践,包括业务架构、应用架构、系统架构、部署架构、基础设施架构等的可靠性设计与实践。

第4章介绍了可靠性观测能力建设与实践,较为全面地讨论了互联网软件观测能力的相关话题,总结了监控技术的发展,并结合大量实践场景介绍了互联网软件观测能力。

第5章介绍了故障修复能力建设与实践,以及可靠性工作中的综合保障能力建设与实践。

第6章介绍了可靠性试验与反脆弱能力建设与实践,这是对互联网“混沌工程”的再思考。

第7章介绍了可靠性管理能力,对互联网软件开发团队、运维团队的技术领导者,以及希望转型为可靠性工程师的传统运维人员、开发人员有一定参考价值。

勘误

本书是我学习和工作多年积累的直观经验,由于可靠性工程体系庞大,以及可靠性相关技术、互联网技术的复杂性,想要系统总结并将其提炼成为体系,无疑是非常困难的,其间难免出现错漏甚至谬误。本书的大多数案例来自业界同行分享的资料和本人所服务的公司,可能存在局限性。如果读者对于本书内容有任何意见或建议,欢迎与我联系:25299754@qq.com。

致谢

在本书写作过程中,得到了很多人的大力支持,在此表示感谢。感谢出版社编辑杨福川和李艺的耐心陪伴、鼓励及专业支持。感谢石鹏兄弟熬夜帮我修订书稿。感谢观测云CEO蒋烁淼先生的指点。感谢我的领导毛茂德先生的鼓励和支持。感谢同事匡凌轩、陈景雄、黄佳亮帮助审阅书稿。感谢虎牙公司多年的培养,给我提供实践机会,让我跟着公司平台一起成长。特别感谢我的太太鄢红艳,是她的支持和付出让我毫无后顾之忧,从而完成本书的写作。