決定無伺服器運算是否適合您的業務需求
為協助判斷無伺服器運算是否適合您,讓我們先了解無伺服器的意義。
什麼是無伺服器運算?
您可以將無伺服器運算視為函式即服務 (FaaS),或裝載在雲端平台的微服務。 商務邏輯像函式一樣執行,您不需要手動佈建或縮放基礎結構。 雲端提供者管理基礎結構。 應用程式依據負載而自動擴增或縮小。 Azure 有許多方式可建置這類的架構。 Azure Logic Apps 和 Azure Functions 是最常見的兩個方法,這是本課程模組的重點。
什麼是 Azure Functions?
Azure Functions 是無伺服器應用程式平台。 其可讓開發人員裝載不需要佈建基礎結構即可執行的商務邏輯。 Azure Functions 提供內建可擴縮性,您只需要為所使用的資源付費。 您可使用您選擇的語言撰寫函式程式碼,包括 C#、Java、JavaScript、Python 和 PowerShell。 也支援 NuGet 和 npm 等套件管理員,您可以在商務邏輯中使用熱門的程式庫。
無伺服器運算解決方案的優點
無伺服器運算是在雲端裝載商務邏輯程式碼的絕佳選項。 透過無伺服器供應項目,例如 Azure Functions,您可使用您選擇的語言撰寫商務邏輯。 好處包括自動縮放、無須管理伺服器,還有依使用量付費,而不是保留時間。 請注意無伺服器解決方案有以下其他一些特性。
避免過度配置基礎結構
假設您已佈建虛擬機器 (VM) 伺服器,並以足夠的資源加以設定,以應付您的尖峰負載時段。 負載較輕時,有可能為沒用到的基礎結構付費。 無伺服器運算可自動擴大或縮小規模,協助解決過度配置的問題,您只有在函式處理工作時才付費。
無狀態邏輯
無狀態函式很適合用在無伺服器運算,函式執行個體隨需建立和終結。 如果狀態是必要的,它會儲存在相關聯的儲存體服務中。
事件驅動
函式為「事件驅動」。 只在回應事件 (稱為「觸發程序」) 時執行,例如收到 HTTP 要求,或要新增至佇列的訊息。 您在函式定義中設定觸發程序。 此方法可讓您宣告資料的來源 (觸發程序/輸入繫結) 和目的地 (輸出繫結),以簡化程式碼。 您不需要撰寫程式碼來監看佇列、Blob、中樞等。 只要專注於商務邏輯即可。
函式可用在傳統計算環境中
函式是無伺服器運算的重要元件,但也是執行任何類型程式碼的一般運算平台。 如果應用程式的需求變更,您可以取得專案,並將其部署在非無伺服器環境中。 這樣能提供彈性,讓您管理規模調整、在虛擬網路上執行,甚至完全隔離您的函式。
無伺服器運算解決方案的缺點
由 Azure Functions 在使用量方案中提供的無伺服器計算,不一定是裝載商務邏輯的適當解決方案。 下列一些函式的特性,可能會影響您使用無伺服器運算裝載服務的決定。
執行時間
根據預設,函式有五 (5) 分鐘的逾時。 逾時上限可設定為 10 分鐘。 如果函式執行需要 10 分鐘以上,則可以裝載於 VM。 此外,如果服務透過 HTTP 要求來初始化,而您預期該值為 HTTP 回應,則逾時會再縮短到 2.5 分鐘內。 不過,還有一個選項稱為 Durable Functions,可讓您協調多個函式的執行,而不發生逾時。
執行頻率
另一個特性是執行頻率。 如果您預期用戶端會持續執行您的函式,則要謹慎評估使用量並據以計算函式的使用成本。 在 VM 上裝載服務可能會更實惠。
當您的函數調整時,每 10 秒只能建立一個函數應用程式執行個體,最多總計 200 個執行個體。 請記住,每個執行個體都能夠服務多個同時執行,因此單一執行個體可以處理的流量不設限。 不同類型的觸發程序有不同的縮放需求,請研究您選擇的觸發程序並調查其限制。