首页>参考读物>计算机科学与技术>软件与程序设计

构建云应用:概念、模式和实践
作者 : (美)Christopher Moyer 著
译者 : 顾毅 等译
出版日期 : 2012-02-17
ISBN : 978-7-111-37312-4
定价 : 49.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 258
开本 : 16
原书名 : Building Applications in the Cloud: Concepts, Patterns, and Projects
原出版社: Pearson Education Asia
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

本书沿用大家所熟悉的“设计模式”格式,介绍了云计算平台上行之有效的模式。通过基于Python和Amazon Web Services(AWS)平台的详细的范例代码和应用程序,向读者演示了这些模式的实际运用。本书内容包括掌握成功的云计算解决方案的核心原则,如何正确地构建软件即服务(Software as a Service,SaaS)模式,理解不同的云服务提供商所提供的服务,设计主机镜像、为云平台上的应用打造一个坚实的基础,如何针对与外部系统的交互行为选择最合适的模式,如何实现高效的数据处理以及如何充分发挥多主机集群部署的优势。

图书特色

仅仅把应用程序迁移到云计算环境是不够的:应该采用性能、可扩展性、可用性俱佳的云计算架构模式。不论你要构建全新的解决方案还是移植既有的应用程序,本书都将帮助你实现优越的架构。
  沿用大家所熟悉的“设计模式”格式,云计算应用开发专家Chris Moyer在本书中介绍了云计算平台上行之有效的模式。通过基于Python和Amazon Web Services(AWS)平台的详细的范例代码和应用程序,Moyer向读者演示了这些模式的实际运用。
本书涵盖了以下这些内容:
● 掌握成功的云计算解决方案的核心原则
● 正确地构建软件即服务(Software as a Service,SaaS)模式
● 理解不同的云服务提供商所提供的服务
● 设计主机镜像,为云平台上的应用打造一个坚实的基础
● 针对与外部系统的交互行为,选择最合适的模式
● 实现高效的数据处理
● 充分发挥多主机集群部署的优势

图书前言

作为一家小型创业公司的开发人员,做了几个月将既有服务移植到云环境的开发工作之后,我开始意识到这些工作由我一个人来做的话工作量实在太大了。于是,我开始寻找其他的开发人员来协助我,或者当我找到更好、更有意思的工作机会时让他顶替我。不久,我就发现真正彻底理解开发基于云平台的应用程序所必需的复杂度的人相当少,而且这些人几乎都对自己目前的公司很满意。
  就如何使用云平台的话题,我开始在博客中写专题文章,网址是http://blog. coredumped.org,但我很快又意识到,我可以花上整整一年写下所有这些人们应该知道的东西。这些文档应该更适合放在参考书中而不是随随便便地散落在博客各处,所以我决定写一本书。
本书的目的
  本书并不是一本需要从头至尾去读完的教程,而是一本教你如何在云环境中创建应用程序的指南,也是一本可以在遇到特定问题时随时参考的手册。当公司为你安排新的项目,并告诉你要让它具有伸缩性时,看看本书中所讨论的模式是不是适用于该项目。当你在项目中发现了特定的问题却束手无策时,翻一翻本书。如果你尝试开始一个新的项目,并且你有一个非常完美的想法,却不知道该如何让系统能够收缩自如时,翻一翻本书。如果你正尝试改造一个既有的项目,使其能在云环境中自由扩展时,翻一翻本书。如果你不知道在云计算环境中能构建什么样的应用程序时,翻一翻本书。
  本书中并没有发明许多新的模式,而仅仅是向你展现了一些技巧和新技术,这些都是在云环境中运行系统时所需要考虑的。尽管你可以将书中讨论的模式用于任何形式的集群环境,但这些模式是为云计算所提供的服务量身定做的。
