好书推荐 好书速递 排行榜 读书文摘

可扩展的艺术

可扩展的艺术
作者:阿博特 (Martin L.Abbott) / 费希尔 (Michael T.Fisher)
译者:张欣
副标题:现代企业的Web架构、流程及组织
出版社:人民邮电出版社
出版年:2013-01
ISBN:9787115301727
行业:艺术
浏览数:5

内容简介

用户急剧增加,流量迅猛增长,交易频繁进行……这对于一个技术组织来说,无疑是件幸福的事情。然而,如果网站不能满足持续增长的客户需求,响应时间变慢,各种故障频出,甚至停机无法提供服务,那么幸福必将是短暂的。这就要求网站具有很好的可扩展性,能根据需求持续扩展服务能力。

不同于其他类似主题的图书主要关注当前技术的实现,本书强调,可扩展性不仅仅是技术问题,还涉及组织、流程、架构等方方面面。没有一个顺畅的流程、合理的组织结构或能进行沟通的管理者,再好的技术和想法也会大打折扣。而没有遵循一定原则的架构设计,等到瓶颈出现时难免令人懊悔。扩展组织、流程和系统,使之相互支持,达到良性循环,不仅仅是门科学,还是一门艺术。本书正是对此提供了全面的、实践证明确实有效的解决思路和实用技巧。

两位作者具有三十多年扩展系统的丰富经验,既服务过如通用电气、摩托罗拉、Gateway、eBay、PayPal等大公司,也曾任职于众多经常面临扩展问题的创业公司。结合阅读他们的另一部作品《高扩展性网站的50条原则》,必定会有更多收获。

本书主要内容包括:

可扩展组织的人员配置:技术组织领导者需要了解的人员、组织、管理和领导力方面的技能。

制定扩展流程:超高速发展的企业扩展技术平台所需的流程,包括故障和问题管理、危机管理、变更管理、确定余量、风险管理、性能和压力测试、回退等。

构建可扩展的方案:通过AKF扩展立方识别扩展需求,选择最佳的解决方法,并借助缓存、应用和数据库划分以及异步设计等优化系统性能。

利用新兴的技术,如云和网格,实现扩展。

构建有效的监控策略,及时回答最重要的问题。

为快速的数据增长和新的数据中心进行规划。

......(更多)

作者简介

Martin L.Abbott

扩展咨询公司AKF Partners的创始合伙人之一。在此之前,他是Quigo公司的COO,负责产品战略、产品管理、技术开发和客户服务。在Quigo之前,他在eBay工作了将近六年,最后的职位是技术部的SVP、CTO和执行主管团队成员。更早之前,他在Gateway和摩托罗拉担任过程序员、管理者及执行主管。他现任onForce、LodgeNet Interactive(NASD: LNET)以及Bullhorn的董事会成员。此外,他还在Rearden Commerce、Goldmail和LiveOps担任咨询委员会的成员。在西点军校取得计算机科学的学士学位后,他在佛罗里达大学取得了计算机工程的硕士学位,并参加过哈佛商学院的高级经理培训课程,现正在美国凯斯西储大学攻读管理学的博士学位。

Michael T. Fisher

扩展咨询公司AKF Partners的创始合伙人之一。他曾在Quigo担任了两年的CTO,在Quigo被AOL收购后的过渡期,还担任过这家公司的总裁。在Quigo之前,他是PayPal公司(eBay旗下公司之一)的开发和架构副总裁,负责建立一个有两百多位工程师的组织。更早之前,他在通用电气工作过七年,致力于开发公司的技术战略和流程。在西点军校取得了计算机科学的学士学位后,他在夏威夷太平洋大学取得了硕士学位,后在肯尼迪西部大学取得了信息管理系统的博士学位,在美国凯斯西储大学获得了MBA。此外,他还是六西格玛黑带大师,现正在美国凯斯西储大学攻读管理学的博士学位。

......(更多)

目录

目    录

导言  1

第一部分  可扩展组织的人员配备

第1章  人员和领导力对可扩展性的影响  6

1.1  AllScale简介  6

1.2  为什么要考虑人员  7

1.3  为什么要考虑组织  8

1.4  为什么要考虑管理和领导力  12

1.5  结论  14

本章要点  14

第2章  可扩展技术组织中的角色  15

2.1  失败的后果  15

2.2  角色的定义  16

2.3  执行主管的职责  17

2.3.1  CEO  18

2.3.2  CFO  19

2.3.3  业务单元责任人和P&L责任人  19

2.3.4  CTO/CIO  19

2.4  组织的职责  20

2.4.1  架构团队的职责  21

2.4.2  软件开发团队的职责  21

2.4.3  生产运营团队的职责  21

2.4.4  基础设施团队的职责  22

2.4.5  质量保证团队的职责  22

2.4.6  产能计划团队的职责  22

