书城计算机网络云计算和现代远程教育
48566000000010

第10章 云计算知识(6)

SaaS应用的开发可以利用各种各样已有的软件组件和框架。前面所述的Web应用的三层架构已有多种软件框架支持。而开发SaaS应用可以采纳的另一种架构形式就是面向服务的架构(SOA)。在SOA架构下,SaaS应用之间可以实现互相通信:一个SaaS应用可以作为服务提供者将功能暴露给其他的应用;也可以作为服务的请求者从其他应用获得数据和功能。在SaaS平台中存在大量SaaS应用的情况下,SOA可以使利用已有应用开发和生成新的应用变得更为方便快捷。

2.6.3应用的类别

我们对常见的云应用进行分类讨论。我们根据用户的规模将云应用分为三类:

第一种类型是标准应用,采用多租户技术为数量众多的用户提供相互隔离的操作空间,提供的服务是标准的、一致的。用户除了界面上的个性化设定外,不具有更深入的自定义功能。可以说,标准应用就是我们常用应用软件的云上版本。可以预见,常用的桌面应用都会陆续出现其云上版本,并最终向云上迁移。

第二种类型是客户应用,该类应用开发好标准的功能模块,允许用户进行不限于界面的深度定制。与标准应用是面向最终用户的立即可用的软件不同,客户应用一般是针对企业级用户,需要用户进行相对更加复杂的自定义和二次开发。客户应用是传统的企业IT解决方案的云上版本。

第三种类型是多元应用,这类云应用一般由独立软件开发商或者是开发团队在公有云平台上搭建,是满足用户某一类特定需求的创新型应用。不同于标准应用所提供的能够满足大多数用户日常普遍需求的服务,多元应用满足了特定用户的多元化需求。现在,在Google App Engine平台上已经出现了数量众多的多元应用。比如,Mutiny为身处美国旧金山地区的用户提供了地铁和公交的时刻表服务;The Option Lab为投资者提供了期权交易策略制定、风险分析、收益预期等一揽子方案;Fitness Chart帮助正在进行健身练习的用户记录体重、脂肪率等数据,使用户可以跟踪自己的健身计划,评估其效果。这样的多元化应用不胜枚举,涉及人们生活的方方面面,满足不同人群的各种需求。

公有云平台的出现推动了互联网应用的创新和发展。这些平台降低了云应用的开发、运营、维护成本。从基础设施到必备软件,从应用的可伸缩性到运行时的服务质量保障,这一切都将由云平台来处理。那么,对于云应用提供商,尤其是多元应用提供商来说,一款云应用的诞生甚至可以实现零初始投入的目标,唯一需要的就是富有创意的点子和敏捷而简单的开发。

上面我们将云应用划分为三种类型,现在对三种类型的流行程度和功能进行讨论。

标准应用是人们日常生活中不可或缺的服务,比如,文档处理、电子邮件和日程管理等。这些应用提供的功能是人们所熟悉的,绝大多数云应用使用者将会使用它们来处理日常事务。标准应用的类型有限,它们必须具备的功能和与用户交互的方式在一定程度上已经形成了业界标准。标准应用的提供商往往是具有雄厚实力的IT业巨头。

客户应用针对的是具有普遍性的某种需求,比如,客户管理系统(CRM)和企业资源规划系统(ERP)等。这样的应用可以被不同的客户定制,为数量较大的用户群所使用。客户应用的类型较丰富,但往往集中在若干种通用的业务需求上。客户应用的提供商可以是规模较小的专业公司。

多元应用满足的往往是小部分用户群体的个性化需求,比如,身处某个城市的居民或者正在进行健身练习的用户。这些用户的应用追求新颖和快速,虽然应用的用户群体可能有限,但是他却对该目标群体有着巨大的价值。多元应用的种类繁多,千变万化,其提供者可以是规模很小的开发团队,甚至是个人。即使用户再微小的需求如果能够得到满足,就可以创造价值。它聚合起来具有巨大的潜力。在云应用的生态系统中,客户应用和多元应用在传统信息产业模式中,这部分空间所蕴藏的价值并没有被很好地挖掘。各大IT厂商主要关注于标准应用用户的需求,而忽视了相对较难把握的个性化需求。云计算的出现显着降低了应用的开发和维护成本,拉近了初创型公司和行业巨头们的技术差距,使得具有创新精神和独到眼光的团队可以快速地将构想化为现实。可以说,云计算为信息行业创造了新的增长空间,也为互联网用户提供了更加丰富的选择。

2.6.3.1标准应用

在线文档服务是标准应用的一个典型示例,比如,Google Docs。Google Docs允许用户在线创建文档,并提供了多种布局模板。Google Docs是完全基于浏览器的SaaS服务,用户不必在本地安装任何程序,只需要通过浏览器登录服务器,就可以随时随地获得自己的工作环境。在用户体验上,该服务做到了尽量符合用户使用习惯,不论是页面布局、按钮菜单设置还是操作方法都与用户所习惯的本地文档处理软件(如Microsoft Office和Open Office等)相似。用户可以从零开始采用该标准应用创建新文档,也可以将现有文档上传到应用服务器端,利用Google Docs的处理功能继续编辑。编辑工作完成后,用户可以将其下载到本地机器保存,也可以将其保存在服务器端。将文档保存在服务器端的好处是可以方便地利用该标准应用提供的共享功能与预先设定的合作者共同创作文档,或者邀请审阅者对文档进行在线审阅。Google Docs还支持将编辑好的文档发布到互联网,用户可以设定访问权限,让全世界的互联网用户或者一部分指定的用户像浏览网页一样看到发布出来的文档。