如何使用本书
  本书分为三个部分。每个人都应该阅读第一部分,从而对云计算有一个基本的理解。在第二部分中,你可以挑选最感兴趣的模式阅读。如果你从未开发过任何形式的云应用程序,建议看一下第三部分中的范例应用程序,从而使你对该系统究竟最适合于什么样的应用程序有一个确切的了解。
  第一部分:“概念”
  第一部分旨在让你掌握一些在云平台上进行开发的基本概念。你应该全部阅读这一部分,该部分分为以下几章。
  第1章:“云服务的基础”—提供了一些使用云计算解决方案时的基本概念,对于任何对云计算平台感兴趣的开发人员来说,本章是绝不容错过的。
  第2章:“把软件做成服务”—针对如何实现软件即服务(SaaS)提供了一些基本的指南。本章详细讨论了为什么软件即服务是个好主意,以及如何正确构建SaaS。
  第3章:“云服务提供商”—提供了一些由不同云服务提供商所提供的服务的实例。
  第二部分:“模式”
  第二部分更像是一本手册,给出了构建系统时的问题以及相应的解决方案。
  第4章:“设计镜像”—包括基本的构建基础镜像的模式,这些镜像是构建应用程序的基础。
  第5章:“设计架构”—包括让系统与外部系统(不是你所采用的云服务提供商的系统)进行交互的模式。
  第6章:“操作数据”—包括针对数据执行代码片段的模式。
  第7章:“集群系统”—包括为了充分发挥集群部署优势而设计的基础框架中使用的模式。
  第三部分:“项目”
  第三部分以真实世界中的应用程序为例,并将书中所介绍的模式运用进去。这两章都采用了相同的入门教程,但实现的方式不同。
  第8章:“简单的博客系统”—详细介绍了如何从头开始构建一个简单的博客系统,且不采用任何既有的框架。
  第9章:“使用Marajo开发博客系统”—详细介绍了如何使用Marajo这一基于云环境的Web应用框架来构建博客系统。
从何开始
  现在,许多人的第一个问题就是:从何开始?该如何迅速开始开发应用程序?如果不想完整地阅读本书,怎样做才能简单快速地了解到书中这些概念的实际工作原理?
  选择了本书,你就已经走上了正确的轨道。如果随随便便地选择一家云服务提供商,启动几台服务器,期待能从这些服务商那里得到你所想要的东西,毋庸置疑,这是不切实际的。如果只是挑选一家云服务提供商,而不做足够的事前研究,其结果往往会让人们陷入一大堆问题中,而且还会把这些问题归咎于云服务提供商。这就相当于你买了一辆手动挡的汽车,但完全不了解该如何驾驶,结果却向销售商抱怨说是他们把车卖给了你。如果你在事前没有做研究或准备,那么在云环境中遇到问题时,完全不应该感到意外。如果你不是开发人员,找第三方来帮你管理云环境可能会更合适,但如果你阅读了本书,我想你绝对不会满足于“找一群家伙来搞定它”。
致谢
  我要感谢我的伙伴和导师Mitch Garnaat,感谢他给予我的帮助和激励,让我进入了云计算领域。我也要感谢Amazon Web Services的团队,感谢他们推动云计算的市场不断向前,且持续不断地带来新的产品,使本书中的内容成为可能。

上架指导

计算机\程序设计

封底文字

想要全力发挥出云计算应用的价值并规避那些毫无必要的问题吗?
仅仅把应用程序迁移到云计算环境是不够的:应该采用性能、可扩展性、可用性俱佳的云计算架构模式。不论你要构建全新的解决方案还是移植既有的应用程序,《本书将帮助你实现优越的架构。

沿用了大家所熟悉的“设计模式”的格式,云计算应用开发专家Chris Moyer在本书中介绍了云计算平台上行之有效的模式。通过基于Python和Amazon Web Services(AWS)平台的详细的范例代码和应用程序,Moyer向读者演示了这些模式的实际运用。

