功能即服務 (FaaS):您需要知道的一切

已發表: 2022-06-09

您可能聽說過 SaaS,您可能聽說過 PaaS 和 IaaS,但您聽說過功能即服務 (FaaS) 嗎?

FaaS 市場正在快速增長。 根據 Allied Market Research 的數據,2018 年市場價值 30.1 億美元。預計到 2026 年,這一數字將增長到 240 億美元——這意味著該行業將從 2020 年到 2026 年以 29.7% 的複合年增長率 (CAGR) 增長。

看看這種增長,可以肯定地說 FaaS 是一件大事。

但什麼是 FaaS,它是如何工作的? 為了幫助您回答這些問題,本文將介紹 FaaS 的基礎知識、人們應該(和不應該)使用 FaaS 的原因,以及截至 2022 年全球 FaaS 市場的狀況。

我們走吧。

什麼是功能即服務 (FaaS)?

功能即服務 (FaaS) 是一種雲計算形式,可幫助開發人員更好地工作,無需他們維護應用程序基礎架構。 當開發人員利用 FaaS 時,他們使用 FaaS 平台為他們構建、運行和監督應用程序包。

在這一點上,您可能會認為 FaaS 聽起來像無服務器計算——它確實如此。 無服務器計算允許開發人員將管理數據庫、API 網關、存儲、消息傳遞和其他基礎設施外包給第三方提供商。 FaaS 是一種無服務器計算。

顯示無服務器計算如何工作的圖像
無服務器計算的工作原理(來源: iviewlabs)

儘管這可能是您第一次閱讀有關 FaaS 的內容,但您可能已經在野外遇到過它。 許多流行的程序和應用程序都使用 FaaS——比如亞馬遜的 Alexa。

如果您熟悉 Alexa,就會知道您可以通過構建“技能”來擴展 Alexa 的功能。 與應用程序一樣,技能讓 Alexa 在其基本配置之外做事。 諸如檢查應用中的通知、開始新聊天或播放自定義音頻之類的事情。

亞馬遜通過 AWS Lambda 運行 Alexa 的所有技能。 構建新技能時,您將其創建為通過 AWS Lambda 部署的函數。 AWS Lambda 然後為您運行該函數並處理安全和數據庫管理等基礎設施問題。

那麼,FaaS 是如何一步一步工作的呢? 讓我們接下來介紹一下。

什麼是 FaaS? 本指南分解了您需要了解的所有內容點擊鳴叫

FaaS 是如何工作的?

要了解 FaaS,您需要了解兩個關鍵術語:

  1. “單體架構” = 獨立於其他應用程序運行的獨立應用程序。 這些應用程序在內部管理用戶界面、業務功能和數據界面。 單體架構代碼依賴於其他代碼片段。
  2. “微服務架構” =處理一些小任務的一段代碼。 這些微服務是獨立的(儘管它們一起構成了整個應用程序)。

下圖顯示了單體架構和微服務架構的不同之處:

單體架構與微服務架構
單體架構與微服務架構(來源: BMC)

當您執行或更新功能時,您可以看到微服務和單體架構在實踐中的主要區別。 使用單體架構,整個程序立即執行功能(例如更新應用程序)。 使用微服務架構,您可以獨立執行微服務功能。

FaaS 是幫助微服務架構工作的東西。

當你執行每一個新的微服務函數時,你只需要創建函數。 然後,您的 FaaS 提供者獲取該功能,運行它,並從那時起處理該功能的管理。

由於 FaaS 是一種可以根據您的輸入工作的工具,因此請務必注意每個 FaaS 功能應該只負責一項任務。 該任務然後在其觸發器被激活時運行。 例如,生成用戶收據副本的功能只有在用戶按下“下載收據”時才會起作用。

FaaS 使用“事件驅動的執行模型”,這意味著您的功能僅在觸發時才會激活。 同樣,它們不會在後台運行。

那麼,FaaS 還能做什麼呢?

FaaS 包括哪些服務?

