云计算平台层与传统的应用平台在所提供的服务方面有很多相似之处。传统的应用平台,如本地Java环境或Net环境都定义了平台的各项服务标准、元数据标准、应用模型标准等规范,并为遵循这些规范的应用提供了部署、运行和卸载等一系列流程的生命周期管理。云计算平台层是对传统应用平台在理论与实践上的一次升级,这种升级给应用的开发、运行和运营各个方面都带来了变革。平台层需要具备一系列特定的基本功能,才能满足这些变革的需求。
1)开发测试环境
平台层对于在其上运行的应用来说,首先扮演的是开发平台的角色。一个开发平台需要清晰地定义应用模型,具备一套应用编程接口(API)代码库,提供必要的开发测试环境。
一个完备的应用模型包括开发应用的编程语言、应用的元数据模型以及应用的打包发布格式。一般情况下,平台基于对传统应用平台的扩展而构建,因此应用可以使用流行的编程语言进行开发,如Google App Engine目前支持Python和Java这两种编程语言。即使平台层具有特殊的实现架构,开发语言也应该在语法上与现有编程语言尽量相似,从而缩短开发人员的学习时间,如Salesforce.com使用的是自有编程语言Apex,该语言在语法和符号表示上与Java类似。元数据在应用与平台层之间起着重要的接口作用,比如平台层在部署应用的时候需要根据应用的元数据对其进行配置,在应用运行时也会根据元数据中的记录为应用绑定平台层服务。应用的打包格式需要指定应用的源代码、可执行文件和其他不同格式的资源文件应该以何种方式进行组织,以及这些组织好的文件如何整合成一个文件包,从而以统一的方式发布到平台层。
平台层所提供的代码库及其API对于应用的开发至关重要。代码库是平台层为在其上开发应用而提供的统一服务,如界面绘制、消息机制等。定义清晰、功能丰富的代码库能够有效地减少重复工作,缩短开发周期。传统的应用平台通常提供自有的代码库,使用了这些代码库的应用只能在此唯一的平台上运行。在云计算平台中,某一云计算提供商的平台层代码库可以包含由其他云计算提供商开发的第三方服务,这样的组合模式对用户的应用开发过程是透明的,如图2-3所示。假设某云平台提供了自有服务A与B,同时该平台也整合了来自第三方的服务D。那么,用户看到的是该云平台提供的A、B和D三种服务程序接口,可以无差异地使用它们。可见,平台层作为一个开发平台应具有更好的开放性,为开发者提供更丰富的代码库和API。
图2-3 应用平台及其代码库
平台层需要为用户提供应用的开发和测试环境,通常,这样的环境有两种实现方式:
①通过网络向软件开发者提供在线的应用开发和测试环境,即一切的开发测试任务都在服务器端完成。这样做的好处是开发人员不需要安装和配置开发软件,但需要平台层提供良好的开发体验,而且要求开发人员所在的网络稳定且有足够的带宽。
②提供离线的集成开发环境,为开发人员提供与真实运行环境非常类似的本地测试环境,支持开发人员在本地进行开发与测试。这种离线开发的模式更符合大多数开发人员的经验,也更容易获得良好的开发体验。在开发测试结束以后,开发人员需要将应用上传到云中,让它运行在平台层上。
2)运行环境
完成开发测试工作以后,开发人员需要做的就是对应用进行部署上线。应用上线首先要将打包好的应用上传到远程的云平台上。然后,云平台通过解析元数据信息对应用进行配置,使应用能够正常访问其所依赖的平台服务。平台层的不同用户之间是完全独立的,不同的开发人员在创建应用的时候不可能对彼此应用的配置及其如何使用平台层进行提前约定,配置冲突可能导致应用不能正常运行。因此,在配置过程中需要加入必要的验证步骤,以避免冲突的发生。配置完成之后,将应用激活即可使其进入运行状态。
以上云应用的部署激活是平台层的基本功能。此外,该层还需要具备更多的高级功能来充分利用基础设施层提供的资源,通过网络交付给客户高性能、安全可靠的应用。为此,平台层与传统的应用运行环境相比,必须具备三个重要的特性:隔离性、可伸缩性和资源的可复用性。(www.xing528.com)
①隔离性具有两个方面的含义,即应用间隔离和用户间隔离。应用间隔离是指不同应用之间在运行时不会相互干扰,包括对业务和数据的处理等各个方面。应用间隔离保证应用都运行在一个隔离的工作区内,平台层需要提供安全的管理机制对隔离的工作区进行访问控制。用户间隔离是指同一解决方案中不同用户之间的相互隔离,比如对不同用户的业务数据相互隔离,或者每个用户都可以对解决方案进行自定义配置而不影响其他用户的配置。
②可伸缩性是指平台层分配给应用的处理、存储和带宽能够根据工作负载或业务规模的变化而变化,即工作负载或业务规模增大时,平台层分配给应用的处理能力能够加强;当工作负载或者业务规模下降时,平台层分配给应用的处理能力可以相应减弱。比如,当应用需要处理和保存的数据量不断增大时,平台层能够按需增强数据库的存储能力,从而满足应用对数据存储的需求。可伸缩性对于保障应用性能、避免资源浪费都是十分重要的。
③资源的可复用性是指平台层能够容纳数量众多的不同应用的通用平台,满足应用的扩展性。当用户应用业务量提高、需要更多的资源时,可以向平台层提出请求,让平台层为其分配更多的资源。当然,这并不是说平台层所拥有的资源是无限的,而是通过统计复用的办法使得资源足够充裕,能够保证应用在不同负载下可靠运行,用户可以随时按需索取。这就需要平台层所能使用的资源数量本身是充足的,并要求平台层能够高效利用各种资源,对不同应用所占有的资源根据其工作负载变化来进行实时动态的调整。
3)运维环境
随着业务和客户需求的变化,开发人员往往需要改变现有系统从而产生新的应用版本。云计算环境简化了开发人员对应用的升级任务,因为平台层提供了升级流程自动化向导。为了提供这一功能,云平台要定义出应用的升级补丁模型及一套内部的应用自动化升级流程。当应用需要更新时,开发人员需要按照平台层定义的升级补丁模型制作应用升级补丁,使用平台层提供的应用升级脚本上传升级补丁、提交升级请求。平台层在接收到升级请求后,解析升级补丁并执行自动化的升级过程。应用的升级过程需要考虑两个重要问题:
①升级操作的类型对应用可用性的影响,即在升级过程中客户是否还可以使用老版本的应用处理业务;
②升级失败时如何恢复,即如何回应升级操作对现有版本应用的影响。
在应用运行过程中,平台层需要对应用进行监控。一方面,用户通常需要实时了解应用的运行状态,比如应用当前的工作负载及是否发生了错误或出现异常状况等。另一方面,平台层需要监控解决方案在某段时间内所消耗的系统资源,不同目的的监控所依赖的技术是不同的。对于应用运行状态的监控,平台层可以直接检测到响应时间、吞吐量和工作负载等实时信息,从而判断应用的运行状态。比如,可以通过网络监控来跟踪不同时间段内应用所处理的请求量,并由此来绘制工作负载变化曲线,根据相应的请求响应时间来评估应用的性能。
对于资源消耗的监控,可以通过调用基础设施层服务来查询应用的资源消耗状态,这是因为平台层为应用分配的资源都是通过基础设施层获得的。比如通过使用基础设施层服务为某应用进行初次存储分配。在运行时,该应用同样通过调用基础设施层服务来存储数据。这样,基础设施层记录了所有与该应用存储相关的细节,以供平台层查询。
用户所需的应用不可能是一成不变的,市场会随着时间推移不断改变,总会有一些新的应用出现,也会有老的应用被淘汰。因此,平台层需要提供卸载功能帮助用户淘汰过时的应用。平台层除了需要在卸载过程中删除应用程序,还需要合理地处理该应用所产生的业务数据。通常,平台层可以按照用户的需求选择不同的处理策略,如直接删除或备份后删除等。平台层需要明确应用卸载操作对用户业务和数据的影响,在必要的情况下与用户签署书面协议,对卸载操作的功能范围和工作方式作出清楚说明,避免造成业务上的损失和不必要的纠纷。
平台层运维环境应该具备统计计费功能。这个计费功能包括两方面:①根据应用的资源使用情况,对使用了云平台资源的ISV计费,这一点前面在基础设施层的资源监控功能中有所提及;②根据应用的访问情况,帮助ISV对最终用户进行计费。通常,平台层会提供诸如用户注册登录、ID管理等平台层服务,通过整合这些服务,ISV可以便捷地获取最终用户对应用的使用情况,并在这些信息的基础上加入自己的业务逻辑,对最终用户进行细粒度的计费管理。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。