对更快、更灵活的软件开发的需求不断增加,这使得组织不断寻找新技术和平台来满足需求。
平台即服务 (PaaS) 等解决方案通过在云中提供完整的软件开发和部署平台并减少整体管理而广受欢迎。无服务器架构是在当今另一种迅速流行的技术。
本文将深入探讨 PaaS 和无服务器。我们将讨论这两种技术,它们如何相互关联,以及如何在现代开发过程中利用这两种技术。
平台即服务 (PaaS) 概述
平台即服务 (PaaS) 与云平台提供的服务相关,该云平台提供计算和软件资源,且基础设施管理要求极低或无。PaaS 是基础设施即服务 (IaaS) 的自然演变。
借助 IaaS,用户可以*地启动任意数量的资源,例如虚拟服务器、存储和网络基础设施。但是,他们还负责管理底层操作系统、软件配置等。
另一方面,在 PaaS 产品中,云服务提供商管理操作系统、底层服务器、网络基础设施和大多数软件配置,让用户可以*地快速开发和部署应用程序。
让我们考虑一个简单的 Web 应用程序部署。在那里,我们获得了一个带有 IaaS 产品的虚拟服务器,例如 AWS EC2。但是,在部署应用程序之前,我们需要先:
- 设置网络服务器。
- 安装依赖项以及其他必需的软件。
- 设置网络和存储。
但是,借助 AWS Elastic Beanstalk 等 PaaS 产品,AWS 将负责 EC2 实例、操作系统、Web 服务器安装和任何其他资源配置。用户只需使用必要的配置启动 beanstalk 环境:您需要做的就是提供适当的配置并部署应用程序。
除了核心服务器、存储和网络服务,PaaS 还提供中间件、BI 服务、数据库系统、开发工具。这减轻了管理软件许可证的需要,因为它们由云提供商处理。所有这些都以现收现付模式提供,有助于削减开支。
PaaS的优势
流行的PaaS产品
- AWS Elastic Beanstalk
- Azure App Service
- Azure Cognitive Search
- Google App Engine
- RedHat OpenShift
- IBM Cloud Pak for Applications
- BitNami by VMWare
无服务器概述
无服务器产品旨在消除软件开发和交付过程中的任何管理和配置要求。借助无服务器解决方案,用户可以编写单独的功能或服务,并将它们直接部署在无服务器平台中——无需任何基础设施或软件配置。
云提供商管理功能或服务的所有方面,例如扩展、可用性需求和管理带宽。无服务器基于使用的货币化模型,用户只需为服务的使用付费。
无服务器方法使开发人员能够更多地专注于创建功能,从而带来更简化的开发和部署体验。
无服务器产品为基于微服务的架构或事件驱动的架构提供了最佳解决方案。
例如,考虑将用于监视数据流的 Web 功能。在传统开发中,我们需要:
- 供应和配置资源。
- 设置网络服务器。
- 部署具有持续维护和成本的功能(即使该功能未使用)。
但是,对于像AWS Lambda这样的无服务器解决方案,用户只需要:
- 选择编程语言。
- 创建函数执行或触发事件的函数和频率。
然后,该函数将针对配置的参数自动执行。该功能将完全由云提供商管理,您只需按执行次数付费。
两种主要的无服务器产品是 FaaS 和 BaaS——让我们简要介绍一下。
功能即服务 (FaaS)
FaaS 是使用最广泛的无服务器解决方案。它允许用户在根据预定义事件执行的无状态容器中执行代码。这为开发人员提供了一个平台,可以轻松地将代码作为函数进行开发和部署,而无需担心任何基础架构配置。
后端即服务 (BaaS)
BaaS 模型让开发人员只管理前端,而将大部分后端功能外包给第三方服务。BaaS 提供以下服务:
- 验证
- 数据库管理
- 托管
- 通知
- 等等。
在 BaaS 中,API 或软件开发工具包 (SDK) 充当用户管理的前端和后端服务之间的桥梁。AWS Amplify、Azure 移动应用程序和后端是一些可用的 BaaS 产品。
无服务器的优势
- 消除任何基础架构配置或管理要求
- 由于专注于单个功能或服务,开发和部署更快、更简单
- 基于使用情况的支付模式节省了成本
- 高度可扩展
- 减少云提供商锁定
流行的无服务器产品
- AWS Lambda
- AWS Fargate
- Azure Functions
- Google Cloud Functions
- Apache OpenWhisk
- IBM Cloud Functions
- Fission.io serverless Kubernetes
PaaS 和无服务器之间的区别
在比较 PaaS 和无服务器时,直接竞争对手将是 FaaS 产品,因为两者都为开发人员提供了运行其应用程序或功能的平台。但是,如下所述,这两种技术之间存在一些显着的差异化因素。
可扩展性
无服务器应用程序或功能将根据需求自动扩展和缩减,无需任何配置要求或开发人员的干预。PaaS 解决方案也将提供可扩展性,但用户必须配置扩展参数——它不会根据需求自动扩展。
一般而言,无服务器应用程序的性质意味着它们可以比 PaaS 解决方案相对更快地扩展或缩减。
定价结构
无服务器基于使用的支付模型,用户只需为请求数量或执行时间付费。
相反,PaaS 解决方案通常基于现收现付模式,无论您使用多少或很少使用服务,都将收取固定费用。用户确实可以在 PaaS 解决方案中自定义资源需求和管理成本,但他们无法根据使用情况动态调整定价。
尽管如此,与传统部署相比,每项服务都可以节省成本。最终节省取决于用例。例如,高度活跃的无服务器功能可能会导致成本增加,您可以通过迁移到具有预定义资源分配且不收取使用费的 PaaS 解决方案来减轻成本。
控制
PaaS 提供对底层应用程序和基础架构配置的更精细控制,而无服务器则不提供此类控制。但是,这可能是有利的,也可能是不利的,具体取决于要求。
由于 PaaS 提供了更多控制,因此更容易测试和调试应用程序并理解应用程序逻辑(与无服务器相比)。此外,您可以使用它在应用程序和基础架构级别对应用程序进行微调。但要注意——这种控制会增加开发和部署过程的复杂性,这可以使用无服务器解决方案来缓解。
应用架构
无服务器应用程序启动和执行功能的速度相对较快。但是,无服务器功能的主要缺点是它们无法正确支持:
- 长时间运行的进程
- 有状态的应用程序
长时间运行的流程将导致成本限制,而用户将需要单独的机制来管理每次执行之间的状态。这就是无服务器更适合事件驱动架构或基于微服务的应用程序的原因。
供应商锁定
大多数使用 PaaS 服务的组织都被锁定在特定的 PaaS 服务中,迁移到不同服务提供商的选择有限或没有选择。例如,使用 AWS Elastic Beanstalk 部署的应用程序不能简单地迁移到 Azure 应用服务而不进行复杂的重组。
另一方面,您可以轻松地在不同服务提供商之间迁移无服务器功能。这是因为该功能与所需的依赖项捆绑在一起,并且不依赖于任何特定于供应商的技术。用户可以简单地:
- 在具有相同编程语言的不同提供程序中创建无服务器函数。
- 部署函数并立即开始使用它。
那么,无服务器是新的 PaaS 吗?
现在我们对这两种技术有了更清晰的了解,我们可以问:无服务器是新的 PaaS 吗?对此没有明确的答案。当然,每种技术的功能和用例之间存在一些重叠,但它们彼此之间具有明显的优势和劣势。
选择哪种解决方案或技术完全取决于用户需求、应用程序架构和开发人员偏好。由于所有领先的云提供商都提供这两种选项,因此组织和用户选择最适合其需求的选项是明智之举。