我们今天对应用平台(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)。到了八、九十年代,随着分布式计算的普及,户内基础设施服务也加入了进来(远程存储、集成和身份管理成为十分常见的服务)。时至今日,随着面向服务的应用的出现,户内应用服务也成为应用平台的一部分了。下一步发展是毫无疑问的,即在“云”里提供这三个部分。