云平台

转向云计算(cloud computing),是业界将要面临的一个重大改变。各种云平台(cloud platforms)的出现是该转变的最重要环节之一。顾名思义,这种平台允许开发者们或是将写好的程序放在“云”里运行,或是使用“云”里提供的服务,或二者皆是。

 

定义术语

概述

  应用平台(application platforms)是如何被使用的。开发团队在创建一个户内应用(on-premises application,即在机构内运行的应用)时,该应用所需的许多基础都已经事先存在了:操作系统为执行应用和访问存储等提供了基础支持;机构里的其他计算机提供了诸如远程存储之类的服务。倘若每创建一个户内应用都得首先构建所有这些基础的话,那么恐怕我们今天看到的应用会少很多。

  同理,倘若每一个希望创建云应用[1](cloud application)的开发团队都得首先构建自己的云平台的话,那么我们今后看到的云应用将寥寥无几。幸运的是出现了一些致力于解决此问题的厂商,今天有很多云平台技术可供我们使用。本文的主旨即从企业应用创建者的角度来分类并简要介绍这些技术。

  三种云服务

  实际环境中的云平台:三种云服务

  为掌握云平台,我们先从大体上考察一下云服务。我们可以把通过“云”提供的服务分为三大类。它们是:

  软件即服务(Software as a service,SaaS):SaaS应用是完全在“云”里(也就是说,一个Internet服务提供商的服务器上)运行的。其户内客户端(on-premises client)通常是一个浏览器或其他简易客户端。Salesforce可能是当前最知名的SaaS应用,不过除此以外也有许多其他应用。

  附着服务(Attached services):每个户内应用(on-premises application)自身都有一定功能,它们可以不时地访问“云”里针对该应用提供的服务,以增强其功能。由于这些服务仅能为该特定应用所使用,所以可以认为它们是附着于该应用的。一个著名的消费级例子就是苹果公司iTunes:其桌面应用可用于播放音乐等等,而附着服务令购买新的音频或视频内容成为可能。微软公司的Exchange托管服务是一个企业级例子,它可以为户内Exchange服务器增加基于“云”的垃圾邮件过滤、存档等服务。

  云平台(Cloud platforms):云平台提供基于“云”的服务,供开发者创建应用时采用。你不必构建自己的基础,你完全可以依靠云平台来创建新的SaaS应用。云平台的直接用户是开发者,而不是最终用户。

  要掌握云平台,首先要对这里“平台”的含义达成共识。一种普遍的想法,是将平台看成“任何为开发者创建应用提供服务的软件”。下一节,我们将对此作具体讲解。

应用平台的一般模型

  我们今天对应用平台(application platform)的认识,主要来源于户内平台(on-premises platforms)。因此,一种思考云平台(cloud platforms)的方式,就是考察应用开发者在户内环境里所依赖的服务(services)是如何转变为“云(cloud)”的。

  无论在户内环境、还是在“云”里,我们可以认为一个应用平台(application platform)包含以下三个部分:

  一个基础(foundation):几乎所有应用都会用到一些在机器上运行的平台软件。各种支撑功能(如标准的库与存储,以及基本操作系统等)均属此部分。

  一组基础设施服务(infrastructure services):在现代分布式环境中,应用经常要用到由其他计算机提供的基本服务。比如提供远程存储服务、集成服务及身份管理服务等都是很常见的。

  一套应用服务(application services):随着越来越多的应用面向服务化,这些应用提供的功能可为新应用所使用。尽管这些应用主要是为最终用户提供服务的,但这同时也令它们成为应用平台的一部分。(也许你要奇怪,为什么要把别的应用视为平台的一部分,但在面向服务的世界里是这样的。)

  开发工具也是另一个重要部分。现代工具可以帮助开发者们运用应用平台的这三个部分来构建应用。

  为了对这个抽象模型有具体的认识,下面我们将它与今天主流的户内平台加以对照。户内基础(on-premises foundation)包括有:

  操作系统(Operating system):Windows、Linux及其它版本的Unix是主流选择。

  本地支持(Local support):不同风格的应用采用不同的技术。例如,.NET框架和Java EE应用服务器为Web应用等提供了一般性支持,而其它技术则面向特定类型的应用。比如Microsoft Dynamics CRM产品提供了一个为创建特定类型的商业应用而设计的平台。类似地,不同种类的存储被用于不同目的。Windows、Linux及其它操作系统里的文件系统提供了原始字节的存储功能,而各种数据库技术(比如Oracle DBMS、MySQL、Microsoft SQL Server及IBM DB2等)则提供了更加结构化的存储功能。

  对于户内基础设施服务(on-premises infrastructure services),典型例子包括:

  存储(Storage):跟基础里的存储一样,基础设施里的存储也分为多种风格。远程文件系统可以提供简单的面向字节的存储,而Microsoft SharePoint文档库可以提供更加结构化的远程存储服务。应用也可以远程访问数据库系统,从而能够访问其他种类的结构化存储。

  集成(Integration):把机构内部的应用连接起来,通常要依赖于某种集成产品提供的远程服务。比如,消息队列(message queue)是一个简单的例子,IBM的WebSphere Process Server及微软的BizTalk Server等产品可用于更加复杂的场景。

  身份管理(Identity):对许多分布式应用而言,提供身份信息是一个最基本的需求。常见的解决此问题的户内技术包括微软的Active Directory(活动目录)及其它LDAP(轻量级目录访问协议)服务器。

  至于户内应用服务(on-premises application services),不同机构间差别很大。原因很简单:不同机构使用的是不同的应用,因而它们暴露的服务也五花八门。对于这些户内平台里的应用,一种思考方式是将它们分成两大类:

  套装软件(Packaged applications):这包括像SAP、Oracle Applications、Microsoft Dynamics在内的许多商业软件,以及许许多多现成的产品。虽然不是所有套装软件都向其它应用暴露服务,但越来越多的套装软件是这么做的。

  定制应用(Custom applications):许多机构对定制软件进行了大笔投资。随着这些应用逐渐将其功能以服务的形式暴露出来,它们也将成为户内应用平台的一部分。

  照此描述,户内应用平台看起来好像挺复杂的。但实际上,它也是随着时间的发展而不断演化的。在计算技术的早期,应用平台只包含一个户内基础(比如IBM主机上的MVS和IMS)。到了八、九十年代,随着分布式计算的普及,户内基础设施服务也加入了进来(远程存储、集成和身份管理成为十分常见的服务)。时至今日,随着面向服务的应用的出现,户内应用服务也成为应用平台的一部分了。下一步发展是毫无疑问的,即在“云”里提供这三个部分。[2]

从户内平台到云平台

  上面那个一般模型描述的是户内平台,但它同时也可被用来考察云平台。另外,因为户内平台与云平台可以一同使用,所以理解它们如何一起工作也是十分重要的。

  正如户内应用(on-premises application)是构建于户内基础(on-premises foundation)之上的,云应用(cloud application)也可以构建于云基础(cloud foundation)之上。无论是户内环境、还是“云”里的基础设施与应用服务,均可为这两种应用所使用。户内平台为我们今天的应用提供支持,类似地,云平台为我们明天将构建的应用提供服务。

  云平台是由搭载了云平台服务器端软件的云服务器、搭载了云平台客户端软件的云电脑以及网络组件所构成的,用于提高低配置或老旧计算机的综合性能,使其达到现有流行速度的效果。