本书涵盖了以下这些内容:
 掌握成功的云计算解决方案的核心原则
 正确地构建软件即服务(Software as a Service,SaaS)模式
 理解不同的云服务提供商所提供的服务
 设计主机镜像,为云平台上的应用打造一个坚实的基础
 针对与外部系统的交互行为,选择最合适的模式
 实现高效的数据处理
 充分发挥多主机集群部署的优势

作者简介

(美)Christopher Moyer 著:Chris Moyer刚从罗切斯特理工大学(Rochester Institute of Technology,RIT)毕业,获得了软件工程的学士学位。Chris拥有5年以上的编程经验,主要集中在云计算领域。他的大部分时间都在开发大受欢迎的boto客户端类库,该类库用于与Amazon Web Services进行通信。通过跟随boto的发明人Mitch Garnaat学习,Chris随后开始基于该客户端类库开发web框架,也就是Marajo和botoweb。基于这些框架,他还创建了大规模的应用程序。 Chris目前是Newstex,LLC公司的技术部副总裁,他负责管理技术研发工作,这些技术用于将应用程序迁移至云平台,同时他也管理着自己的部门,该部门正在积极地维护和开发几个应用程序。Chris与妻子Lynn一同住在纽约。

译者简介

顾毅 等译:暂无简介

译者序

今天,个人电脑、移动设备、智能手机正以前所未有的速度爆发式地增长着。这些小型化的电子设备之所以能快速发展,完全得益于因特网,尤其是Web 2.0的发展。由于这些设备的计算能力有限,所以计算需求都渐渐转移到了服务器上,人们通过网络使用远程的计算结果,并通过这些轻量化的设备获取远程服务器上的服务和资源。这也是今后人们使用软件的一大趋势。
  那么作为服务的提供者,该如何才能拥有足够的运算能力来为用户提供服务呢?过去,人们会使用性能强大的服务器来实现这个需求。然而,随着硬件制造越来越接近工艺上的极限,30多年来,业界一直遵循的摩尔定律也许在未来的几年内就会成为历史。然而,近几年一种称为“云计算”的概念诞生了,与传统的使用计算资源的方式不同,云计算将计算资源视为一种服务,形同公用事业一般的服务。向最终用户提供服务的公司再也不用事先通过估算去采购昂贵的硬件了,取而代之的是他们可以按需使用这些取之不尽用之不竭的计算资源。
  于是,一个全新的时代到来了!
  Amazon、Google等行业巨头都先后推出了自己的云服务,与此同时,许多小型的云服务提供商也如雨后春笋般涌现出来。根据服务的不同类型,云服务可分为IaaS(基础设施即服务)以及PaaS(平台即服务)两大类。使用云平台和服务需要大量的经验和技巧。我在工作中也使用过IaaS型的Amazon Web Services。当时,由于缺乏经验,也只是将EC2当做单纯的虚拟机来使用。如此使用云平台的公司或个人其实也不占少数。但是,随着使用的深入,我们发现,如果仅仅是这样来使用云平台,完全无法发挥出云平台的自动伸缩、按需分配资源等优势。而且,云的计费系统普遍比较复杂,如果不注意使用技巧,往往会产生高额的账单,这完全掩盖了云平台的好处。我们不禁对这个全新的时代产生了不少疑惑。
  幸运的是,作者在进行了大量开发,积累了大量经验之后,为我们带来了这本书。本书介绍了许多云计算的核心概念,以及不同的云服务提供商所提供的云平台的特色。更为重要的是,本书用很大的篇幅讲解了在云平台上开发应用程序的模式和技巧。就像GOF的设计模式那样,书中所介绍的这些模式对我们解决在日常工作中所遇到的问题具有非常实际的指导意义。此外,本书最后还展示了两个项目的范本,并将书中所介绍的概念和技巧运用到其中,给读者十分直观且深刻的印象。本书做到了理论和实践的平衡。对于每一位云平台的开发者来说,本书具有非常高的实用价值。
  希望各位读者看完本书之后,对云计算能有更进一步的理解,能够开发出更好的应用。
  由于云计算的发展快速很快,书中提到的一些服务和工具在翻译过程中已经发生了一些变化,我在书中用“译者注”的方式进行了说明。
  参与本书翻译和校对工作的还有曾燕萍。在此,我也要感谢机械工业出版社的陈冀康老师和关敏老师以及其他参与本书编辑和出版的工作人员,感谢大家给予我的帮助和为本书所付出的辛勤劳动!翻译过程中难免存在疏漏,也请各位读者多多包涵并予以指正。

