2.4 PaaS
2.4.1 以应用为中心
IaaS模式的云平台一经推出很快获得了成功,它将用户从基础架构的管理中释放了出来。但是基础架构只是手段,用户最关心的还是业务,而业务在IT中的载体是应用。因此,业界有人认为,云平台可以更进一步,直接提供以应用为中心的平台服务。用户可以在这个平台上发布源代码或者二进制,由平台自动构建、部署,同时提供运行时环境、负载均衡、高可用等服务。于是,平台即服务(Platform as a Service, PaaS)开始流行起来。
从技术标准上而言,早期的PaaS可以说是百家争鸣,每一个厂商都有自己的一套技术堆栈,如公有云的服务比较成功的有Heroku、Google Application Engine和Salesforce等,私有云的PaaS解决方案有CloudFoundry和OpenShift等。随着容器技术的流行,目前PaaS平台开始支持容器作为应用的交付件,这使得应用在各个PaaS之间有更好的可移植性。
2.4.2 Serverless与PaaS
与Serverless类似,PaaS用户可以将大部分精力放在应用的开发上,PaaS平台负责提供应用运行所需要的底层资源。有人甚至认为,如果一个PaaS实现了应用实例的自动化弹性扩展,而且应用的启动速度足够快,执行时间足够短,那么基本上这个PaaS平台也可以被看作Serverless平台。
纵观目前一些主流的PaaS平台和Serverless平台,这两种平台之间的主要差异在于:
❑ 管理的颗粒度不同。PaaS对应用颗粒度的管理以应用为单位,而Serverless的管理颗粒度则细致到每个应用的函数。因此目标运行平台选择PaaS平台还是Serverless平台,将会极大地影响应用的架构设计。
❑ 应用部署模式不同。在PaaS平台上,应用是持续地被部署在主机、虚拟主机中(包括容器,容器可以被看作轻量化的虚拟机)。而Serverless平台的应用是按需部署,这是Serverless的按用量付费(Pay-As-You-Use)模型的基础。
❑ 作业类型不同。PaaS平台上支持的应用类型跨度比较大,包含长时间运行的应用(如各类Web应用和业务系统)和定时执行的短期任务(如数据分析抽取任务)。而Serverless更偏向于执行时间跨度比较短的任务。
❑ 对于实例的态度不同。在许多PaaS平台上,还是存在应用实例数这一概念的,用户需要设置每一个实例的CPU和内存的使用大小以及需要的实例数。而Serverless将实例数的概念移除了。
前面我们讨论过,容器可以是Serverless平台实现的一个技术基础。当前许多PaaS平台也开始支持容器,或是以容器作为技术架构的基础,如Red Hat的OpenShift就是一个以Docker和Kubernetes为基础的开源容器PaaS。基于这种容器PaaS平台,结合FaaS和BaaS框架的支持,用户可以实现私有的Serverless平台。
OpenShift是基于Kubernetes的一个开源容器PaaS平台,如果希望了解更多关于开源容器平台OpenShift的信息,可以参考机械工业出版社出版的《开源容器云OpenShift》一书,或访问Red Hat OpenShift的主页https://www.openshift.com,以及OpenShift的开源项目主页https://www.openshift.org。