2.2.2 平台即服务
PaaS是为用户提供应用软件的开发、测试、部署和运行环境的服务。所谓环境,是指支撑使用特定开发工具开发的、应用能够在其上有效运行的软件支撑系统平台。支撑该服务的技术体系主要是分布式系统。
1.PaaS基本架构
PaaS把软件开发环境当作服务提供给用户,用户可以通过网络将自己创建的或者从别处获取的应用软件部署到服务提供商提供的环境上运行。
架构由分布式平台和运营管理系统构成,如图2-5所示。
图2-5 PaaS基本架构
PaaS平台构建在物理服务器集群或虚拟服务器集群上,通过分布式技术解决集群系统的协同工作问题。从图中可知,PaaS分布式平台由分布式文件系统、分布式计算、分布式数据库和分布式同步机制4部分组成。分布式文件系统和分布式数据库共同完成PaaS平台结构化和非结构化数据的存取,分布式计算定义了PaaS平台的数据处理模型,分布式同步机制主要用于解决并发访问控制问题。
为了使用PaaS提供的环境,用户部署的应用软件需要使用该环境提供的接口进行编程。运营管理系统针对PaaS服务特性,解决用户接口和平台运营相关问题。在用户接口方面,需要提供代码库、编程模型、编程接口、开发环境等在内的工具。PaaS运营平台除完成计费、认证等运营管理系统基本功能外,还需要解决用户应用程序运营过程中所需要的存储、计算、网络基础资源的供给和管理问题,需要根据应用程序实际的运行情况动态地增加或减少运行实例。同时,该系统还需要保证应用程序的可靠运行。
2.PaaS关键技术——分布式技术
大多数PaaS服务提供商都将分布式系统作为其开放平台的基础构架,并将分布式基础平台能力直接集成到运行环境中,使利用PaaS服务运行的应用在数据存储和处理方面具有很强大的可扩展能力。分布式技术主要包括分布式文件系统、分布式数据库、并行计算模型和分布式同步等。
分布式文件系统的目的是在分布式系统中以文件的方式实现数据的共享。分布式文件系统实现了对底层存储资源的管理,屏蔽了存储过程的细节,实现了位置透明和性能透明,使用户无须关心文件在云中的存储位置。与传统的分布式文件系统相比,云计算分布式文件系统具有更为海量的存储能力、更强的系统可扩展性和可靠性,也更为经济。
分布式文件系统偏向于对非结构化的文件进行存储和管理,分布式数据库利用分布式系统对结构化/半结构化数据实现存储和管理,是分布式系统的有益补充,它能够便捷地实现对数据的随机访问和快速查询。
分布式计算研究如何把一个非常巨大的计算能力才能解决的问题分成许多小的部分,并由许多相互独立的计算机进行协同处理,以得到最终结果。如何将一个大的应用程序分解为若干可以并行处理的子程序,有两种可能的处理方法,一种是分割计算,即把应用程序的功能分割成若干个模块,由网络上的多台机器协调完成;另一种是分割数据,即把数据分割成小块,由网络上的计算机分别计算。对于海量数据分析等数据密集型问题,通常采取分割数据的分布式计算方法,对于大规模分布式系统可能同时采取这两种方法。
分布式计算的目的是充分利用分布式系统进行高效的并行计算。之前的分布式并行计算普遍采用将数据移动到计算结点进行处理的方法,但在云计算中,计算资源和存储资源分布的更为广泛并通过网络互连互通,海量数据的移动将导致巨大的性能损失。因此,在云计算系统中,分布式计算通常采用把计算移动到存储结点的方式完成数据处理任务,具有更高的性能。
分布式协同管理的目的是确保系统的一致性,防止云计算系统网络中的数据操作的不一致性,从而严重影响系统的正常运行。
3.代表性产品
和SaaS产品相比,PaaS产品主要以少而精为主,其中相关代表产品主要有Force.com、Google App Engine、Windows Azure Platform和Heroku。
①Force.com。Force.com是业界第一个PaaS平台,基于多租户的架构,其主要通过提供完善的开发环境等功能来帮助企业和第三方供应商交付健壮的、可靠的和可伸缩的在线应用。Force.com是一组集成的工具和应用程序服务,ISV和公司IT部门可以使用它构建任何业务应用程序并在提供Salesforce CRM应用程序的相同基础结构上运行该业务应用程序。
②Google App Engine。Google App Engine是一种使用户可以在Google的基础架构上运行自己的网络应用程序。该应用程序还提供一整套开发工具和SDK(软件开发工具包)来加速应用的开发,并提供大量免费额度来节省用户的开支。Google App Engine易于构建和维护,并可根据用户的访问量和数据存储需要的增长轻松扩展。
③Windows Azure Platform。它是微软推出的PaaS产品,运行在微软数据中心的服务器和网络基础设施上,通过公共互联网来对外提供服务。它由具有高扩展性的云操作系统、数据存储网络和相关服务组成,而且服务都是通过物理或虚拟的Windows Server 2008实例提供的。另外,它附带的Windows Azure SDK软件开发包提供了一整套开发、部署和管理Windows Azure云服务所需要的工具和API。
④Heroku。它是一个用于部署Ruby On Rails应用的PaaS平台,并且其底层基于Amazon EC2的IaaS服务,支持多种编程语言,而且在Ruby程序员中有非常好的口碑。
4.优势
和现有的基于本地的开发和部署环境相比,PaaS平台主要有如下方面的优势:
①友好的开发环境。通过提供SDK和IDE(Integrated Development Environment,集成开发环境)等工具来让用户不仅能在本地方便地进行应用的开发和测试,而且能进行远程部署。
②丰富的服务。PaaS平台会以API的形式将各种各样的服务提供给上层的应用。
③精细的管理和监控。PaaS能够提供应用层的管理和监控,能够观察应用运行的情况和具体数值来更好地衡量应用的运行状态,还能通过精确计量应用所消耗的资源来更好地计费。
④多租户(Multi-Tenant)机制。许多PaaS平台都自带多租户机制,不仅能更经济地支撑庞大的用户规模,而且能提供一定的可定制性以满足用户的特殊需求。
⑤伸缩性强。PaaS平台会自动调整资源来帮助运行于其上的应用更好地应对突发流量。
⑥整合率高。PaaS平台的整合率非常高,比如Google App Engine能在一台服务器上承载成千上万个应用。
5.PaaS与IaaS的比较
IaaS提供的只是“硬件”,保证同一基础设施上的大量用户拥有自己的“硬件”资源,实现硬件的可扩展性和可隔离性。PaaS在同一基础设施上同时为大量用户提供其专属的应用运行平台,实现多应用的可扩展性和隔离运行,使用户的应用不受影响,具有很好的性能和安全性。
PaaS消除了用户自行搭建软件开发平台和运行环境所需要的成本和开销,但应用软件的实现功能和性能会受到服务提供商提供的环境的约束,特别是当前各个服务提供商提供的应用接口尚不统一,彼此之间有差异性,影响了应用软件的跨平台的可移植性。