基本信息
编辑推荐
256张图表讲透127个设计模式
构建高可用性、高可扩展性、高安全性的IT 系统
NTT DATA集团数百个项目反复验证,实用高效
所有设计模式均不依赖于任何特定产品
详细列举各模式的区别及选择标准
内容简介
计算机书籍
基础设施设计模式是指将基础设施技术者们创造出的设计方式概念化、抽象化,同时给其命名(模式名),总结其特点与注意事项而形成的集合体。目的是防止在基础设施开发中发生问题,提高基础设施的开发效率以及培养基础设施开发人才。
《图解基础设施设计模式》以基础设施构建中的需求定义阶段为基础,介绍了127个不依赖于任何特定产品,与非功能性需求实现策略、基础设施构成要素相关的常用设计模式(119个模式+8种类型)。在讲解时,还配以设计方式的示意图以及各个模式的对比,使人既能轻松理解设计方式的构造与特点,还能理解各模式之间的不同,最终作出最佳选择。
《图解基础设施设计模式》适合对基础设施缺乏经验的技术者(也包括应用程序开发者)、负责系统构建的项目经理、在企业的信息系统部门中对系统规划与引进具有决策权的人,以及负责评估和比较供应商提案和设计的人阅读。
作译者
1998年入职NTT DATA集团。负责过多个大型核心业务IT系统的基础设施开发,深感横向推广基础设施开发技能的重要性。拥有PMP认证资格(2004~)。
吉田一幸
2008年入职NTT DATA集团。负责设计和构建面向金融和通信业务的大型IT系统的基础设施。2012年起开始整理基础设施设计模式,负责整理和研发基础设施设计方法论和基于设计模式的设计步骤。
岩崎贤治
2010年入职NTT DATA集团。入职后参与了安全系统的构建和运维,积累了丰富的经验,在ITIL和信息安全管理领域有独到的见解。2012年后负责确立和整理使用基础设施设计模式进行开发的设计步骤。
三浦广志
1995年入职NTT DATA集团。除了参与编写Web Site Expert #31(技术评论社)外,还译有《详解Linux内核 第1版》(O'Reilly日本)一书,为Linux内核等开源软件(OSS)开发做出了贡献。于2013年加入OpenStack。
吉田佐智男
1987年入职NTT DATA集团。早期参与了使用开放系统构建主干系统的项目。具有多个项目的成功经验与解决问题的经验,为了推广这些经验与积累的技巧,成为最早参与基础设施设计模式开发的人员。现在在NTT DATA基盘系统事业本部负责推进先进技术调查、技术战略决策。
译者简介:
杨文轩
华中科技大学硕士。2007年入职方正国际软件。先后参与过京瓷MFP、丸善MBIS系统开发,并且主导过讲谈社拼版系统、讲谈社广告系统的开发。擅长Web 2.0开发,有丰富的对日开发经验。
目录
1.1 什么是基础设施 2
系统=应用程序+基础设施 2
基础设施=硬件+操作系统+中间件 3
基础设施构建的难点 3
1.2 基础设施故障引发的后果 4
ANA 的事例 4
索尼电脑娱乐公司的事例 4
NTT DoCoMo 的事例 4
东京证券交易所的事例 5
First Server的事例 5
1.3 基础设施构建中哪个阶段最重要 6
需求定义 6
设计 6
构建 6
测试 7
需求定义最重要 7
1.4 需求定义的重要性与难点 7
需求定义为什么很重要? 7
功能性需求与非功能性需求 9
译者序
但是以上书籍中所学到的设计模式只适用于应用程序,要想构建高可用性、高可扩展性、高安全性的IT系统,除了应用程序外,基础设施的设计也是非常重要的。特别是在编写IT集成解决方案时,对于经验不足的新手来说,设计和构建满足客户需求,且具有可用性、高可扩展性、高安全性的基础设施是非常困难的。
为了解决这个问题,来自日本NTT集团的五位著者调查和研究了几百个IT系统的基础设施,并整理出118个设计模式和9种设计方式,内容涵盖了可用性设计、性能与可扩展性设计、安全性设计、运用与维护性设计等各个方面,甚至还包括了使用时下最流行的云服务构建基础设施的设计方式。
想必大家还记得2014年9月末曝出的Shellshock漏洞吧。继Heartbleed漏洞之后,这个漏洞再次将Linux推向了网络安全的风口浪尖。我所就职的公司也经历了这场风波。该漏洞曝出后,某客户的IT系统部随即对其所有系统都进行了检查,发现10年前我们为该客户构建的一个系统中有此漏洞,并要求我们提交应对策略。显然,此时对应用程序层进行修改没有意义,必须对基础设施层做出改变。得益于本书,我和组员在查阅了当初的基础设施设计图之后,除了提出“修补Shellshock漏洞”建议外,还参考本书中的“安全性需求实现策略”章节中的内容,提出了若干网络安全方面的改善建议,并针对每项建议详细地说明其优缺点,得到了客户的好评。
本书最大的特点是对所有设计模式和设计方式都配有示意图,读者可以很直观地理解各设计模式的特点。此外,对相同类型的设计模式,著者还非常体贴地以表格的形式整理出它们的选择标准和异同,读者只需逐一确认各项选择标准是否符合需求即可轻松地选择合适的设计模式。当然,与应用程序层的模式滥用会增加应用程序的复杂性一样,基础设施层的设计模式也有缺点。效果越好的设计模式,往往建设成本和运维成本也越高。著者在本书中多次强调,在选择设计模式时一定要考虑性价比,希望读者朋友们注意。
模式既是起点,也是终点。基础设施设计新手可以以模式为起点,学习各个模式中涉及的相关知识;老手则可根据自己的专业知识和经验,总结和归纳出设计模式。愿本书中的设计模式能为您的工作和学习有一些帮助。
在翻译过程中,身边许多人给予了我莫大的支持和鼓励。我的同事邵聪在IT系统基础设施构建与运维方面有着丰富的经验,为我理解本书内容提供了很多帮助。刚着手翻译本书时,女儿雨菓出世了,妻子徐文和父母、岳父母替我分担了照顾女儿的重任,使我有更多的时间来翻译本书。最后,还要感谢图灵出版社的编辑,正是他们指出了译文中行文的不足和内容的错误,才确保了本书的高质量。感谢你们,没有你们就不可能有本书。
杨文轩
2014年12月14日
前言
现在,关于系统与基础设施开发的信息有很多,这些信息也很容易获取。因此,很容易让人觉得即使是不太具备基础设施开发技巧的人,也可以根据这些信息轻松地完成开发工作。但是大多数情况下,事实却并非那么简单。如果不具备足够的基础设施开发技巧,例如没有与用户等相关人员进行充分的沟通,就会开发出难以使用的系统。最终的结果就是增加了投资过剩,以及因需求定义不充分而导致系统运行后问题频发的风险。
高级技术者参与需求定义等上游设计,对于防止以上事态的发生是非常有效的。高级技术者对于各种需求都进行过类似的设计,同时还具备解决各种问题的经验。在大多数情况下,他们都可以应用从这些经验中总结出的技巧,高效地推进研讨进度。
那么怎样才能高效地、站在更高的层面上学习高级技术者的技巧呢?能够参与需求定义这种上游设计的人很少,能够从中吸取经验的人也很有限。此外,单纯地通过积累经验来提高技能也是有限度的。在计算机系统的适用范围飞速扩大,且越来越复杂和多样的今天,如何向刚刚从事基础设施开发工作的新人们系统地传授上游设计的技巧是一个需要解决的问题。
而解决这个问题的方法之一就是“设计模式”。设计模式是为了解决经常发生的问题而总结出的典型方法。在介绍设计模式的书籍中,最著名的莫过于《设计模式:可复用面向对象软件的基础》A一书了。合理使用该书中介绍的设计模式,就可以提高开发质量与生产效率。而本书将要介绍的基础设施设计模式,就是将这种适用于软件开发的设计模式技巧应用到基础设施的开发中去。
笔者所属的NTT DATA集团每年研究与调查100多个系统中使用的技巧,并进行基础设施设计模式的开发,这些基础设施设计模式已经在数百个项目中被广泛使用了。实际上,我们也从用户那里得到了“很容易理解一般的基础设施应该有哪些选择项”“在确认设计是否妥当时发挥了很大作用”“能够防止在设计研讨过程中有遗漏并提高了开发质量”“对提高设计研讨速度有很大贡献”等赞誉,且90%以上的用户向我们反映使用基础设施设计模式有提高品质、回避风险、减少研讨工时等效果。
通过学习围棋与将棋中的“定式”A、空手道与柔道中的“型”B,可以采取基本措施应对各种状况。在基础设施开发中也是一样,以基础设施设计模式为基础进行设计,就像是高级基础设施技术者们在进行设计研讨一样。
本书特点
本书内容有以下两大特点。
●所有的设计模式均不依赖于特定的产品
●本书编写的基础是在需求定义等上游设计阶段中使用设计模式
关于第一点,本书将基础设施设计模式总结成为更加概念化的东西。这样,以基础设施设计模式为基础进行的设计,可以通过各种供应商的产品来实现。可以说,站在完全中立的立场,会更加容易讨论或者是评价、比较提案与设计是否完全符合需求。而且,虽然在计算机系统的业界,各种各样的产品不断地改变与升级,但是设计模式并不太容易因此而受到影响,具有长久的生命力。本书将介绍的就是具有这些特点的127个设计模式(119个模式+8种类型)。
关于第二点,需求定义等上游设计阶段对整个系统的质量会产生很大的影响。我们认识到了需求定义对于系统开发的重要性,并以提升需求定义的质量为目标来组织与编写本书。
为了可以在需求定义的非功能性需求研讨中使用设计模式,在本书中,我们按照可用性、性能与可扩展性、安全性、运用与可维护性等不同的非功能性需求,与云计算、网络结构、存储结构等不同的基础设施结构来分别讲解它们的设计模式。
为了更容易把握设计模式的特点,我们为所有的设计模式都配上了简洁的示意图。关于计算机系统,有许多术语似是而非。通过将本书作为“会话工具”使用,即便参加需求定义阶段的用户与供应商等相关人员都具有不同背景知识,也可以很容易达成共识。当全员达成共识后,就更容易针对需求讨论出最合适的设计和最适合的结构。即使是在完成需求定义后,由于环境变化等原因导致需求自身也发生了变化的情况下,因为需求与设计方式的关系很明确,也可以迅速地讨论出对策。
而且,对于各种设计模式,我们不仅阐述了它们可以“做什么”,也注明了它们“不能做什么”和“需要注意的事项”。根据这些内容,可以很容易地在需求定义等上游设计阶段中提前整理出风险,并提前制定出对策。另外,通过使用本书来评审需求定义的结果,还可以确认研讨结果是否妥当、有无遗漏。
致谢
本书的撰写得到了敝公司的小林武博、寺西浩之给予的全面支持。此外、敝公司的风见纯、田村真浩、大西高史、西川治、三井吾朗、高桥宏明、冈安一将、吉田尚志、神谷慎吾、山下裕介、安田隆浩、堀江幸纪、中山伸、村山弘城、佐藤野英留、高桥优辅、蛯名高嗣、小田中忠雄、藤原慎和其他同事,以及包括普华永道业务咨询公司的酒井健一先生在内的许多技术顾问都给予了我们很大的帮助。没有他们,我们不可能完成本书的撰写工作。真的非常感谢他们。
为本书担任编辑工作的技术评论出版社的稻尾尚德先生指出了本书中的很多错误与不足之处。正是稻尾先生给予的莫大帮助,让本书的质量有了飞跃性的提高。这里要再次表达我们的谢意。
媒体评论
现在,关于系统与基础设施开发的信息有很多,这些信息也很容易获取。因此,很容易让人觉得即使是不太具备基础设施开发技巧的人,也可以根据这些信息轻松地完成开发工作。但是大多数情况下,事实却并非那么简单。如果不具备足够的基础设施开发技巧,例如没有与用户等相关人员进行充分的沟通,就会开发出难以使用的系统。最终的结果就是增加了投资过剩,以及因需求定义不充分而导致系统运行后问题频发的风险。
高级技术者参与需求定义等上游设计,对于防止以上事态的发生是非常有效的。高级技术者对于各种需求都进行过类似的设计,同时还具备解决各种问题的经验。在大多数情况下,他们都可以应用从这些经验中总结出的技巧,高效地推进研讨进度。
那么怎样才能高效地、站在更高的层面上学习高级技术者的技巧呢?能够参与需求定义这种上游设计的人很少,能够从中吸取经验的人也很有限。此外,单纯地通过积累经验来提高技能也是有限度的。在计算机系统的适用范围飞速扩大,且越来越复杂和多样的今天,如何向刚刚从事基础设施开发工作的新人们系统地传授上游设计的技巧是一个需要解决的问题。
而解决这个问题的方法之一就是“设计模式”。设计模式是为了解决经常发生的问题而总结出的典型方法。在介绍设计模式的书籍中,最著名的莫过于《设计模式:可复用面向对象软件的基础》A一书了。合理使用该书中介绍的设计模式,就可以提高开发质量与生产效率。而本书将要介绍的基础设施设计模式,就是将这种适用于软件开发的设计模式技巧应用到基础设施的开发中去。
笔者所属的NTT DATA集团每年研究与调查100多个系统中使用的技巧,并进行基础设施设计模式的开发,这些基础设施设计模式已经在数百个项目中被广泛使用了。实际上,我们也从用户那里得到了“很容易理解一般的基础设施应该有哪些选择项”“在确认设计是否妥当时发挥了很大作用”“能够防止在设计研讨过程中有遗漏并提高了开发质量”“对提高设计研讨速度有很大贡献”等赞誉,且90%以上的用户向我们反映使用基础设施设计模式有提高品质、回避风险、减少研讨工时等效果。
通过学习围棋与将棋中的“定式”A、空手道与柔道中的“型”B,可以采取基本措施应对各种状况。在基础设施开发中也是一样,以基础设施设计模式为基础进行设计,就像是高级基础设施技术者们在进行设计研讨一样。
……
书摘
现在,关于系统与基础设施开发的信息有很多,这些信息也很容易获取。因此,很容易让人觉得即使是不太具备基础设施开发技巧的人,也可以根据这些信息轻松地完成开发工作。但是大多数情况下,事实却并非那么简单。如果不具备足够的基础设施开发技巧,例如没有与用户等相关人员进行充分的沟通,就会开发出难以使用的系统。最终的结果就是增加了投资过剩,以及因需求定义不充分而导致系统运行后问题频发的风险。
高级技术者参与需求定义等上游设计,对于防止以上事态的发生是非常有效的。高级技术者对于各种需求都进行过类似的设计,同时还具备解决各种问题的经验。在大多数情况下,他们都可以应用从这些经验中总结出的技巧,高效地推进研讨进度。
那么怎样才能高效地、站在更高的层面上学习高级技术者的技巧呢?能够参与需求定义这种上游设计的人很少,能够从中吸取经验的人也很有限。此外,单纯地通过积累经验来提高技能也是有限度的。在计算机系统的适用范围飞速扩大,且越来越复杂和多样的今天,如何向刚刚从事基础设施开发工作的新人们系统地传授上游设计的技巧是一个需要解决的问题。
而解决这个问题的方法之一就是“设计模式”。设计模式是为了解决经常发生的问题而总结出的典型方法。在介绍设计模式的书籍中,最著名的莫过于《设计模式:可复用面向对象软件的基础》A一书了。合理使用该书中介绍的设计模式,就可以提高开发质量与生产效率。而本书将要介绍的基础设施设计模式,就是将这种适用于软件开发的设计模式技巧应用到基础设施的开发中去。
笔者所属的NTT DATA集团每年研究与调查100多个系统中使用的技巧,并进行基础设施设计模式的开发,这些基础设施设计模式已经在数百个项目中被广泛使用了。实际上,我们也从用户那里得到了“很容易理解一般的基础设施应该有哪些选择项”“在确认设计是否妥当时发挥了很大作用”“能够防止在设计研讨过程中有遗漏并提高了开发质量”“对提高设计研讨速度有很大贡献”等赞誉,且90%以上的用户向我们反映使用基础设施设计模式有提高品质、回避风险、减少研讨工时等效果。
通过学习围棋与将棋中的“定式”A、空手道与柔道中的“型”B,可以采取基本措施应对各种状况。在基础设施开发中也是一样,以基础设施设计模式为基础进行设计,就像是高级基础设施技术者们在进行设计研讨一样。
……