每一天,企业都面对着如何让关健应用程序可伸缩的问题。当流量和数据需求不断增加时,这些应用程序会变得更加复杂和脆弱,暴露出大量的风险并降低了可用性。随着“软件即服务”概念的流行,可伸缩性变得十分重要。本书更新了重要的现代化架构范式,例如,微服务和云计算,通过实际案例的指导,让你了解如何在不降低客户期望的条件下,构建可以处理海量请求、数据和需求的系统。工程和运维领域的架构师、经理和总监将学习到如何构建可以更加平稳和可靠地伸缩应用程序的知识,从而满足客户的不同需求。
●你会了解可伸缩性如何影响服务的可用性,为什么它很重要,以及如何改进它。
●你会深入了 解如何保证-个现代化的基于服务的应用程序架构的高可用性,以及降低服务故障的影响。
●你会了解什么是“由独立团队负责的服务架构”,它是一种可以让你的开发团队随应用程序一起伸缩的模型。
●你会学习到如何理解、 测量和降低系统的风险。.你会学习到如何使用云计算来构建高可伸缩的应用程序。
本书是一本关于现代化软件架构的书。书中介绍了如何构建和更新你的关键应用程序来满足日益苛刻的数字化客户的需求。书中还介绍了如何实现高可用性,如何使用现代化的开发和运维技术来架构应用程序,如何组织开发团队帮助应用程序和业务获得成功,如何将系统扩展到**规模,以及如何利用云计算的可用资源来迎接上述挑战。本书的目标读者包括构建和管理大规模应用程序和系统的软件工程师、架构师、技术经理及总监。如果你管理着软件开发人员、系统可靠性工程师、DevOps 工程师,或者经营着一个拥有大规模应用程序和系统的机构,本书中所提供的建议和指导都能够帮助你,让你的系统运行得更加平稳和可靠。
序.................................................................................. xvii
前言................................................................................ xx
第Ⅰ部分 原则 1. 可用性 :维护现代化应用程序的可用性
第 1 章 理解、测量和提高可用性............................................... 2
可用性与可靠性 ............................................................................................................3
什么导致了低可用性 ....................................................................................................4
测量可用性 ...................................................................................................................5
N 个 9 ....................................................................................................................6
计划中的故障也依然是故障 .................................................................................6
通过数字来体现可用性 .........................................................................................7
提高下降的可用性 ........................................................................................................7
测试并跟踪当前的可用性 .....................................................................................8
将手动流程自动化 ................................................................................................9
改进你的系统 ...................................................................................................... 12
时刻关注不断变化和发展中的应用程序的可用性 .............................................. 12
提高应用程序可用性的 5 个要点 ................................................................................ 12
要点 1 :时刻考虑应对故障 ................................................................................ 13
要点 2 :时刻考虑如何伸缩 ................................................................................ 14
要点 3 :缓和风险 ............................................................................................... 15
要点 4 :监控可用性............................................................................................ 17
要点 5 :以可预期及明确的方式来处理可用性问题 ........................................... 18
做好准备 ..................................................................................................................... 19
第 2 章 两次失误的高度——预留从错误中恢复的空间. .................... 20
两次失误的高度 .......................................................................................................... 21
场景 1 :丢失一个节点 ........................................................................................ 21
场景 2 :升级过程中出现的问题 ......................................................................... 24
场景 3 :数据中心恢复 ........................................................................................ 25
场景 4 :隐蔽的共享故障类型 ............................................................................. 27
场景 5 :故障循环 ............................................................................................... 28
管理你的应用程序 ...................................................................................................... 28
航天飞机 ..................................................................................................................... 29
第Ⅱ部分 原则 2. 现代化应用程序架构 :使用服务
第 3 章 使用服务. ............................................................... 32
单体应用程序与面向服务的应用程序 ........................................................................ 32
所有权收益.......................................................................................................... 34
规模收益 ............................................................................................................. 36
拆分服务 ..................................................................................................................... 37
如何定义服务 ...................................................................................................... 37
深入了解服务 ............................................................................................................. 38
指导原则 1 :特定的业务需求 ............................................................................. 38
指导原则 2 :清晰和独立的团队所有权 .............................................................. 39
指导原则 3 :天然隔离的数据 .................
温馨提示:请使用泸西县图书馆的读者帐号和密码进行登录
“不要拿你的生意做赌注。规模化的发展是一个不可避免的趋势。本书会告诉你如何切实可行地做到这一点。
——Colln Bodell
ShopifyPlus工程副总裁,Amazon.com网站应用平合前副总裁
“本书是为想要知道如何实现可伸缩系统的主管、经理和架构师准备的全面指南。
——Ken Gavranovic
New Relic的EVP兼GM,Interland公司(现在是web.com)的CEO兼创始人
时刻考虑可能出现的故障情况,是构建大规模应用程序的一个关键因素。本书将帮助你学习如何做到这一点,以及如何在用户增长和公司发展过程中,依然保持应用程序正常运行。
——Patrick Franklin
American Express 的 EVP 兼 CTO, Google 前工程副总裁
本书会告诉你,如何在应用程序(以及公司)不断扩张以满足用户日益增长的需求的同时,保证一切正常运转。
— Lew Cirne
New Relic 公司 CEO