互联网时代的软件革命—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