2.5  个人贡献者的职责和特征  23

2.5.1  架构师  23

2.5.2  软件工程师  23

2.5.3  操作员  24

2.5.4  基础设施工程师  24

2.5.5  QA工程师/分析师  24

2.5.6  产能计划员  25

2.6  一个组织示例  25

2.7  定义职责的工具  26

2.8  结论  28

本章要点  29

第3章  设计组织  30

3.1  影响可扩展性的组织因素  30

3.2  团队规模  32

3.2.1  警示信号  35

3.2.2  扩大团队或拆分团队  36

3.3  组织架构  38

3.3.1  职能型组织  38

3.3.2  矩阵型组织  40

3.4  结论  42

本章要点  43

第4章  领导力101  44

4.1  什么是领导力  45

4.2  领导力的一个概念模型  46

4.3  评估你是谁  47

4.4  身先士卒  49

4.5  保持谦虚的态度  49

4.6  使命第一,人员至上  50

4.7  做出及时、合理、符合道德的决策  51

4.8  给团队授能和可扩展性  51

4.9  一切围绕股东价值  52

4.10  愿景  53

4.11  使命  55

4.12  战略目标  55

4.13  整合愿景、使命和战略目标  57

4.14  通向成功的因果图  59

4.15  结论  61

本章要点  61

第5章  管理101  63

5.1  管理是什么  63

5.2  项目和任务管理  64

5.3  建设团队——一个运动比喻  65

5.4  提升团队——一个花园比喻  66

5.5  衡量方法、指标和目标评估  69

5.6  目标树  71

5.7  为成功铺路  72

5.8  结论  72

本章要点  73

第6章  进行商业论证  74

6.1  理解经验的鸿沟  74

6.1.1  为什么业务主管可能成为问题所在  75

6.1.2  为什么技术主管可能成为问题所在  75

6.2  破除企业思维定式  76

6.2.1  建立关系  78

6.2.2  树立榜样  78

6.2.3  培训其他主管  78

6.2.4  利用RASCI模型  79

6.2.5  用商业语言交谈  79

6.2.6  让他们参与进来  79

6.2.7  用事实让主管团队感到恐慌  80

6.3  为扩展论证  80

6.4  结论  83

本章要点  83

第二部分  制定扩展流程

第7章  理解流程对扩展的重要性  86

7.1  流程的目的  87

7.2  正确的时间,正确的流程  89

7.2.1  需要有多严苛  90

7.2.2  需要有多复杂  91

7.3  好的流程何时会变成坏的  93

7.4  结论  93

本章要点  94

第8章  管理故障和问题  95

8.1  什么是故障  96

8.2  什么是问题  96

8.3  故障管理的步骤  97

8.4  问题管理的步骤  99

8.5  化解故障管理与问题管理之间的冲突  100

8.6  故障和问题的生命周期  100

8.7  召开每日故障例会  101

8.8  召开季度故障回顾会议  102

8.9  事后分析流程  102

8.10  综合应用  104

8.11  结论  106

本章要点  106

第9章  管理危机和升级  107

9.1  什么是危机  107

9.2  为什么要把危机与其他故障区分开来  108

9.3  危机如何改变一个公司  108

9.4  为混乱赋予秩序  109

9.4.1 “问题经理”的角色  110

9.4.2  团队经理的角色  111

9.4.3  首席工程师的角色  112

9.4.4  个人贡献者的角色  113

9.5  沟通和控制  113

9.6  作战室  114

9.7  升级  115

9.8  状态沟通  115

9.9  危机事后分析会议  116

9.10  危机后续跟进和沟通  117

9.11  结论  117

本章要点  118

第10章  控制生产环境中的变更  119

10.1  什么是变更  120

10.2  变更识别  121

10.3  变更管理  122

10.3.1  变更建议  123

10.3.2  变更批准  125

10.3.3  变更日程安排  125

10.3.4  变更实施和记录  127

10.3.5  变更验证  127

10.3.6  变更审查  127

10.4  变更控制会议  128

10.5  持续的流程改善  128

10.6  结论  129

本章要点  129

第11章  确定应用的余量  131

11.1  流程的目的  131

11.2  流程的步骤  132

11.3  理想的使用比例  135

11.4  结论  137

本章要点  138

第12章  探讨架构设计原则  139

12.1  原则和目标  139

12.2  原则选择  142

12.3  AKF的十二条架构设计原则  143

12.3.1  N+1设计  143

12.3.2  设计为能够回退的  144

12.3.3  设计为能够禁用的  144

12.3.4  设计为能够监控的  144

12.3.5  设计为多个活动站点  144

12.3.6  采用成熟的技术  144

12.3.7  设计为异步的  145

12.3.8  无状态系统  145

12.3.9  进行横向扩展而不是纵向扩展  145