儘管所有提供商都不同,但 FaaS 提供商通常會提供以下服務:

  • 身份驗證服務。 這些處理程序用戶的登錄和身份驗證過程。
  • 數據庫服務。 這些幫助您在數據庫中歸檔信息,以便您的程序可以使用它。 FaaS 提供商為您管理一些數據庫維護。
  • 文件存儲。 FaaS 提供商可以為您的應用程序存儲數據和文件,因此您無需將其託管在您自己的服務器上。
  • 報告。 FaaS 提供商可以監視您的程序中的錯誤或安全威脅,並在他們發現問題時提醒您。

總體而言,這些服務可幫助開發人員更智能地工作。 接下來讓我們介紹 FaaS 的優點。

FaaS 模型的優點

使用 FaaS,開發人員無需擔心基礎架構或部署——只需編寫應用程序邏輯。 因此,在當前實施時,FaaS 可以大大減少構建和部署程序所需的時間。

使用 FaaS 構建和部署也更容易。 一次配置時間只需幾秒鐘而不是幾小時。 您也不限於特定的語言或資源。 FaaS 提供商可以運行大多數語言的代碼,您可以使用提供商提供的緩存和數據庫來加快構建過程。

FaaS 模型具有很強的可擴展性,容量規劃要容易得多。 如果您需要更多資源,您可以簡單地參考您的 FaaS 提供商的說明來升級您的使用。 許多 FaaS 提供商提供水平擴展,這意味著如果您的使用高峰,提供商將簡單地為您提供額外的資源來應對高峰。

此外,您無需擔心維護、災難恢復 (DR) 或安全性。

最後,FaaS 非常高效。 提供商只對您使用的資源收費,因此您為 FaaS 支付的費用可能遠低於為您自己的硬件支付的費用。 同樣,您的函數不會在後台運行,而是處於空閒狀態。 您也不需要為它們閒置付費。

那麼,FaaS 是全能型的嗎? 不完全的。

FaaS 模型的缺點

FaaS 模型消除了與程序開發相關的一些最大挑戰,但它也要求您大幅限制您的控制。 您無法對代碼使用的服務器、安全性或數據庫做出很多決定。 相反,這取決於您的提供商。

同樣,調試通常會更難一些,因為您無法完全控制系統。 測試也很困難,因為 FaaS 代碼並不總是能順利地轉換到測試環境中。

此外,您必須遵守 FaaS 供應商的嚴格要求。 FaaS 功能只能完成一項操作,因此如果您不習慣這一點,則需要更改您和您的團隊編寫代碼的方式。 同樣,您可能需要重寫現有應用程序中的代碼以使其適合 FaaS 部署——因此 FaaS 通常比舊程序更適合新程序。

最後,選​​擇 FaaS 通常意味著長期致力於單一供應商。 在構建程序時,您會使用提供商的系統和要求。 自然,更換供應商可能需要您重做一些工作並可能中斷您的功能。

優點與缺點

優點缺點
更快地部署代碼

配置需要幾毫秒

任何語言的代碼

自動災難恢復 (DR)

成本效益

可擴展

失去對服務器的控制

調試更難

測試需要更長的時間

你被鎖定在你的供應商

您必須編寫適合 FaaS 的代碼

FaaS 與 SaaS、PaaS 和 IaaS

既然您對 FaaS 有了更多了解,您可能想知道它與其他任何即服務 (XaaS) 選項(如 IaaS、SaaS 和 PaaS)之間的關係。

IaaS、PaaS 和 FaaS 服務具有相似的目的:它們幫助公司更便宜、更有效地管理應用程序。 但是,每個選項都提供不同的東西。

基礎設施即服務 (IaaS) 允許您出租計算能力(如 RAM 和 CPU)。 使用 IaaS,您仍然需要在內部管理一些應用程序功能(如安全性)。

平台即服務 (PaaS) 允許您出租硬件和軟件工具來構建您的應用程序。 一個常見的例子是 AWS Elastic Beanstalk。

