2.3 平台即服务

平台即服务(PaaS)是一种提供运算平台与解决方案的云计算服务。PaaS比IaaS要高一层,是把多个基础设施组织在一起,为用户提供常用的系统架构组成部分,如托管的数据库管理系统、信息总线、容器管理、网站环境等。用户不需要管理与控制云端基础设施(包含网络、服务器、操作系统或存储的运行、备份、升级等操作),只需要设置这些服务并在其上部署应用程序和数据。

PaaS都是多用户共享的,所以用户只能根据服务商提供的选项来设置服务的运行方式,而不能根据自己的需要来修改服务的功能。

2.3.1 PaaS的基本功能

PaaS也是基于服务器、存储空间和网络等基础结构,但它侧重于为客户事先把这些基础结构组织好,还可能加上中间件、开发工具、商业智能服务和数据库管理系统等,来支持客户常见应用程序的生成、测试、部署、管理和更新。

PaaS让用户无需购买和管理软件许可,也无需管理底层基础结构,从而避免了应用开发的复杂性。用户可以专注管理自己开发的应用程序和服务,剩余事项则由云服务商负责。

PaaS服务有以下几类:

(1)由云平台来托管的基础服务

系统架构中一些常用的部件,比如数据库、消息总线、服务总线、工作流、容器平台等,可以用传统的方式由用户来运行虚拟机、安装相应的软件,并负责软件的运营与维护。PaaS服务可以让用户不再花精力来管理这些基础设施以及它们之间的协作,而是专注于开发自己的应用。

(2)支持特定模板的开发及运行环境

对于使用广泛的开发框架,PaaS提供了一个托管的平台,开发人员可以在其基础上开发或自定义所需要的应用程序。云平台提供了可扩展性和高可用性,从而减少了用户在底层维护方面所需要的花费,既缩短了开发周期,又提高了系统的性能。

(3)常用的商业功能模块

数据分析和商业智能可以用PaaS的形式提供在云平台上,由用户来调用,来分析和挖掘其数据、发现商业趋势、预测结果,从而促进产品设计决策、投资方向及其他业务决策。现在常用的机器学习、聊天机器人等功能也已经以PaaS的方式出现在一些云平台上。

2.3.2 PaaS的优势

PaaS通过把基础结构打包成为集成的开发或商业模块,具有诸多优点:

1)缩短应用开发周期。PaaS服务可以通过内置于平台中的预设应用程序组件(如工作流、数据库、数据分析、搜索等),大幅度地削减研发新应用所需要的时间。

2)无需增员便可提高开发能力。PaaS组件可以拓展开发团队的能力,让企业无需增加具有底层平台技能的员工。

3)更敏捷地面向多种平台进行开发。某些云服务商提供了面向多种平台(例如计算机、手机和浏览器)的开发选项,让企业能够更快速、更轻松地开发跨平台应用。

4)侧重对先进工具的使用,而不必在工具的采购方面花精力。即用即付模式让用户能够使用他们没有时间和精力去评估和购买的先进开发软件和商业工具。

5)提高应用程序的质量。云平台投入了大量的资源来开发和维护这些PaaS服务,使它们具有很高的可靠性和可用性,从而使利用这些服务所开发的应用能够建立在一个安全可靠的平台基础之上来运行,也就自然而然地提高了整个应用程序的质量。

2.3.3 主要的PaaS产品

1.Web运行环境PaaS服务

比较早的PaaS服务是亚马逊云的弹性豆茎(Elastic Beanstalk),这是专门为Web应用开发和运行所提供的平台,支持多种Web应用开放语言和框架,包括Java、.NET、PHP、Node.js、Python、Ruby、Go以及Apache、Nginx、Passenger和IIS等Web应用服务器。用户只需要上载所开发的应用代码,弹性豆茎服务将负责程序的部署,包括容量规划、负载均衡、自动扩展、一起运行的监控。而用户也可以在任何时候直接来管辖支持他们应用程序的基础结构。

作为谷歌最早推出的云服务,应用引擎(App Engine)也是一个旨在支持Web应用的PaaS。它支持Go、PHP、Java、Python、Node.js、.NET和Ruby应用开发语言以及相应的框架。应用引擎服务在应用的使用量达到一定程度之前是免费的。

与上述两个服务类似的还有微软的Azure应用服务(App Service)和Heroku的运行环境(Runtime)等。

2.容器环境PaaS服务

微软的Azure Kubernetes Service(AKS)是托管的容器管理环境。它实现了开源的Ku-bernetes所定义的容器管理功能,并且把容器都部署在用户的虚拟网络里,实现客户应用与外界的隔离。该服务根据用户的要求来自动增加或减少容器的数量,既保证应用的响应事件,又使得用户的花费可以降到最低。AKS与微软的应用开发工具Visual Studio结合,使软件工程师可以直接在开发工具里部署、调试、管理面向AKS的应用,从而大大提高了工作效率。

与微软的AKS类似,亚马逊的Fargate服务和谷歌云的Kubernetes Engine(GKE)也都是托管的容器管理环境。

3.数据库PaaS服务

全托管的数据库管理系统也是对企业非常有吸引力的一项服务。亚马逊云服务很早就推出了Rational Databases(RDS)服务以及针对NoSQL数据库的DynamoDB平台。之后亚马逊又推出了与开源数据库兼容而与商业数据库性能相当的Aurora服务。

微软云平台提供Azure SQL这一PaaS平台,既支持商用的Microsoft SQL Server,也支持开源的MySQL和PostgreSQL。在NoSQL方面,微软提供了CosmosDB这个PaaS平台。