图书目录

译者序
前言
关于作者
第0章  引言 1
0.1  云计算是什么 1
0.2  云计算的革命 2
0.2.1  主机 2
0.2.2  PC革命 3
0.2.3  高速互联网 4
0.2.4  云 5
0.2.5  HTML5和本地存储 6
0.2.6  移动设备的黎明 7
0.3  线程化,并行处理,并行
计算 7
0.4  基于云的开发过程与其他应用开发过程有何不同 9
0.5  应该避免什么 10
0.6  开始用云 11
0.6.1  选择一种云模式 12
0.6.2  实现一种云模式 12
第一部分  概念
第1章  云服务的基础 16
1.1  云计算的起源 16
1.2  云服务是什么 17
1.2.1  计算 18
1.2.2  存储 18
1.2.3  联接 18
1.3  遗留模式 19
1.4  运行在云中的应用并不会自主扩展 20
1.5  失效是必然的 20
1.6  一致性,有效性,分区容错性 21
1.6.1  一致性 22
1.6.2  有效性 22
1.6.3  分区容错性 23
1.7  最终一致性 23
1.8  本章小结 24
第2章  把软件做成服务 25
2.1  本书中使用的工具 25
2.1.1  注册Amazon Web Services 26
2.1.2  安装boto 26
2.1.3  环境设置 27
2.1.4  测试 29
2.2  什么是应用程序所需要的 29
2.3  数据层 31
2.4  应用层 35
2.4.1  使用Elastic Load Balancing 36
2.4.2  向负载均衡器添加服务器 38
2.4.3  自动向负载均衡器注册实例 39
2.5  HTTP和REST 40
2.5.1  HTTP header 41
2.5.2  Body 43
2.5.3  方法 44
2.6  授权层 47
2.7  客户端层 49
2.7.1  基于浏览器的客户端 50
2.7.2  本地应用程序 51
2.8  本章小结 51
第3章  云服务提供商 53
3.1  Amazon Web Services 53
3.1.1  SimpleStorageService(S3) 54
3.1.2  CloudFront 60
3.1.3  Simple Queue Service (SQS) 62
3.1.4  Elastic Compute Cloud (EC2) 64
3.1.5  Elastic Block Storage (EBS) 69
3.1.6  Elastic Load Balancing (ELB) 71
3.1.7  SimpleDB 73
3.1.8  Relational Database Service(RDS) 75
3.1.9  Simple Notification Service (SNS) 81
3.1.10  Virtual Private Cloud(VPC) 84
3.2  Google云 86
3.2.1  AppEngine 87
3.2.2  Google Storage 88
3.3  Rackspace云 89
3.3.1  CloudFiles 90
3.3.2  CloudServers 90
3.3.3  CloudSites 90
3.4  本章小结 91
第二部分  模式
第4章  设计镜像 94
4.1  预打包镜像 95
4.1.1  概要 95
4.1.2  使用动机 95
4.1.3  详述 95
4.1.4  实现 96
4.1.5  范例 98
4.1.6  总结 100
4.2  单例实例(Singleton Instance) 100
4.2.1  概要 100
4.2.2  使用动机 100
4.2.3  详述 101
4.2.4  实现 101
4.2.5  范例 101
4.2.6  总结 103
4.3  原型镜像 103
4.3.1  概要 103
4.3.2  使用动机 103
4.3.3  详述 104
4.3.4  实现 104
4.3.5  范例 105
4.3.6  总结 106
第5章  设计架构 107
5.1  适配器 108
5.1.1  概要 108
5.1.2  使用动机 108
5.1.3  详述 109
5.1.4  实现 109
5.1.5  范例 110
5.1.6  总结 114
5.2  门面模式 114
5.2.1  概要 114
5.2.2  使用动机 115
5.2.3  详述 115
5.2.4  实现 115
5.2.5  范例 116
5.2.6  总结 118
5.3  负载均衡代理 119
5.3.1  概要 119
5.3.2  使用动机 119
5.3.3  详述 120
5.3.4  实现 120
5.3.5  范例 120
5.3.6  总结 124
第6章  操作数据 125
6.1  队列(queuing)模式 125
6.1.1  概要 125
6.1.2  使用动机 126
6.1.3  详述 126
6.1.4  实现 127
6.1.5  范例 128
6.1.6  总结 133
6.2  命令模式 134
6.2.1  概要 134
6.2.2  使用动机 134
6.2.3  详述 135
6.2.4  实现 135
6.2.5  范例 135
6.2.6  总结 140
6.3  迭代器模式 140
6.3.1  概要 140
6.3.2  使用动机 141
6.3.3  详述 141
6.3.4  实现 141
6.3.5  范例 142
6.3.6  总结 144
6.4  观察者模式 144
6.4.1  概要 144
6.4.2  使用动机 145
6.4.3  详述 145
6.4.4  实现 146
6.4.5  范例 146
6.4.6  总结 148
第7章  集群系统 149
7.1  Web分层模式 149
7.1.1  概要 149
7.1.2  使用动机 150
7.1.3  详述 150
7.1.4  实现 151
7.1.5  范例 152
7.1.6  总结 162
7.2  信号和锁模式 162
7.2.1  概要 162
7.2.2  使用动机 162
7.2.3  详述 163
7.2.4  实现 163
7.2.5  范例 164
7.2.6  总结 169
7.3  map/reduce 169
7.3.1  概要 169
7.3.2 使用动机 170
7.3.3 详述 170
7.3.4 实现 170
7.3.5 范例 171
7.3.6 总结 175
第三部分  项目
第8章  简单的博客系统 178
8.1  存储 178
8.1.1  创建SDB域 179
8.1.2  User对象 180
8.1.3  Post对象 182
8.1.4  Comment对象 185
8.2  应用逻辑层 188
8.2.1  WSGI的简单介绍 188
8.2.2  DB处理器 190
8.2.3  User、Post、Comment对象的处理器 194
8.2.4  处理垃圾评论 197
8.3  表现层 200
8.3.1  设置HTTP代理 200
8.3.2  博客文章(Post) 201
8.3.3  评论 212
8.4  部署 217
8.4.1  启动基础实例 217
8.4.2  安装软件 218
8.4.3  安装应用程序 220
8.4.4  安装Apache 221
8.4.5  打包镜像 222
8.4.6  创建代理 223
8.5  本章小结 223
第9章  使用Marajo开发博客系统 224
9.1  初始化开发环境 225
9.1.1  handlers 225
9.1.2  resources 225
9.1.3  static 226
9.1.4  templates 226
9.2  创建资源(Resource) 226
9.3  创建处理器 228
9.4  配置应用程序 229
9.5  运行应用程序 231
9.6  创建自定义模板 231
9.6.1  清单页面的模板 231
9.6.2  编辑博客的模板 233
9.7  本章小结 237
术语表 238

教学资源推荐
作者: 明安龙 宋桂岭 刘亮 编著
作者: 余永红
参考读物推荐
作者: 党建 著
作者: [印]纳拉辛哈·卡鲁曼希(Narasimha Karumanchi) 著