此參考架構說明分散在地理上之組織的多個本機分支。 每個位置都會使用 Microsoft Azure 函式應用程式,在附近的雲端區域中設定 進階版 方案。 此架構中的開發人員會使用 Azure 監視器作為單一窗格來監視所有 Azure Function Apps。
架構
元件
架構包含下列元件:
- Azure Functions。 Azure Functions 是 Azure 中的無伺服器平臺即服務(PaaS),可在不需要啟動新的基礎結構的情況下執行小型的單一工作程式代碼。 Azure Functions 進階版 方案新增了透過虛擬網路私下與 Azure Functions 通訊的能力。
- Azure 虛擬網絡。 Azure 虛擬網路是建置在 Azure 雲端平臺上的專用網,因此 Azure 資源可以安全地彼此通訊。 Azure 虛擬網路 服務端點 可確保 Azure 資源只能透過安全的虛擬網路骨幹進行通訊。
- 內部部署網路。 在此架構中,組織已建立安全專用網來連接各種分支。 此專用網會使用 站對站 連線來連線到其 Azure 虛擬網路。
- 開發人員工作站。 在此架構中,個別開發人員可能會完全在安全的專用網或任何遠端位置上處理 Azure Functions 的程式碼。 在任一案例中,開發人員都能夠存取 Azure 監視器來查詢或觀察函式應用程式的計量和記錄。
案例詳細資料
此結構的一般用法包括:
- 具有許多實體位置的組織,這些實體位置會連線到 Azure 中的虛擬網路,以便與 Azure Functions 通訊。
- 在本機使用 Azure Functions 的高成長工作負載,並維護使用 Azure 的選項,以用於工作中的任何非預期高載。
建議
下列建議適用於大部分案例。 除非您有覆寫建議的特定需求,否則請遵循這些建議。
設計無伺服器架構
傳統企業應用程式傾向於整合型應用程式架構,其中一個程式代碼「解決方案」會執行整個組織的商業規則。 使用 Azure Functions 時 ,最佳做法 是針對個別函式執行單一 工作的無伺服器架構 進行設計。 這些單一工作的設計目的是要快速執行,並整合到較大的工作流程中。
Azure Functions 上的無伺服器架構有許多優點,包括:
- 應用程式可以 依個別商務功能自動調整 ,而不是調整整個解決方案。 這可藉由只調整每個工作為現有工作負載提供服務所需的專案,以協助降低成本。
- Azure Functions 為許多 Azure 服務提供宣告式系結,減少小組撰寫、測試和維護所需的程式代碼數量。
- 您可以重複使用個別函式,減少大型企業解決方案所需的重複程式代碼數量。
在內部部署執行 Azure Functions
您可以選擇讓 Azure Functions 在內部部署而非 Azure 中執行;例如:
- 您的小組可能會想要在現有的內部部署 Kubernetes 安裝內執行 Azure Functions。
- 在開發中,您的小組可能會發現使用命令行介面而非入口網站編輯器在本機開發會更容易。
- 您的函式會在本機執行,其中包含安裝在內部部署 VM 上的工具組。
您可以透過三種方式在內部部署執行 Azure Functions:
- Azure Functions Core Tools。 Azure Functions Core Tools 是開發人員套件套件,通常會 從節點套件管理員 (npm) 安裝。 它可讓開發人員在本機電腦上的命令提示字元中開發、偵錯及測試函式應用程式。
- Azure Functions Docker 容器映像。 您可以使用此 容器映像 作為在 Docker 主機上或 Kubernetes 上執行 Azure Functions 的容器基底映像。
- Kubernetes Azure Functions 支援 在 Kubernetes 叢集中 使用 Kubernetes 型事件驅動自動調整 (KEDA) 的無縫事件驅動規模。 檢閱管理 Azure Kubernetes Service 叢集和 已啟用 Azure Arc 的 Kubernetes 叢集的最佳做法。
網路連線
使用 進階版 方案建立函式應用程式,可開啟 Azure 虛擬網路、Azure 和內部部署網路之間的高度安全跨網路連線,以及每個內部部署分支的網路。
您應該使用 Azure 虛擬網絡 與內部部署網路之間的站對站或 Azure ExpressRoute 連線。 這可讓內部部署分支使用其 服務端點,與 Azure 中的函式應用程式通訊。
此外,Azure 中的每個虛擬網路也應該使用 虛擬網路對等互連 ,在各個區域之間啟用個別函式應用程式之間的通訊。
考量
這些考慮會實作 Azure Well-Architected Framework 的支柱,這是一組指導原則,可用來改善工作負載的品質。 如需詳細資訊,請參閱 Microsoft Azure Well-Architected Framework。
延展性
- 應設計 Azure Functions 程式代碼,使其可以無休止地相應放大。 請考慮競爭條件、租用的檔案和其他可能導致某個函式執行的工作負載封鎖另一個。 也請考慮在其設計中撰寫所有 Azure Functions 程式代碼是 無狀態和防禦 性的。
- 對於在觸發程式或系結中使用 Azure 儲存體 帳戶的函式應用程式,請勿重複使用用來儲存函式應用程式及其執行元數據的相同帳戶。
可用性
- 一般而言,取用方案中的 Azure Functions 可以縮減為零個實例。 當新的事件觸發函式應用程式時,您必須在函式應用程式上執行程式碼來建立新的實例。 與此進程相關聯的延遲稱為 冷啟動。 Azure Functions 進階版 方案提供選項,以設定預先暖化實例,這些實例已準備好供任何新要求使用。 您可以在向外延展設定中,將預先暖化實例的數目設定為最小實例數目。
- 請考慮在多個區域中有多個 進階版 方案,並使用 Azure 流量管理員 適當地路由要求。
管理能力
- Azure Functions 必須位於與您其他 Azure 資源不同的空白子網中。 設計虛擬網路的子網時,可能需要進行更多規劃。
- 請考慮為 Azure Functions 可能需要存取的每個內部部署資源建立 Proxy。 這可以保護您的應用程式完整性,以防止任何未預期的內部部署網路變更。
- 使用 Azure 監視器來 觀察整個解決方案中 Azure Functions 的分析與記錄 。
DevOps
- 在理想情況下,部署作業應該來自單一小組(Dev 或 DevOps),而不是來自每個個別分支。 請考慮使用 Azure Pipelines 或 GitHub Actions 等新式工作流程系統,在所有 Azure 區域和潛在內部部署之間以可重複的方式部署函式應用程式。
- 使用您的工作流程系統,將程式代碼重新部署至 Azure Functions,因為程式代碼已更新並標記發行。
- 使用 部署位置 在最終推送至生產環境之前測試 Azure Functions。
成本最佳化
成本優化是考慮如何減少不必要的費用,並提升營運效率。 如需詳細資訊,請參閱 成本優化要素概觀。
- 使用 Azure 定價計算機來預估成本。
- Azure 虛擬網絡 連線、私人網站存取、服務端點和預先暖化實例都需要 Azure Functions 進階版 方案。
- Azure Functions 進階版 實例上的帳單,而不是取用。 單一實例的最小值可確保即使沒有執行,也至少會有一些每月帳單。 您可以設定實例計數上限,以控制可能高載大小的工作負載成本。
參與者
本文由 Microsoft 維護。 原始投稿人如下。
主體作者:
- Raunak Jhawar |資深雲端架構師
若要查看非公用LinkedIn配置檔,請登入LinkedIn。
下一步
- Azure Functions 文件
- Azure App Service 混合式連線 (機器翻譯)
- 使用 PowerShell 管理混合式環境
- Azure Functions 以連線到 Azure 虛擬網路中的資源
- Azure 虛擬網路文件
相關資源
請參閱 Azure Functions 的下列架構指引:
請參閱 Azure 虛擬網絡 的下列架構指引: