对于一个应用的需求,一般分为两个方面∶一方面是与业务相关的功能性需求;另一方面就是诸如安全性、可靠性及服务质量等非功能性的需求。应用的开发阶段主要考虑功能性要求,而运行阶段主要关注非功能要求。不同的应用在非功能性要求方面具有一定的相似性,为了支持这些非功能性要求,人们通常总结出一定的功能模块和模式。
这些模块和模式是PaaS层支持应用运行的基本方式。PaaS 层的一个重要目标就是把业界在过去多年来在分布式应用中获得的经验总结起来作为服务提供给用户,使用户能够将更多的精力放到与业务相关的功能性需求上去。
在PaaS层,为了实现简化应用开发和部署的目的,应用一般被定义为功能性模块和一系列策略的组合。在进行应用开发的时候,开发人员只需考虑业务功能的实现;而非功能性要求通过选择所提供的策略配置来表达。PaaS 层在应用具体部署时根据这些策略选择自动提供相应的资源、服务功能及其配置。
我们可以通过一个关于数据高可用性的例子来看平台层给用户所带来的便利,如图1所示。假设用户A和用户B都需要CRM的应用,用户A 需要很高的数据可用性,而用户B则不太关心这个问题。开发人员只需要进行一次开发就能满足这两个企业的功能性需求,而应用管理人员则只需要在部署的时候根据业务的需求选择配置策略,云平台会自动为它们产生不同的部署和配置。比如用户A的高可用性需求通过主从方式的商业数据库来满足,而用户B的数据可用性配置为开源数据库的定期备份。
图1PaaS平台实现的非功能性需求
一般来说,传统的中间件已经有功能性和非功能性要求满足的分离。在PaaS层,这种分离变得更为彻底,还有就是更为智能化。应用管理无须考虑应用的资源容量需求而仅需配置所需的服务性能策略;应用所需要的资源是由PaaS层自动按需供给的,而无须预先准备好。
总之,PaaS层在传统的功能性和非功能性分离的基础上,把非功能性的需求实现以服务的方式提交给应用开发者使用,并且通过利用laaS层的功能可以实现应用资源自动按需供给。所以,PaaS层使得应用的开发更加简单,应用的运行更为自动化。