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