無伺服器運算與平台即服務之間有什麼區別?

儘管 PaaS 和無伺服器運算都不需要開發人員進行後端管理,但有多個因素可以區分這兩種模型,如可擴展性、定價和在網路邊緣進行部署的能力等。

學習目標

閱讀本文後,您將能夠:

  • 能夠比較和對比 PaaS 與無伺服器
  • 瞭解在網路邊緣執行代碼的重要性

複製文章連結

無伺服器運算與平台即服務 (PaaS) 之間有什麼區別?

無伺服器運算平台即服務 (PaaS) 後端架構都使整個後端對開發人員不可見,因此有一定的相似性。但是,也有幾個重要差別能區分這兩種架構,而且大多數使用案例在採用其中一種架構時效果最佳,而不是兩者俱佳。PaaS 與無伺服器之間的主要差異在於可擴展性、定價、啟動時間、工具,以及能否部署到網路邊緣

無伺服器與 PaaS 比較

PaaS 和無伺服器架構中,哪種的擴展效果更好?

無伺服器應用程式可以即時、自動和按需擴展,無需開發人員或廠商進行任何額外設定。它們天生可以擴展。相反,儘管開發人員可以對 PaaS 託管的應用程式進行程式設計,以根據使用者需求進行擴展和收縮,但這並不是 PaaS 固有的功能,開發人員將必須進行一定數量的預測才能正確擴展。

無伺服器運算可以比作從自來水管取水,其中水代表了運算能力。現代家庭中的自來水可以隨時打開,並可以產生所需的水量。PaaS 更像是使用飲水機和桶裝水送水服務。儘管仍然能獲取所需數量的飲用水,但不如打開水龍頭那樣簡便;一旦需求增加,消費者必須要求廠商提高供應量。這兩種情況下都是由他人處理「後端」(將水淨化,並送入建築物等),但只有自來水可以精確、按需和即時增減數量。

無伺服器架構可以透過按要求擴充應用程式功能的新執行個體來快速擴展。也可在不再需要時或執行了設定的時限後,透過關閉功能來快速縮減。實際上,無伺服器 Web 應用程式能夠一直縮減到無活動狀態,然後在幾秒或幾毫秒內再次啟動以回應事件。基於 PaaS 構建的應用程式無法以這樣的速度或程度進行縮放。

PaaS 和無伺服器在定價上有何不同?

繼續以水作比喻,使用自來水的消費者依據確切用水量支付水費。同樣,無伺服器運算極為精確,開發人員僅支付實際使用量的費用。一些無伺服器廠商只向開發人員收取其功能確切執行時長的費用,對於各項功能的每個單獨執行個體可以精確到幾分之一秒。其他提供者則按照請求數來收費。

使用飲水機和桶裝水送水服務的消費者也只為實際用量付費,但以桶數而不是公升數來計費。同樣,一些 PaaS 廠商只向開發人員收取其應用程式使用量的費用。但是,計費的準確性不如無伺服器。其他 PaaS 廠商則為其服務收取固定的月費。開發人員通常能夠自訂要付費的運算能力的大小。但是,這是事先決定的,不能即時回應使用量的增減。

這種差異並不一定意味著無伺服器架構總是更加便宜。就像自來水管不斷流水會迅速增加費用,如果 Web 應用程式的使用量持續較高並且波動不大,那麼使用伺服器運算來執行會變得非常昂貴。

PaaS 和無伺服器應用程式在啟動時間上有何不同?

如上所述,一旦有事件觸發應用程式功能,無伺服器應用程式幾乎能在瞬間變為作用中狀態。PaaS 構建的應用程式可以快速啟動和執行,但不如無伺服器應用程式那樣輕巧,而且需要更長的時間才能啟動和執行。為了避免使用者方的延遲,PaaS 應用程式必須至少有某些功能在大多數時間或一直保持執行。

PaaS 和無伺服器廠商提供哪些工具?

一般而言,PaaS 廠商會為開發人員提供更多工具來構建和管理其應用程式,包括用於測試和偵錯的工具。無伺服器應用程式不會在指定的機器上執行(不論是虛擬機器還是其他類型),並且無伺服器功能無論如何都應以相同狀態執行,因此無伺服器廠商可能會提供一些工具,但不會提供用於建置和測試應用程式的完整環境。

無伺服器應用程式能否部署到網路邊緣?

無伺服器代碼不會在特定的伺服器上執行,可以在網際網路任何部分上的任意位置上執行;因此,無伺服器應用程式可以部署到網路邊緣上非常靠近終端使用者的位置,從而大大減少延遲。例如,Service Workers 和 Cloudflare Workers 就是在靠近使用者位置處執行的伺服器功能(請參閱無伺服器 JavaScript 如何運作?)。

使用 PaaS 構建的應用程式能否部署到網路邊緣?

從開發人員的角度來看,PaaS 中沒有伺服器。但是,就代碼的託管位置而言,PaaS 與無伺服器運算依然不同。PaaS 廠商要麼利用其他廠商的 IaaS(基礎結構即服務)產品,要麼擁有自己的實體資料中心。這樣的結果是,在雲端平台上構建的應用程式有可能僅在某些指定的機器上執行,導致開發人員無法透過在邊緣執行代碼來最佳化其應用程式的效能。