12.3.10  设计为至少可以在两条轴上进行扩展  145

12.3.11  非核心的组件可以购买  145

12.3.12  采用同质化硬件  145

12.4  扩展原则深度解析  146

12.4.1  设计为能够监控的  146

12.4.2  设计为多个活动站点  147

12.4.3  设计为异步的  147

12.4.4  无状态系统  148

12.4.5  进行横向扩展而不是纵向扩展  148

12.4.6  设计为至少可以在两条轴上进行扩展  149

12.5  结论  150

本章要点  150

第13章  联合架构设计  151

13.1  修正组织的功能障碍  151

13.2  设计为能够跨部门扩展  153

13.3  开始条件和结束条件  155

13.4  结论  157

本章要点  157

第14章  架构评审委员会  159

14.1  通过审查确保可扩展性  159

14.2  委员会成员  160

14.3  会议实施  162

14.4  开始条件和结束条件  164

14.5  结论  165

本章要点  166

第15章  关注核心竞争力:构建还是         采购  167

15.1  构建还是采购与可扩展性的关系  167

15.2  关注成本  168

15.3  关注竞争优势  168

15.4 “非我所建”现象  169

15.5  结合成本和竞争优势  170

15.5.1  这个组件能够创造竞争优势吗?  170

15.5.2  我们是这个组件或资产最好的责任人吗?  171

15.5.3  这个组件上的竞争如何?  171

15.5.4  我们能经济有效地构建这个组件吗?  171

15.6  AllScale公司的构建还是采购难题  172

15.7  结论  173

本章要点  174

第16章  确定风险  175

16.1  风险管理对扩展的重要性  175

16.2  衡量风险  176

16.3  管理风险  181

16.4  结论  183

本章要点  184

第17章  性能测试和压力测试  185

17.1  执行性能测试  185

17.1.1  判断标准  186

17.1.2  测试环境  186

17.1.3  定义测试  187

17.1.4  执行测试  188

17.1.5  分析数据  188

17.1.6  报告给工程师  189

17.1.7  重复测试和分析  189

17.2  压力测试不要有压力  190

17.2.1  确立目标  190

17.2.2  识别关键服务  191

17.2.3  确定负载  191

17.2.4  测试环境  192

17.2.5  识别监控项  192

17.2.6  制造负载  192

17.2.7  执行测试  193

17.2.8  分析数据  193

17.3  可扩展性的性能测试和压力测试  194

17.4  结论  195

本章要点  196

第18章  屏障条件和回退  197

18.1  屏障条件  197

18.1.1  屏障条件和敏捷开发  198

18.1.2  屏障条件和瀑布开发  200

18.1.3  屏障条件和混合模型  200

18.2  回退能力  201

18.2.1  回退窗口需求  201

18.2.2  回退的技术考量  202

18.2.3  回退的成本考量  203

18.3  功能减负——设计为能够禁用的  203

18.4  结论  204

本章要点  205

第19章  要快还是要正确  206

19.1  业务上的权衡  206

19.2  与可扩展性的关系  209

19.3  如何做决策  210

19.4  结论  213

本章要点  214

第三部分  构建可扩展的方案

第20章  不受技术限制的设计  216

20.1  实现并非架构  216

20.2  不受技术限制的设计  217

20.2.1  TAD和成本  217

20.2.2  TAD和风险  218

20.2.3  TAD和可扩展性  219

20.2.4  TAD和可用性  221

20.3  TAD方法  221

20.4  结论  222

本章要点  222

第21章  创建故障隔离的架构  224

21.1  故障隔离的架构的术语  224

21.2  故障隔离的好处  226

21.2.1  故障隔离和可用性——限制影响  226

21.2.2  故障隔离和可用性——故障检测和解决  228

21.2.3  故障隔离和可扩展性  228

21.2.4  故障隔离和上市时间  229

21.2.5  故障隔离和成本  229

21.3  如何进行故障隔离  230

21.3.1  原则1:什么都不能共享  230

21.3.2  原则2:什么都不能跨过泳道边界  231

21.3.3  原则3:在泳道内交易  231

21.4  何时实现故障隔离  231

21.4.1  方法1:把最赚钱的功能放入泳道  232

21.4.2  方法2:把最容易引发故障的功能放入泳道  232

21.4.3  方法3:根据自然界限划分泳道  232

21.5  如何测试故障隔离的设计  233

21.6  结论  233

本章要点  234

第22章  AKF扩展立方入门  235

22.1  概念,还是规则和工具  235

22.2  AKF扩展立方介绍  236

22.3  扩展立方的含义  237

22.4  扩展立方的X轴  238

22.5  扩展立方的Y轴  239

22.6  扩展立方的Z轴  240

22.7  综合应用  241

22.8  何时何地使用扩展立方  243

22.9  结论  243

本章要点  244

