天天看點

深入探讨,無伺服器是新的 PaaS 嗎?

深入探讨,無伺服器是新的 PaaS 嗎?

對更快、更靈活的軟體開發的需求不斷增加,這使得組織不斷尋找新技術和平台來滿足需求。

平台即服務 (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 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 嗎?對此沒有明确的答案。當然,每種技術的功能和用例之間存在一些重疊,但它們彼此之間具有明顯的優勢和劣勢。

選擇哪種解決方案或技術完全取決于使用者需求、應用程式架構和開發人員偏好。由于所有領先的雲提供商都提供這兩種選項,是以組織和使用者選擇最适合其需求的選項是明智之舉。