選擇 Azure 計算服務

App Service
Kubernetes Service

Azure 提供了多種方式來裝載您的應用程式程式碼。 計算一詞是指您的應用程式執行所在運算資源的裝載模型。 下列流程圖可協助您選擇應用程式適用的計算服務。

如果您的應用程式包含多個工作負載,請個別評估每個工作負載。 完整的解決方案可能會納入兩個或更多計算服務。

選擇候選服務

使用下列流程圖來選取候選計算服務。

Decision tree for Azure compute services

定義:

  • 「隨即轉移」 是將工作負載移轉至雲端的策略,不需要重新設計應用程式或進行程式碼變更。 也稱為 重新裝載。 如需詳細資訊,請參閱 Azure 移轉和現代化中心
  • 雲端最佳化是透過重構應用程式以充分利用雲端原生功能來移轉至雲端的策略。

此流程圖的輸出是考慮 的起點 。 接下來,請對服務進行更詳細的評估,查看其是否符合您的需求。

本文包含數個數據表,可協助您做出這些取捨決策。 根據此分析,您可能會發現初始候選項目不適合您的特定應用程式或工作負載。 在此情況下,展開您的分析以包含其他計算服務。

瞭解基本功能

如果您不熟悉在上一個步驟中選取的 Azure 服務,請閱讀概觀檔以瞭解服務的基本概念。

  • Azure App Service。 裝載 Web 應用程式、行動應用程式後端、RESTful API 或自動化商務程式的受控服務。
  • Azure Spring Apps。 專為裝載 Spring Boot 應用程式而設計並優化的受控服務。
  • Azure Kubernetes Service (AKS) 。 用於執行容器化應用程式的受控 Kubernetes 服務。
  • Azure Batch。 執行大規模平行和高效能運算的受控服務, (HPC) 應用程式
  • Azure 容器執行個體。 在 Azure 中執行容器的最快速且最簡單的方式,不需要布建任何虛擬機器,也不需要採用更高階的服務。
  • Azure Functions。 受控 FaaS 服務。
  • Azure Service Fabric。 可在許多環境中執行的分散式系統平臺,包括 Azure 或內部部署。
  • Azure 虛擬機器。 部署和管理 Azure 虛擬網路內的 VM。
  • Azure Container Apps。 建置於 Kubernetes 上的受控服務,可簡化在無伺服器環境中部署容器化應用程式的作業。

瞭解裝載模型

雲端服務,包括 Azure 服務通常分為三種類別:IaaS、PaaS 或 FaaS。 (也有 SaaS 即軟體即服務,此服務不在本文的範圍內。) 瞭解差異很有用。

基礎結構即服務 (IaaS) 可讓您布建個別 VM 以及相關聯的網路和儲存體元件。 然後您會部署您想放在這些 VM 上的任何軟體和應用程式。 此模型最接近傳統內部部署環境,不同之處在於 Microsoft 會管理基礎結構。 您還是可以管理個別的 VM。

平台即服務 (PaaS) 提供受控的裝載環境,您可以在其中部署您的應用程式而不需要管理 VM 或網路資源。 Azure App 服務和 Azure Container Apps 是 PaaS 服務。

功能即服務 (FaaS) 則更進一步,讓您不需擔心裝載環境。 在 FaaS 模型中,您只需部署程式碼,服務就會自動執行它。 Azure Functions 即是 FaaS 服務。

注意

Azure Functions是Azure 無伺服器計算供應專案。 您可以閱讀 在 Azure 中選擇正確的整合和自動化服務 ,以瞭解此服務與其他無伺服器供應專案之間的比較,例如提供無伺服器工作流程的 Logic Apps。

從 IaaS 到純 PaaS 有一個頻譜。 例如,Azure VM 可以使用虛擬機器擴展集自動調整。 這項自動調整功能並非完全是 PaaS,而是 PaaS 服務中找到的管理功能類型。

一般而言,控制與輕鬆管理之間會有取捨。 IaaS 提供最大的控制、彈性和可攜性,但您必須布建、設定及管理您所建立的 VM 和網路元件。 FaaS 服務會自動管理執行應用程式的所有層面。 PaaS 服務落在兩者之間的某處。

準則 虛擬機器 App Service 方案 Azure Spring Apps Service Fabric Azure Functions Azure Kubernetes Service 容器執行個體 Azure Batch Azure 容器應用程式
應用程式組合 無從驗證 應用程式、容器 應用程式、微服務 服務、來賓可執行檔、容器 函式 容器 容器 Scheduled jobs 容器
密度 無從驗證 每個執行個體多個應用程式,透過 App Service 方案 每個服務實例有多個應用程式 每個 VM 多個服務 無伺服器 1 每個節點有多個容器 沒有專用執行個體 每個 VM 多個應用程式 無伺服器
最小節點數目 1 2 1 2 5 3 無伺服器 1 3 3 沒有專用節點 1 4 無伺服器
狀態管理 無狀態或可設定狀態 無狀態 無狀態 無狀態或可設定狀態 無狀態 無狀態或可設定狀態 無狀態 無狀態 無狀態或可設定狀態
Web 裝載 無從驗證 內建 內建 無從驗證 不適用 無從驗證 無從驗證 無從驗證
可以部署到專用的 VNet 嗎? 支援 支援 5 支援 支援 支援 5 支援 支援 支援 支援
混合式連線 支援 支援 6 支援 支援 支援 7 支援 不支援 支援 支援

附註

  1. 如果是使用使用情況方案。 如果是使用 App Service 方案,則函式會在配置給您的 App Service 方案的 VM 上執行。 請參閱為Azure Functions選擇正確的服務方案
  2. 具有兩個或更多個執行個體的較高 SLA。
  3. 對生產環境的建議。
  4. 作業完成後可相應減少為零。
  5. 需要 App Service Environment (ASE)。
  6. 使用 Azure App Service 混合式連線.
  7. 需要App Service方案或Azure Functions 進階版方案

DevOps

準則 虛擬機器 App Service 方案 Azure Spring Apps Service Fabric Azure Functions Azure Kubernetes Service 容器執行個體 Azure Batch Azure 容器應用程式
本機偵錯 無從驗證 IIS Express、其他 1 Visual Studio Code、Intellij、Eclipse 本機節點叢集 Visual Studio 或 Azure Functions CLI Minikube,其他 本機容器執行階段 不支援 本機容器執行階段
程式設計模型 無從驗證 Web 和 API 應用程式、背景工作的 WebJobs Spring Boot、Steeltoe 來賓可執行檔、服務模型、執行者模型、容器 具有觸發程序的函式 無從驗證 無從驗證 命令列應用程式 無從驗證
應用程式更新 沒有內建支援 部署位置 輪流升級、藍綠部署 輪流升級 (每個服務) 部署位置 輪流更新 不適用 修訂管理

附註

  1. 選項包括 IIS Express for ASP.NET 或 node.js (iisnode);PHP Web 伺服器;Azure Toolkit for IntelliJ、Azure Toolkit for Eclipse。 App Service 也支援已部署 Web 應用程式的遠端偵錯。
  2. 請參閱 Resource Manager 提供者、區域、API 版本及結構描述

延展性

準則 虛擬機器 App Service 方案 Azure Spring Apps Service Fabric Azure Functions Azure Kubernetes Service 容器執行個體 Azure Batch Azure 容器應用程式
自動調整規模 虛擬機器擴展集 內建服務 內建服務 虛擬機器擴展集 內建服務 Pod 自動調整 1 ,叢集自動調整 2 不支援 N/A 調整規則 4
負載平衡器 Azure Load Balancer Integrated Integrated Azure Load Balancer Integrated Azure Load Balancer或應用程式閘道 沒有內建支援 Azure Load Balancer Integrated
縮放限制3 平臺映射:每個擴展集 1000 個節點,自訂映射:每個擴展集 600 個節點 30 個實例,100 個具有 App Service 環境 標準中的 500 個應用程式實例 每個擴展集 100 個節點 每個 Function 應用程式 200 個執行個體 每個叢集 100 個節點 (預設限制) 每個訂用帳戶 20 個容器群組 (預設限制)。 20 個核心限制 (預設限制)。 每個區域 5 個環境、每個環境 20 個容器應用程式、每個容器應用程式 30 個複本

附註

  1. 請參閱 自動調整 Pod
  2. 請參閱自動調整叢集,以符合Azure Kubernetes Service (AKS) 的應用程式需求
  3. 請參閱 Azure 訂用帳戶和服務限制、配額和條件約束
  4. 請參閱 在 Azure Container Apps 中設定調整規則

可用性

準則 虛擬機器 App Service 方案 Azure Spring Apps Service Fabric Azure Functions Azure Kubernetes Service 容器執行個體 Azure Batch Azure 容器應用程式
SLA 虛擬機器的 SLA App Service 的 SLA Azure Spring Apps 的 SLA Service Fabric 的 SLA Functions 的 SLA AKS 的 SLA 容器執行個體的 SLA Azure Batch 的 SLA 預覽 (無 SLA)
多區域容錯移轉 流量管理員 流量管理員 流量管理員、多區域叢集 Azure Front Door 流量管理員 不支援 不支援 不支援

如需服務保證的引導式學習,請檢閱核心雲端服務 - Azure 架構和服務保證

安全性

檢閱並瞭解每個服務的可用安全性控制項和可見度

其他準則

準則 虛擬機器 App Service 方案 應用程式 Spring Apps Service Fabric Azure Functions Azure Kubernetes Service 容器執行個體 Azure Batch Azure 容器應用程式
SSL 已在 VM 中設定 支援 支援 支援 支援 輸入控制器 使用側車容器 支援 輸入控制器
成本 WindowsLinux App Service 價格 Azure Spring Apps 定價 Service Fabric 價格 Azure Functions定價 AKS 定價 容器執行個體價格 Azure Batch 價格 Azure Container Apps 定價
合適的架構樣式 多層式架構 (N-Tier)Big compute (HPC) Web 佇列背景工作角色, 多層式架構 (N-Tier) Spring Boot、 微服務 微服務事件驅動架構 (EDA) 微服務事件驅動架構 (EDA) 微服務事件驅動架構 (EDA) 微服務、工作自動化、批次作業 Big compute (HPC) 微服務事件驅動架構 (EDA)

此流程圖的輸出是考慮 的起點 。 接下來,請對服務進行更詳細的評估,查看其是否符合您的需求。

考慮限制和成本

執行更詳細的評估,查看服務的下列層面:

後續步驟