與 IaaS 和 PaaS 不同,FaaS 允許您租用空間來獨立運行功能。 此功能使其更具可擴展性。

以下是這三者如何不同工作的簡短摘要:

一張圖片展示了 FaaS 與 IaaS 和 PaaS 的不同之處
FaaS 與 IaaS 和 PaaS 有何不同(來源: thenewstack.io)

軟件即服務 (SaaS) 不適合應用程序或程序構建。 相反,它允許您租用應用程序,這樣您就不需要在內部構建它們。 有數以千計的 SaaS 選項可用——從數據分析工具到 WordPress SEO 插件。

市場規模、份額和領先供應商

FaaS 的發展反映了組織開發新項目的方式的整體轉變。

在過去的幾十年中,開發人員將大型系統創建為多年項目。 如今,許多組織都傾向於採用開發運營 (DevOps) 方法進行開發。 DevOps 優先考慮不斷開發和一點一點地改進程序。

一張展示 DevOps 工作原理的圖片
DevOps 的工作原理(來源: Atlassian)

同樣,組織越來越多地使用雲服務來使事情變得更安全、更高效。 據甲骨文稱,組織很快將在雲中存儲 600 倍以上的敏感數據。

您可以從 Statista 的 7,164 名高管收集的數據中看到這一趨勢。 從 2019 年到 2021 年,單一公共或私有云服務的使用下降,大多數組織採用了多種雲解決方案。

顯示雲技術使用的圖表
雲技術的使用(來源: Statista)

雲計算方面的投資也在增長。 Statista 對全球數百家大型企業的另一項研究表明,83% 的受訪公司每年在公共雲計算上的投資超過 120 萬美元。 這個數字高於 2019 年的 50%。

人們正在轉向 FaaS,因為它具有前瞻性和可擴展性。 同樣,它提供了更高的生產力和性能、更快的應用程序上市時間以及更經濟高效的方式來製作新程序。

這些優勢吸引了許多行業,包括銀行業組織(或“BFSI”組織)、消費品和零售、娛樂、電信、信息和技術支持服務 (ITES)、醫療保健和製造業。 以下是每個行業對 FaaS 市場的貢獻:

顯示哪些行業使用 Faas 的圖像
哪些行業使用 FaaS(來源: MarketsandMarkets)

與 SaaS 不同,組織沒有成千上萬的 FaaS 供應商可供選擇。 絕大多數 FaaS 使用主要參與者提供的解決方案,包括 AWS Lambda、Azure Functions、IBM Cloud Functions、Google Cloud Functions、阿里雲和 Cloudflare Workers。

我們現在將介紹這些提供程序中的每一個。

AWS 拉姆達

AWS Lambda 於 2014 年 11 月由 Amazon 推出,是一種非常流行的 FaaS 工具。 截至 2021 年第四季度,33% 的雲用戶使用 AWS 服務。

AWS Lambda 主頁
AWS 拉姆達

AWS Lambda 為許多編程語言提供原生支持,包括 Node.js、C#、Python、Ruby、Go、Java 和 Powershell。 正如我們在“什麼是功能即服務 (FaaS)?”中提到的那樣Alexa 將 AWS Lambda 用於技能。

特點和功能:

  • 連接到其他 AWS 工具
  • 使用 Amazon CloudWatch 監控程序的性能
  • 超過 200 種與 SaaS 工具的集成
  • 您可以部署 docker 容器(AWS 在 2020 年 12 月推出了此功能)

優點:

  • 您可以使用 Lambda API 或 Amazon API 網關構建自己的後端
  • 您可以將函數部署為容器映像
  • 您可以使用 Amazon RDS 代理連接到關係數據庫
  • 您可以選擇為每個功能分配多少內存

缺點:

  • 如果您還沒有使用 AWS,那麼設置它需要花費大量時間和精力

微軟 Azure 函數

