2.2 PaaS
什么是PaaS(Platform as a Service,平台即服务)?NIST(美国国家标准与技术研究院)对PaaS的定义如下:
向用户提供将应用程序部署在云计算基础设施上的能力,这些应用程序使用提供商支持的编程语言、库、服务和工具。用户并不管理或控制底层云计算基础设施,包括网络、服务器、操作系统、存储,但对部署的应用程序有控制权,还可以配置应用程序的环境。
PaaS是构建在IaaS之上的一种平台服务,是对软件的一个更高的抽象层次,触达应用程序的运行环境本身。如图2-10所示,相比IaaS而言,开发者无须接触运行时、中间件和底层操作系统,只需要关注应用程序部署和数据本身即可,对于想快速将应用程序部署到生产环境中,而不必关心底层硬件的用户或开发者来说,是特别有用的。
图2-10 IaaS vs PaaS
最早的一代PaaS是Heroku,Heroku是商业PaaS,还有一个开源的PaaS——Cloud Foundry,用户可以基于它来构建私有PaaS。如果同时使用公有云和私有云,并且能在两者之间构建一个统一的PaaS,那就是“混合云”了。
PaaS平台提供了定制化软件研发和部署的中间件平台,也称为“中间件即服务”。在这个平台上包括软件的设计、程序的开发、应用的部署、测试等,它们都是以服务的形式提供给用户的。与IaaS类似,用户不必考虑硬件层面和系统层面,只需要租用PaaS平台即可,较之传统模式,它的成本支出要节省很多。
中间件的种类非常丰富,可以是数据库,也可以是完整的应用程序服务器,还可以是Business Process Management、消息中间件等,它们有的属于应用部署和运行平台APaaS(Application Platform as a Service),有的属于集成平台IPaaS(Integration as a Service)。
PaaS平台也拥有云计算的特征,符合弹性的动态伸缩机制,用户可以根据企业的信息需求增加或减少系统模块、计算能力等资源。与IaaS一样,PaaS也采用多租户(Multi-tenancy)原则,同一个系统或者数据库可以被多个用户租用,平台在每个用户之间逻辑隔离,数据不会相互影响和干扰。
在众多PaaS平台服务商中,有的提供PHP开发环境,有的提供Java开发环境,有的则是面向C#、数据库等基础组件支持MySQL、Oracle、Redis、MongoDB等,应用PaaS需要在编程语言、基础组件等方面进行全面考虑,同时还要考虑平台的无缝迁移、负载均衡等能力。
PaaS平台模块如图2-11所示。
图2-11 PaaS平台模块
由于Kubernetes(简称K8s)的成熟程度以及无可比拟的优势,PaaS层的基础架构基本上都采用Kubernetes。
PaaS平台受众如图2-12所示。
图2-12 PaaS平台受众