无论SaaS、IaaS还是PaaS,云计算所有层次的中心概念之一是多用户租用。如果在一个部署中没有共享资源,就很难把这个部署合理地称作“云”。
甚至美国国家标准与技术局(NIST)在云计算的正式定义中也或多或少地提出了多租户的正式定义。NIST在云计算定义中的一部分指出,重要特点:资源汇合。提供商的计算资源将汇合起来使用一种多租户模式为多个消费者服务。不同的物理和虚拟资源将根据消费者的需求动态地分配或者重新分配。
在大多数SaaS产品中,多用户租用是多种多样的 -- 服务器、应用程序代码、数据库、甚至单个平板电脑。或者这个数据库中的网页可以在不同的客户和这个系统的不同用户之间共享。
在IaaS中,多租户是通过虚拟化技术实施的:一个管理程序分配和管理在一个特定的物理计算资源上的许多完整的虚拟机。
但是,PaaS怎么样呢?
在PaaS中对于多租户有两个主要方法:一个方法是依赖IaaS多租户,业界人士把它叫作服务器PaaS。另一种方法更像是SaaS,业界人士称之为资源PaaS。
服务器PaaS实际上是一种自动化的部署和管理系统。虽然有管理的服务提供商,他们能够人工建立你的应用程序部署和在云服务器上部署环境并且甚至能够实现部分自动化,但是,它不是PaaS。它只是管理的服务。
相比之下,如果开发者能够通过一个可提供高水平操作的用户接口直接管理这个环境(即使这个用户接口在命令行中),那么,这实际上是一个服务。服务器PaaS的例子包括RightScale、Standing Cloud和EngineYard。
资源PaaS为一个应用提供一个抽象的“容器”,允许它与其它这种应用以精细的方式共享计算资源。它消除了“服务器”的概念以支持功能的资源。这个应用容器类似于传统应用部署的程度取决于特定的服务,但是,肯定没有“根访问”。资源PaaS的例子包括orce.com、Google AppEngine和Heroku。
资源PaaS有许多好处。首先,应用程序升级是精细和迅速的。随着这个应用程序收到更多的请求或者开始做更多的工作,需要的资源将立即提供(当然是在限度之内)。成本计算也是精细的,因此,你仅为你使用的计算资源付费。另一个好处与SaaS的好处相似:开发者不必考虑或者管理服务器(包括出故障的服务器)或者备份、设置、配置等等。
但是,这种精细程度和抽象是有代价的。这个代价就是失去控制。与其他用户共享的任何事情也不能由每个用户任意设置。如果有一个设置细节能够被单个用户修改,那么,专门为那个用户运行的软件和系统必须隔离开。再说一次,在这个连续统一体中,每一个服务都有自己的位置。例如,谷歌AppEngine使用由每一个人共享的BigTable数据库,而Heroku允许每一个用户建立一个单独的NoSQL数据库或者关系数据库。