第23章  为扩展划分应用  245

23.1  应用的AKF扩展立方  245

23.2  AKF应用扩展立方的X轴  246

23.3  AKF应用扩展立方的Y轴  248

23.4  AKF应用扩展立方的Z轴  249

23.5  综合应用  251

23.6  应用扩展立方的实际应用  253

23.6.1  电子商务平台  253

23.6.2  人力资源管理系统  254

23.6.3  后台办公IT系统  255

23.6.4  经验之谈  255

23.7  结论  256

本章要点  257

第24章  为扩展划分数据库  258

24.1  数据库的AKF扩展立方  258

24.2  AKF数据库扩展立方的X轴  259

24.3  AKF数据库扩展立方的Y轴  262

24.4  AKF数据库扩展立方的Z轴  264

24.5  综合应用  265

24.6  数据库扩展立方的实际应用  267

24.6.1  电子商务平台  267

24.6.2  人力资源管理系统  269

24.6.3  后台办公IT系统  269

24.6.4  经验之谈  270

24.6.5  时间方面的考量  270

24.7  结论  271

本章要点  271

第25章  为性能和扩展进行缓存  272

25.1  缓存定义  272

25.2  对象缓存  275

25.3  应用缓存  277

25.3.1  代理缓存  278

25.3.2  反向代理缓存  279

25.3.3  缓存软件  280

25.4  内容交付网络  281

25.5  结论  282

本章要点  282

第26章  实现扩展的异步设计  284

26.1  同步的定义  284

26.2  同步调用,还是异步调用  285

26.2.1  同步扩展,还是异步扩展  286

26.2.2  异步系统示例  288

26.3  定义状态  290

26.4  结论  293

本章要点  294

第四部分  解决其他的问题和挑战

第27章  数据太多  296

27.1  数据的成本  296

27.2  数据的价值和成本–价值难题  298

27.3  让数据成为有利可图的  299

27.3.1  期权价值  300

27.3.2  竞争优势  300

27.3.3  成本合理的解决方案(分层的存储方案)  301

27.3.4  转换数据  302

27.4  处理大量的数据  302

27.5  结论  305

本章要点  306

第28章  云和网格  307

28.1  历史和定义  307

28.1.1  网格计算  309

28.1.2  公共云和私有云  310

28.2  云的特征和架构  311

28.2.1  按用量付费  311

28.2.2  按需扩展  311

28.2.3  多租户  312

28.2.4  虚拟化  313

28.3  云和网格的区别  314

28.4  结论  315

本章要点  316

第29章  在云上翱翔  317

29.1  云计算的利弊  317

29.1.1  云计算的优点  318

29.1.2  云计算的缺点  320

29.2  云计算的不同用法  323

29.2.1  环境  323

29.2.2  技能集合  325

29.3  决策流程  325

29.4  结论  327

本章要点  328

第30章  接上网格  329

30.1  网格的利弊  329

30.1.1  网格的优点  330

30.1.2  网格的缺点  331

30.2  网格计算的不同用法  333

30.2.1  生产网格  333

30.2.2  编译网格  334

30.2.3  数据仓库网格  335

30.2.4  后台办公网格  335

30.3  决策流程  336

30.4  结论  338

本章要点  338

第31章  监控应用  340

31.1  “为什么我们没能及早发现它?”  340

31.2  实现监控的框架  342

31.2.1  用户体验和业务指标  345

31.2.2  系统监控  345

31.2.3  应用监控  346

31.3  衡量监控:什么有价值,什么无价值  347

31.4  监控和流程  348

31.5  结论  349

本章要点  349

第32章  规划数据中心  350

32.1  数据中心的成本和约束  350

32.2  位置、位置、还是位置  352

32.3  数据中心与增量增长  354

32.4  三条三之原则  355

32.4.1  第一条三之原则:数据中心的三个成本驱动力  355

32.4.2  第二条三之原则:三对服务器来说是个神奇数字  356

32.4.3  第三条三之原则:三对数据中心来说是个神奇数字  356

32.5  构建多个活动数据中心要考虑的因素  359

32.6  结论  360

本章要点  361

第33章  综合应用  362

33.1  接下来做什么  363

33.2  案例分析  365

33.2.1  eBay:巨大的成功和可扩展性大爆炸  365

33.2.2  Quigo:出现可扩展性问题的年轻产品  366

33.2.3  ShareThis:一个创业公司的故事  367

33.3  参考资料  368

附    录

附录A  计算可用性  372

附录B  产能规划计算  378

附录C  负载和性能计算  383

......(更多)

读书文摘

现代的云概念在2001年10月被IBM在“自主计算宣言”中得到延伸,这篇论文的实质是说信息技术基础设施变得过于复杂,如果不能实现自动化管理,它可能会被自己的重量所压垮。

......(更多)

猜你喜欢

点击查看