标准应用的一个重要特点就是代码运行在平台层上,而不是用户本地的机器上,很多以前在本地运行的复杂应用将陆续被迁移到云中,并且由用户通过浏览器来执行。这就需要在网页中提供和本地窗口应用一样丰富的功能集合,并且在服务质量(比如响应速度)上和本地窗口应用差别不大。然而,这类云应用在功能方面往往与先前本地的版本有所差异,这很大程度上是因为云应用的开发难度要大很多。先前本地版本的应用有着经过几十年不断改进过的编程语言和大量开发工具的支持,而在线应用的开发则主要依赖于Java Script,在开发和调试的难度上都比较高,而且需要额外考虑远程通信的效率问题。如果能够基于目前比较主流的编程语言开发应用,然后在运行时生成优化的Java Script代码,则可以在很大程度上简化开发的复杂度,Google Web Toolkit正是朝着这一方向的一个尝试,使得开发人员可以使用Java语言开发支持Ajax的Web应用。

2.6.3.2客户应用

Salesforce CRM是客户应用的典型代表。其关键点在于采用了多租户架构,使得所有用户和应用程序共享一个实例,同时又能够按需满足不同的客户要求。多租户架构分离了应用的逻辑和数据,企业用户可以通过元数据定义自己的行为和属性,并且定制化以后的应用程序不会影响其他企业用户。另外,Salesforce.com还推出了自己的编程语言Apex,它是一个易用的、多租户的编程语言,在一定程度上解决了应用层在模型开发复杂度方面的问题。用户可以通过Apex创建自己的组件,修改Salesforce.com提供的现有代码。不仅如此,Apex还使得编写的程序天生就符合网络服务的要求,并且可以通过SOAP方式访问,方便了第三方的ISV进行应用开发。

在开发结束以后,应用能够被有效地部署在运行平台上,并激活至可用状态,对于用户来说,应用达到可用状态并不是唯一的目标,应用还需要具有一定的互操作性。互操作性一方面是考虑如何将现有的应用迁移到云中,另一方面是考虑云应用是否可以从一个云提供商迁移到另外一个不同的云提供商。前者的问题其实和传统意义上的互操作性比较类似,考虑的是应用从一个操作系统迁移到另外一个操作系统,或者将应用从一个运行平台迁移到另外一个运行平台。后者的问题主要是由于目前云计算缺乏一整套开放标准,使得云应用乃至整个云计算自身缺乏统一的数据描述模型及通信标准等规范。如果云应用不能迁移,那么当用户决定选择另外一个云提供商作为服务平台的时候,就意味着先前的投入没有被有效地再利用。更为致命的是用户的数据将无法从一个云平台中导出并导入到另一个云平台中。这无疑会使用户,尤其是拥有大量历史数据的企业和机构用户对云计算望而却步,这对于云计算本身的发展是极为不利的。互操作性的解决有赖于云计算开放标准建立,这需要当前IT公司的共同推动。

2.6.3.3多元应用

为旧金山地区用户提供实时、随处的公交系统时刻表服务的Mutiny是多元应用的典型代表之一。用户可以随时通过便携设备登录Mutiny网站,获知自己所处位置附近所有的公共汽车、地铁线路和停靠站点,以及下一班车的进站时间。Mutiny获取移动设备上的CPS坐标,利用该坐标信息访问Google Map的API得到使用者目前所处的街道位置,以及附近所有的公交站、地铁站信息。用户单击其中任意一个站点,就会得到这个站点下一班车的到站时间,该到站信息是从旧金山市公共交通系统的网站上获得的。可见,Mutiny巧妙地整合网络上的数据资源,利用云平台为特定用户群(旧金山市的居民)提供了便捷的服务。以Mutiny为代表的云应用通常将来自两个或多个源的数据进行组合,构成一个崭新的服务。

这种设计方式被称为Mashup,它追求的是便捷而快速的整合,通常是使用数据源提供的开放应用程序接口(Open API)来实现的。Mashup应架构上由两个不同部分组成:数据内容/Open API提供者和Mashup站点。这两个部分在逻辑上和物理上都是相互分离的。数据内容/Open API提供者是被融合的内容的提供者。在Mutiny的例子中,该提供者是Google Map和旧金山市公交系统网站。为了方便数据的检索,该数据源通常会将自己的内容通过Web协议对外提供。Mashup站点是数据融合发生的地方,可以在服务器端完成,也可以在浏览器端完成。若在服务器端,Mashup直接使用服务器端动态内容生成技术实现,为用户提供整合后的最终页面;若在浏览器端,则需通过客户机端脚本(如JavaScript)或Applet来完成。

作为信息产业在互联网时代的最新发展,云计算在过去的几年中快速成长,已经出现了很多商业应用,比如,Amazon EC2、Google App Engine和Salesforce.com提供的不同层次的云服务。云计算的发展和应用离不开一系列创新技术的支持,云计算所追求的远景也为互联网时代的信息技术带来了一系列的挑战。在这些挑战中,有些虽然是传统计算平台中的经典问题,但在云计算中又被赋予了新的内涵;有的则是云计算中的新问题、新技术。