互联网时代的软件革命—SaaS架构设计
目前很多软件公司都在逐步从传统软件行业转向SaaS领域,这本书的目标用户就是这些传统软件公司的开发人员,这些开发者的转型,如果只是依靠自己独立摸索,要花费很大的时间和精力,而此书的作者正是一些已经转型的开发者总结的经验之谈,可以帮助后来者快速掌握相关知识,避免走一些弯路,这种知识共享的精神值得夸奖。
本书共分15章,内容安排如下:
章 名 | 主 要 内 容 | 页码 |
第1章 SaaS的前世今生 | 介绍了SaaS的起源,阐述了SaaS的基本概念和理论。重点分析了SaaS软件给用户和软件商带来的好处和优势,当然也谈到了SaaS软件的缺陷及解决办法。还列举了一系列的SaaS成功案例,用事实论述SaaS商业模式的新成就 | 2~30 |
第2章 SaaS成熟度模型 | 阐述了SaaS软件的规模效应对软件架构设计的要求,而对规模效应的支持程度是衡量SaaS架构成熟度的重要特性。多用户环境下的高性能、可配置性和可伸缩性是成熟的SaaS应用应该具备的3个特性,而SaaS的成熟度模型正是根据应用对这3种特性的支持程度来确定的。本章也给出了在不同应用场景中正确选择SaaS成熟度模型的具体指导意见 | 32~47 |
第3章 构建 Multi-Tenant应用 第4章 高性能的 Multi-Tenant最佳实践 | 重点讲述了如何构建多租户的SaaS应用。从SaaS成熟度模型的Level 1开始,一步一步讲解应用架构的改进,最终给出了Level 4的高性能的多租户SaaS应用架构的最佳实践。构建高性能的多租户架构需要同时在数据库层、应用层和Web表现层3个方面进行改造和优化,本书也在这些方面给出了详细的解决方案 | 48~97 |
第5章 Multi-Tenant应用的可配置性 第6章 可伸缩的SaaS应用架构 | 分别介绍了如何构建可配置和可伸缩的多租户SaaS应用架构。SaaS应用的可配置主要包括数据可配置、功能可配置、界面可配置以及流程可配置等,可配置为SaaS应用的个性化设置提供了基础的支持。而对于可伸缩的架构能够保证在用户应用规模不断扩大的情况下,轻松增加相应的服务器等硬件设施,来保证SaaS应用的整体性能要求 | 98~145 |
第7章 SaaS系统安全 | 第七章的内容重点是SaaS安全性。安全性保障是SaaS应用的重中之重,主要包括数据隔离安全、数据连接安全、数据保密、访问者认证、权限控制、监控和记录以及网络安全等多方面内容。第七章也给出了解决这些问题的详细方案和技术手段。 | 146~167 |
第8章 离线应用 | 离线应用也是解决脱网使用SaaS应用的关键技术,同时也是提升SaaS应用性能的有效方法。本章内容涉及本地运行、本地存储、数据同步、冲突解决以及数据传输等各方面的技术,并给出了相关应用架构的设计方案 | 168~190 |
第9章 分布式文件存储 第10章 分布式数据库 第11章 分布式Cache 第12章 分布式计算 | 第9~12章是云计算基础设施的内容,也是本书的又一重点内容。这几章分别介绍了分布式文件、分布式数据库、分布式Cache和分布式计算等多种技术。其中详细讨论了GFS、HDFS和ADFS几种分布式存储方案,探讨了基于代理的分布式数据库架构,以及基于列的分布式数据库架构。在分布式缓存架构设计方面,提出了多层分布式Cache及其改进的架构设计。分布式计算主要探讨MapReduce的分布式计算框架原理,并以文件下载的分布式计算为例讲解分布式计算的各种架构和模型 | 192~254 |
第13章 Open API | 主要讲解Open API技术,包括对Open API的商业价值分析、Open API相关产品、Open API实现技术、Open API托管平台及其服务集成平台实现方案。Open API的实现技术主要是SOAP和REST,在此基础上的Open API托管平台及服务集成平台可以向SaaS应用提供丰富和强大的服务接口资源 | 256~293 |
第14章 开放的SaaS平台 | 介绍了开放SaaS平台的概念。通过对PaaS几种商业模式的介绍,使读者对开放平台的真实特性更加清晰。对于SaaS应用来说,需要的不仅仅是狭义平台,更应该创造条件,完善价值链,吸引更多的角色参与到平台建设中,共同打造SaaS软件大市场和SaaS软件生态圈 | 294~319 |
第15章 结束语 | 探讨了SaaS未来发展趋势。从SaaS的平台化到SaaS的移动化,从SaaS产业链的形成到“服务即软件”思想的提出,SaaS软件的未来是丰富多彩的。此外,最后部分还探讨整个软件行业的发展趋势,并从信息产业大融合的高度分析了未来软件发展的产业终局 | 320~331 |
本书作者
本书是由阿里软件公司主持编写的,阿里软件是国内最知名的SaaS软件运营商之一。本书的作者都是阿里软件研究院的研究人员,在SaaS软件理论和技术方面有丰富经验。他们有些是SaaS理论权威专家,有些是SaaS软件的资深软件架构师,有些是阿里软件重大项目的技术带头人。他们分别是:
叶 伟 —— 阿里软件研发中心总监
赵 进 —— 阿里软件首席架构师
曾 义 —— 阿里软件研究院技术部经理
叶 军 —— 阿里软件研究院资深架构师
莫建祥 —— 阿里软件服务器首席架构师
闻 波 —— 阿里软件研究院资深架构师
黄晓龙 —— 阿里软件研发中心资深架构师
龙 良 —— 阿里软件研发中心资深架构师
李 战 —— 阿里软件研究院资深架构师
联系方式
本书开辟了专门的博客,欢迎广大读者和我们交流和沟通。我们的博客地址是:
目 录
第1篇 SaaS商业模式
第1章 SaaS的前世今生 2
1.1 什么是SaaS 3
1.1.1 SaaS的产生 3
1.1.2 SaaS基本概念 6
1.1.3 SaaS与ASP的异同 8
1.2 SaaS软件的优势 9
1.2.1 给用户的优势 10
1.2.2 给软件商的优势 14
1.3 SaaS的缺点及解决办法 16
1.3.1 依赖互联网 16
1.3.2 数据安全性 17
1.3.3 数据保密性 19
1.4 SaaS成功案例 20
1.4.1 Salesforce.com 20
1.4.2 Google.com 22
1.4.3 Alisoft.com 24
1.4.4 其他SaaS案例 26
1.5 小结 29
第2篇 SaaS应用架构
第2章 SaaS成熟度模型 32
2.1 SaaS的规模效应 33
2.2 SaaS成熟度模型分级 36
2.2.1 Level 1:定制开发 36
2.2.2 Level 2:可配置 37
2.2.3 Level 3:高性能的多租户架构 39
2.2.4 Level 4:可伸缩性的多租户架构 41
2.3 如何选择合适的SaaS成熟度模型 43
2.3.1 产品所面向的客户群的特征与需求 43
2.3.2 产品的租户数量级别 44
2.3.3 团队的开发能力与愿意付出的开发/改造成本 45
2.4 SaaS软件的成熟度模型的渐进步骤 46
2.5 小结 47
第3章 构建Multi-Tenant应用 48
3.1 第一阶段:做项目 49
3.1.1 发现商机 49
3.1.2 “4+1”视图 50
3.1.3 项目托管 58
3.2 第二阶段:做产品 59
3.2.1 共享设备 59
3.2.2 创业之旅 61
3.2.3 可配置化 62
3.3 第三阶段:多租户 63
3.3.1 成长的烦恼 63
3.3.2 如何转化成SaaS多租户模式 65
3.3.3 SaaS多租户设计 70
3.3.4 SaaS多租户模式的威力 72
3.4 小结 73
第4章 高性能的Multi-Tenant最佳实践 74
4.1 数据库层性能优化 75
4.1.1 建立合适的索引 76
4.1.2 消除大数据表连接 77
4.1.3 避免复杂SQL 78
4.2 应用层性能优化 78
4.2.1 Cache 79
4.2.2 统计和报表计算 82
4.2.3 基于Tenant的索引搜索 84
4.2.4 异步操作 85
4.3 Web层性能优化 87
4.3.1 Web开发的性能优化策略 88
4.3.2 Http服务器的性能优化策略 91
4.4 性能监控 93
4.5 优化的效果 95
4.6 小结 95
第5章 Multi-Tenant应用的可配置性 98
5.1 数据可配置 100
5.1.1 定制字段 101
5.1.2 预分配字段 102
5.1.3 名称值对 104
5.1.4 方案比较 106
5.2 功能可配置 107
5.2.1 原子功能划分 108
5.2.2 功能包设计 110
5.2.3 功能使用校验 115
5.3 界面可配置 116
5.3.1 系统菜单可配置 116
5.3.2 页面元素可配置 118
5.4 流程可配置 119
5.5 配置元数据管理 119
5.5.1 配置元数据 120
5.5.2 租户配置数据 123
5.5.3 配置元数据服务 124
5.6 可配置系统运行 125
5.6.1 系统菜单框架 127
5.6.2 功能页面容器 127
5.6.3 扩展数据引擎 128
5.6.4 功能引擎 128
5.7 小结 128
第6章 可伸缩的SaaS应用架构 129
6.1 伸缩性(Scalable)的概念 131
6.2 应用服务器层的水平扩展 132
6.2.1 基于Session复制的水平扩展方式 133
6.2.2 基于Session Sticky的水平扩展方式 136
6.2.3 基于Cache的集中式Session实现水平扩展 137
6.2.4 三种水平扩展方式的比较 138
6.3 数据库层的水平扩展 138
6.3.1 数据库的垂直切分 139
6.3.2 数据库的读写分离技术 140
6.3.3 数据库的水平切分 141
6.3.4 三种数据库层的水平扩展方案对比 144
6.4 小结 145
第7章 SaaS系统安全 148
7.1 应用安全 150
7.1.1 身份认证 150
7.1.2 权限管理 153
7.1.3 日志记录 156
7.1.4 应用监控 157
7.2 数据安全 158
7.2.1 数据隔离 158
7.2.2 数据库连接安全 159
7.2.3 敏感数据加密 160
7.2.4 数据量监控 164
7.3 网络安全 165
7.3.1 安全传输 165
7.3.2 网络攻击防范 167
7.3.3 网络监控 168
7.4 小结 168
第8章 离线应用 170
8.1 系统分析 171
8.1.1 离线应用的4大核心问题 172
8.1.2 离线应用架构 173
8.1.3 相关技术背景 175
8.2 本地使用 176
8.2.1 网络状态检测 176
8.2.2 离线页面支持 178
8.3 本地存储 178
8.3.1 本地数据库支持 178
8.3.2 本地数据存储 179
8.4 数据同步 180
8.4.1 增量数据处理 180
8.4.2 多用户冲突 183
8.5 数据传输 184
8.6 离线应用开发工具介绍 186
8.6.1 本地数据库 187
8.6.2 本地服务 187
8.6.3 工作者线程池 189
8.6.4 Gears待发展的内容 192
8.7 小结 192
第3篇 SaaS基础架构——云计算
第9章 分布式文件存储 194
9.1 大文件的分布式存储 195
9.1.1 GFS 195
9.1.2 HDFS 196
9.2 小文件的分布式存储 202
9.2.1 ADFS(Alibaba Distributed File System) 202
9.2.2 小文件存储的另外方案介绍 207
9.3 小结 208
第10章 分布式数据库 210
10.1 基于列的结构化分布式数据库 211
10.1.1 HBase数据库数据结构 211
10.1.2 HBase系统架构 214
10.1.3 HBase实践 215
10.2 基于代理的分布式数据库 217
10.3 基于列的分布式关系数据库 237
10.4 小结 241
第11章 分布式Cache 242
11.1 单层的分布式Cache 243
11.2 多层的分布式Cache 245
11.3 改进的多层分布式Cache 245
11.4 小结 246
第12章 分布式计算 248
12.1 MapReduce分布式计算框架 249
12.2 文件下载的分布式计算 252
12.2.1 中心索引方式 253
12.2.2 分布式的结构化方式 254
12.2.3 改进模型 256
12.3 小结 258
第4篇 开放的SaaS平台
第13章 不Open API 260
13.1 Open API的商业价值分析 263
13.1.1 Open API的出现、起源与现状 264
13.1.2 Google Maps API带来开放潮流 265
13.1.3 Mashup在Open API的时代 266
13.1.4 Open API的分类 268
13.1.5 Open API的系统架构与运营 276
13.2 Open API相关产品 279
13.3 Open API的实现技术 282
13.3.1 远程接口技术 282
13.3.2 远程接口设计最佳实践 289
13.4 Open API与API托管平台 290
13.5 服务集成平台设计与实现 293
13.6 小结 297
第14章 开放的SaaS平台 298
14.1 PaaS 299
14.1.1 插件模式 301
14.1.2 七巧板模式 303
14.1.3 云计算模式 304
14.1.4 服务托管模式 310
14.2 互联提升价值 311
14.2.1 拓展软件的能力:聚合互联网资源 313
14.2.2 应用互联的价值链 313
14.2.3 基础设施提供 316
14.2.4 互联需开放平台 316
14.3 软件互联平台 317
14.3.1 软件大市场 318
14.3.2 软件生态圈 319
14.4 小结 323
第15章 结束语 324
15.1 SaaS发展趋势 325
15.1.1 SaaS平台化 325
15.1.2 SaaS产业链 326
15.1.3 SaaS移动化 327
15.1.4 服务即软件 328
15.2 软件行业的未来 330
15.2.1 通过互联网使用软件的用户越来越多 330
15.2.2 软件和服务的界限会越来越模糊 330
15.2.3 软件和服务会越来越个性化 331
15.2.4 软件产业大融合 331
参考资料 333