平台即服务是软件开发的推动者,第三方服务提供商向客户提供一个平台,这样他们就可以开发、运行和管理软件应用程序,而无需自己构建和维护底层基础设施。
大多数平台即服务都包含模板或构建包,这些模板或构建包提供了关于应如何构建特定类型应用程序的意见,通常是围绕流行的12因素方法。这就是为什么PaaS选项通常被标记为墨守成规,并且最适合新的、新领域的应用。
云计算的出现为亚马逊网络服务、Microsoft和谷歌等公司打开了一扇大门,将应用程序启动所需的关键构建块整合到一个墨守成规的平台上,目的是将部署代码所需的许多更复杂和重复的任务简化为一个命令或单击鼠标。
这种简化使得软件开发更快更容易,并且通过隐藏运行应用程序所需的底层计算、存储、数据库、操作系统和网络资源,减少了开发人员的工作范围。PaaS提供商对这些资源的使用收费,有时还对平台本身的使用收费,可以按用户(或座位)收费,也可以按托管的应用程序数量进行收费。
与基础设施即服务和软件即服务等其他云服务一样,PaaS通常通过Internet访问,但也可以在本地部署或以混合模式部署。不管怎样,应用程序运行的基础结构都是由服务提供商管理的。在许多
情况下,客户可以决定其的应用程序的物理托管位置,并可以选择该环境的性能或安全性,通常需要付出额外的成本。
典型PaaS的构建块包括:
•托管基础设施:提供商管理运行应用程序所需的服务器、存储、数据中心和网络资源。
•设计、测试和开发工具:集成开发环境将实际构建软件所需的工具集中在一起,包括源代码编辑器、编译器和调试器。一些供应商还提供了协作工具,让开发人员可以共享和促进彼此的工作。
•中间件:PaaS通常包括集成各种操作系统和用户应用程序所需的工具。
•操作系统和数据库:PaaS为应用程序提供运行的操作系统和用户应用程序所需的工具。
PaaS与IaaS
对于许多人来说,PaaS与IaaS的争论已经被市场解决,但是在使用底层构建块本身和使用固执的PaaS之间的决定仍然是当今是许多人今天在追求加速应用程序推向市场的过程中要做的决定。
使用PaaS的最大优势之一是能够快速创建和部署应用程序,而无需设置和维护它们将在其中运行的环境所需的繁重工作。从理论上讲,这使开发人员能够更快、更定期地进行部署,并将重点放在差异化因素上,而不是解决基础设施供应等问题。
因为PaaS是由服务提供商维护的,并且有服务级别协议和其他保证,所以开发人员不必担心诸如修补和升级之类的繁琐和重复的任务,他们可以确信他们的环境将是高可用和稳定的,尽管中断仍然会发生。PaaS还可以成为新的云原生开发技术和编程语言的便捷门户,而无需构建新环境的前期投资。
大多数与使用PaaS相关的风险归结为失去控制,专业开发人员必须考虑将他们的应用程序移交给第三方提供商。这些风险包括信息安全和数据驻留问题、供应商锁定恐惧和计划外中断。
有了PaaS,开发人员改变开发环境的范围有限,这可能导致一些团队成员感到束手无策。无法对环境进行更改或无法获得服务提供商部署的功能请求,可能会导致公司的PaaS增长过快,并构建自己的内部开发者平台。
领先的PaaS提供商包括AWS、Google Cloud、Microsoft Azure、Red Hat和Salesforce的Heroku。
在过去十年中,AWS、Microsoft Azure和谷歌云这三大云服务提供商都进行了大量投资,以简化其服务的采用,将自己的云组件整合到一个墨守成规的PaaS中,以便于采用。
目前市场上仍然存在的一些主要的PaaS选项包括以下内容。
AWS Elastic Beanstalk
作为首批PaaS选项之一,AWS Elastic Beanstalk能够快速部署和管理云应用程序,而无需了解底层基础设施。Elastic Beanstalk自动处理容量调配、负载平衡、扩展和应用程序运行状况监控的详细信息。
Cloud Foundry
Cloud Foundry是一个由Cloud Foundry foundation管理的开放源码PaaS。它最初由VMware开发,然后转移到由EMC、VMware和General Electric合资的Pivotal Software,然后在2015年转移到CFF。与OpenShift一样,Cloud Foundry设计用于构建和运行基于容器的应用程序,使用Kubernetes进行编排。
谷歌应用引擎
Google app engine是一种PaaS产品,用于在Google管理的数据中心开发和托管Web应用程序。应用程序在多个服务器上自动进行沙盒、运行和缩放。
Microsoft Azure应用服务
Microsoft Azure应用服务是一个完全托管的PaaS,它将各种Azure服务组合到一个平台中。
Red Hat OpenShift
Red Hat OpenShift是一个PaaS产品系列,可以云托管或在本地部署,用于构建和部署容器化应用程序。旗舰产品是OpenShift容器平台,这是一个本地PaaS,围绕Docker容器构建,由Kubernetes在红帽企业linux的基础上进行编排和管理。
Salesforce Heroku
Heroku是早期且广受欢迎的PaaS,自2010年被SaaS巨头Salesforce收购以来,它可能已经迷失了方向。今天,Heroku是更广泛的Salesforce开发工具平台的一部分,支持多种语言和数千名开发人员在其上运行应用程序。实际上,使用Heroku需要构建部署在虚拟化linux容器(或dynos,如Heroku所称)中的公共运行时,该容器分布在AWS服务器的dyno网格中。
PaaS的演变
平台即服务已经成熟为一个重要的云服务类别,但它越来越有可能被容器(以及主要供应商开发的托管容器即服务、无服务器计算和功能即服务选项所取代,它提供了许多与PaaS相同的优势,但也保证了更大的可移植性、灵活性,并且在无服务器计算的情况下,提供了一个真正只为所用付费的环境。
正如Ben Kepes在2017年为Computerworld撰写的文章中所述那样,PaaS已经广泛地被容器管理和自动化的理念所包含,像Red Hat、VMware和三大云服务提供商这样的主要供应商,近年来正朝着简化容器采用和自动化的方向发展。
这并不意味着PaaS必然消亡,但PaaS已经随着行业广泛转向Kubernetes协调的容器化应用程序而发展。简化软件开发总是有市场的,但是这样做的底层平台随着时代的变化而变化。