Microsoft Azure Functions 是 Microsoft Azure 的一項功能,Microsoft 於 2010 年 2 月首次推出“Windows Azure”。Azure Functions 允許您通過 FaaS 執行事件驅動的代碼。 截至 2021 年第四季度,21% 的雲用戶使用 Azure。

Microsoft Azure 函數主頁
微軟 Azure 函數

特點和功能:

  • 您可以將您的函數連接到 Azure 邏輯應用中的 250 多個連接器
  • 支持 JavaScript、C#、F#、Powershell、PHP、Python 和 Java
  • 為新用戶提供許多教程
  • 幫助您通過 Azure Application Insights 分析您的程序

優點:

  • Azure Functions 使用集成的編程模型
  • 非常適合使用 DevOps 的團隊
  • 多個計劃可用

缺點:

  • Azure Functions 不支持 Node.js 或 Ruby

谷歌云函數

Google Cloud 是僅次於 AWS 和 Azure 的第三大最受歡迎的雲計算解決方案。 目前市場佔有率為10%。 Google Cloud Functions 是 Google Cloud 的一項 FaaS 功能,該服務提供 100 多種產品以供廣泛使用。

谷歌云功能
谷歌云

特點和功能:

  • 調試和日誌記錄集成到 Google Cloud Functions(通過 CloudTrace 和 CloudDebugger)
  • 您使用來自 Google Assistant、Google Cloud、Firebase 或任何使用 HTTP 的應用程序的觸發器
  • Google Cloud Functions 與許多 Google 合作夥伴集成

優點:

  • 那些想要多雲或混合功能的人可以使用它
  • 它是開源的,因此您可以根據需要輕鬆遷移到另一個 FaaS 平台
  • 非常容易使用
  • Google 為新用戶提供了許多免費資源

缺點:

  • Google Cloud Function 基於容器的服務不如其他 FaaS 提供商先進

IBM 雲

IBM Cloud 來自 IBM 於 2013 年 6 月收購的公共雲平台 SoftLayer。IBM 將該平台轉變為 Bluemix,並於 2014 年 7 月將其作為 PaaS 工具推出。此後,IBM 將該服務重新命名為 IBM Cloud,並將其功能擴展到FaaS。

因停機時間和 WordPress 問題而苦苦掙扎? Kinsta 是旨在節省您時間的託管解決方案! 查看我們的功能
IBM Cloud 主頁
IBM 雲

截至 2021 年第四季度,4% 的雲用戶使用過 IBM Cloud。 它在 Apache OpenWhisk 生態系統上運行。

特點和功能:

  • 您可以搜索視頻內容
  • 您可以通過 IBM Watson API 將您的程序連接到其他程序
  • IBM 為一些常見任務提供了預構建的功能
  • 支持 Node.js、Python、Swift、PHP、Go、Ruby、Java 和 .NET Core

優點:

  • 非常適合構建移動應用程序
  • 易於學習使用
  • 通過 IBM Cloud Monitoring 監控您的應用程序

缺點:

  • 將函數的內存時間限制為 10 分鐘或 2048 MB

阿里雲

阿里雲並不像其他雲計算選項那樣廣為人知,但它仍然擁有 6% 的可觀市場份額。 阿里雲於 2008 年由阿里巴巴推出,面向在線業務和使用阿里巴巴其他服務的用戶。

阿里雲首頁
阿里雲

FaaS 是阿里雲的產品之一,此外還有內容交付網絡 (CDN)、數據存儲和大數據處理。

特點和功能:

  • 與阿里巴巴的其他計算服務集成
  • 災難證明,因為阿里巴巴在多個區域的集群上託管功能
  • 視頻轉碼
  • 人工智能推理
  • 支持 Node.js、Python、Java、PHP 和 C#

優點:

  • 為不需要運行太多代碼的人提供免費選項
  • 高度可擴展
  • 您可以使用多種類型的觸發器

缺點:

  • 將功能從阿里巴巴轉移到另一個 FaaS 提供商可能很困難

Cloudflare 工作者

Cloudflare Workers 由 Cloudflare 運行,是一個 FaaS 系統,適合新開發人員和那些希望幾乎立即運行代碼的人。 Cloudflare Workers 提供免費計劃和可擴展的定價。

Cloudflare Workers 主頁
Cloudflare 工作者

特點和功能:

  • 支持 JavaScript、C++、Rust 和 C
  • 您可以將圖像、PDF 和其他文件存儲在 Cloudflare Workers 上以部署為靜態資產
  • 災難證明,因為 Cloudflare Workers 使用全球服務器網絡
  • 與其他 Cloudflare 產品集成

優點:

  • 它比許多其他 FaaS 選項便宜
  • 新開發人員很容易學會使用
  • 你可以很快開始
  • Cloudflare 提供詳細的教程和資源,可幫助您構建應用程序

缺點:

  • Cloudflare Workers 不如其他選項強大,更適合那些擁有小規模項目的人

Faas 最佳實踐

是的,FaaS 是一種技術,但它也是開發人員在進行程序和應用程序開發時需要採用的一種思維方式。

要充分利用 FaaS,請遵循以下最佳實踐:

  • 記住 FaaS 的局限性。 FaaS 並不適合所有程序,如果您嘗試使用 FaaS 創建一個非 FaaS 友好的程序,您將花費時間、精力和金錢。
  • 僅在 FaaS 上運行單動作功能。 如果您運行具有多個操作的函數,則會破壞 FaaS 函數在隔離環境中工作的最佳狀態。這種中斷會減慢您的應用程序並降低效率。
  • 不要運行具有依賴關係的函數。 依賴關係會在以後產生錯誤和可伸縮性問題。
  • 仔細觀察你的加載時間。 您的加載時間來自需要大量內存的庫或函數。 較長的加載時間會減慢您的程序並最終讓用戶感到沮喪。
  • 減少您使用的關係數據庫管理系統 (RDBMS) 連接的數量。 這些連接將增加功能工作所需的時間,並在您的程序中引入故障點。

您需要 FaaS 嗎?

FaaS 對某些人來說是一種創新和改變遊戲規則的技術,但它並不適合所有人。

從 FaaS 中獲得最大收益的組織願意使用微服務架構構建程序,其中每個功能只做一件事。 這些函數應該獨立工作——如果它們相互依賴,你會遇到可伸縮性問題。

如果你想構建一個具有單體架構或功能相互借鑒的應用程序,FaaS 可能無法很好地工作。 同樣,如果您不想長期致力於單一供應商,FaaS 可能是一個短視的選擇。

當然,您仍然可以在沒有 FaaS 的情況下利用雲技術。 例如,您可以投資 PaaS 或 IaaS,將應用程序的一些功能外包給雲。 此選項將為您提供雲計算的一些成本和效率優勢,但您無需在 FaaS 模型的限制內構建程序。

或者,如果您不需要構建一個高度利基或專業化的程序,請考慮投資 SaaS 工具。 一些 SaaS 工具甚至是開源的,因此您可以根據需要調整現有工具。

到 2026 年,FaaS 市場預計將增長到 240 億美元……所以現在正是了解這個市場的最佳時機點擊推

概括

FaaS 不是技術問題或新趨勢。 這是一種可擴展的技術,您應該期望在未來十年內看到更多。

解釋 FaaS 有時似乎很困難,但 FaaS 只是一種服務,它允許開發人員使用由其他人維護的基礎設施編寫和運行代碼。 您經常使用的許多服務(例如 Alexa)都使用 FaaS。 常見的 FaaS 供應商包括 IBM Cloud Functions、AWS Lambda、阿里雲、Google Cloud Functions 和 Microsoft Azure Functions。

雖然 FaaS 對某些企業非常有效,但它並不適合所有人。 FaaS 最適合運行執行單一功能的隔離、無狀態代碼。

我們想把麥克風(或鍵盤)交給你。 您如何在您的業務中使用 FaaS,您對第一次探索該技術的其他人有什麼建議嗎? 請在下面的評論中告訴我們。