Azure コンピューティング サービスを選択する

App Service
Kubernetes Service

Azure では、複数の方法でお使いのアプリケーション コードをホストできます。 "コンピューティング" という用語は、アプリケーションがそこで実行されるコンピューティング リソースのホスティング モデルを指します。 次のフローチャートは、お使いのアプリケーションのコンピューティング サービスを選択するうえで役立ちます。

アプリケーションが複数のワークロードで構成されている場合は、それぞれのワークロードを個別に評価します。 完全なソリューションに、複数のコンピューティング サービスに組み込むことができます。

サービス候補を選択する

次のフローチャートを使用して、候補となるコンピューティング サービスを選択します。

Decision tree for Azure compute services

定義:

  • "リフト アンド シフト" は、アプリケーションの再設計やコード変更なしで、ワークロードをクラウドに移行する戦略です。 "リホスト" とも呼ばれます。 詳細については、「Azure migration and modernization center」を参照してください。
  • クラウド用に最適化: アプリケーションをリファクタリングすることでクラウドネイティブの機能を利用して、クラウドに移行する戦略です。

このフローチャートの結果は、検討の開始点です。 次に、サービスのより詳細な評価を実行し、ニーズを満たすかどうかを確認します。

この記事には、これらのトレードオフを決定する際に役立つ表がいくつか含まれています。 この分析に基づいて、最初の候補が特定のアプリケーションやワークロードに適していないことがわかるかもしれません。 その場合は、分析を拡張して他のコンピューティング サービスを含めます。

基本的な機能を理解する

前の手順で選択した Azure サービスについてよく知らない場合は、概要に関するドキュメントを読んでサービスの基本を理解してください。

  • Azure App Service。 Web アプリ、モバイル アプリ バックエンド、RESTful API、または自動化されたビジネス プロセスをホストするためのマネージド サービスです。
  • Azure Spring アプリ。 Spring Boot アプリをホストするために設計および最適化されたマネージド サービス。
  • Azure Kubernetes Service (AKS)。 コンテナー化されたアプリケーションを実行するためのマネージド Kubernetes サービスです。
  • Azure Batch 型のリンクされたサービスの JSON プロパティについて説明します。 大規模な並列コンピューティングやハイ パフォーマンス コンピューティング (HPC) のアプリケーションを実行するためのマネージド サービスです
  • Azure Container Instances。 仮想マシンをプロビジョニングしたり、より高度なサービスを採用したりせずに、Azure で最も高速かつ簡単にコンテナーを実行する方法です。
  • Azure Functions。 マネージド FaaS サービスです。
  • Azure Service Fabric。 Azure、オンプレミスなど、多数の環境で実行できる分散システム プラットフォームです。
  • Azure 仮想マシン。 Azure 仮想ネットワーク内に VM をデプロイして管理します。
  • Azure Container Apps。 Kubernetes 上に構築されたマネージド サービスで、サーバーレス環境へのコンテナ化されたアプリケーションのデプロイを単純化します。

ホスティング モデルについて理解する

Azure サービスを含むクラウド サービスは 3 つのカテゴリに分類されます。つまり、IaaS、PaaS、FaaS です (SaaS (サービスとしてのソフトウェア) もありますが、これはこの記事の対象範囲外です)。この違いを理解しておくことは有益です。

サービスとしてのインフラストラクチャ (IaaS) を使用すると、個々の VM と共に、関連するネットワークおよびストレージ コンポーネントをプロビジョニングすることができます。 その後、必要なソフトウェアとアプリケーションを、こうした VM にデプロイします。 このモデルは従来のオンプレミス環境に最も近いものですが、Microsoft がインフラストラクチャを管理する点が異なります。 個々の VM は、ご自身で引き続き管理します。

サービスとしてのプラットフォーム (PaaS) は、管理されたホスティング環境を提供します。この環境では、VM やネットワーク リソースを管理せずにアプリケーションをデプロイできます。 Azure App Service と Azure Container Apps は PaaS サービスです。

サービスとしての関数 (FaaS) はさらに進んで、ホスティング環境について心配する必要がありません。 FaaS モデルでは、コードをデプロイするだけで、サービスによって自動的にコードが実行されます。 Azure Functions は FaaS サービスの 1 つです。

注意

Azure Functions は、Azure サーバーレス コンピューティング オファリングです。 このサービスと、サーバーレス ワークフローを提供する Logic Apps などの他の Azure サーバーレス製品との比較については、「Azure における統合と自動化の適切なサービスを選ぶ」参照してください。

IaaS から純粋な PaaS への中間領域もあります。 たとえば、Azure VM では、仮想マシン スケール セットを使用して自動スケーリングを行うことができます。 この自動スケーリング機能は厳密には PaaS ではありませんが、PaaS サービスの中で見つかる管理機能の一種です。

一般に、制御と管理しやすさの間にはトレードオフの関係があります。 IaaS では最も細かな制御、柔軟性、移植性が提供されますが、自分で作成した VM とネットワーク コンポーネントをプロビジョニング、構成、管理する必要があります。 FaaS サービスでは、アプリケーション実行のほぼすべての側面が自動的に管理されます。 PaaS サービスは、その中間に位置します。

条件 Virtual Machines App Service Azure Spring Apps Service Fabric Azure Functions Azure Kubernetes Service Container Instances Azure Batch Azure Container Apps
アプリケーションの構成 非依存 アプリケーション、コンテナー アプリケーション、マイクロサービス サービス、ゲスト実行可能ファイル、コンテナー 関数 Containers Containers スケジュールされたジョブ コンテナー
密度 非依存 App Service プランによる、インスタンスごとの複数のアプリ サービス インスタンスごとの複数のアプリ VM ごとに複数のサービス サーバーレス 1 ノードごとに複数のコンテナー 専用インスタンスなし VM ごとに複数のアプリ サーバーレス
最小ノード数 1 2 1 2 5 3 サーバーレス 1 3 3 専用ノードなし 1 4 サーバーレス
状態管理 ステートレスまたはステートフル ステートレス ステートレス ステートレスまたはステートフル ステートレス ステートレスまたはステートフル ステートレス ステートレス ステートレスまたはステートフル
Web ホスティング 非依存 組み込み 組み込み 非依存 適用なし 非依存 非依存 いいえ 非依存
専用 VNet にデプロイできるかどうか サポートされています サポートされています 5 サポートされています サポートされています サポートされています 5 サポートされています サポートされています サポートされています サポートされています
ハイブリッド接続 サポートされています サポートされています 6 サポートされています サポートされています サポートされています 7 サポートされています サポートされていません サポートされています サポートされています

Notes

  1. 従量課金プランを使用している場合。 App Service プランを使用している場合、関数は、App Service プランに割り当てられた VM 上で実行されます。 Azure Functions の適切なサービス プランの選択に関する記事を参照してください。
  2. 2 つ以上のインスタンスによる、より高い SLA。
  3. 運用環境の場合に推奨されます。
  4. ジョブの完了後、0 にスケールダウンできます。
  5. App Service Environment (ASE) が必要です。
  6. Azure App Service のハイブリッド接続を使用します。
  7. App Service プランまたは Azure Functions Premium プランが必要です。

DevOps

条件 Virtual Machines App Service Azure Spring Apps Service Fabric Azure Functions Azure Kubernetes Service Container Instances Azure Batch Azure Container Apps
ローカル デバッグ 非依存 IIS Express、その他 1 Visual Studio Code、Intellij、Eclipse ローカル ノードのクラスター Visual Studio または Azure Functions CLI Minikube、その他 ローカルのコンテナー ランタイム サポートされていません ローカルのコンテナー ランタイム
プログラミング モデル 非依存 Web および API アプリケーション、バックグラウンド タスク用の Web ジョブ Spring Boot、Steeltoe ゲスト実行可能ファイル、サービス モデル、アクター モデル、コンテナー トリガーを持つ関数 非依存 非依存 コマンド ライン アプリケーション 非依存
アプリケーションの更新 組み込みのサポートなし デプロイ スロット ローリング アップグレード、ブルーグリーン デプロイ ローリング アップグレード (サービスあたり) デプロイ スロット ローリング アップデート 適用なし リビジョン管理

Notes

  1. オプションには、ASP.NET または node.js (iisnode) の IIS Express、PHP Web サーバー、Azure Toolkit for IntelliJ、Azure Toolkit for Eclipse などがあります。 App Service では、デプロイ済みの Web アプリのリモート デバッグもサポートしています。
  2. Resource Manager のプロバイダー、リージョン、API のバージョン、スキーマに関する記事をご覧ください。

スケーラビリティ

条件 Virtual Machines App Service Azure Spring Apps Service Fabric Azure Functions Azure Kubernetes Service Container Instances Azure Batch Azure Container Apps
自動スケール 仮想マシン スケール セット 組み込みのサービス 組み込みのサービス 仮想マシン スケール セット 組み込みのサービス ポッドの自動スケーリング1、クラスターの自動スケーリング2 サポートされていません 該当なし スケーリング ルール4
Load Balancer Azure Load Balancer 統合 統合 Azure Load Balancer 統合 Azure Load Balancer または Application Gateway 組み込みのサポートなし Azure Load Balancer 統合
スケールの制限3 プラットフォーム イメージ:スケール セットあたり 1,000 ノード、カスタム イメージ:スケール セットあたり 600 ノード 30 個のインスタンス、App Service Environment で 100 Standard で 500 個のアプリ インスタンス スケール セットあたり 100 ノード Function App あたり 200 個のインスタンス クラスターあたり 100 ノード (既定の制限) サブスクリプションあたり 20 コンテナー グループ (既定の制限)。 20 個のコアの制限 (既定の制限)。 リージョンあたり 5 つの環境、環境あたり 20 個のコンテナー アプリ、コンテナー アプリあたり 30 個のレプリカ

Notes

  1. ポッドを自動スケールする」を参照してください。
  2. Azure Kubernetes Service (AKS) でのアプリケーションの需要を満たすようにクラスターを自動的にスケーリング」を参照してください。
  3. Azure サブスクリプションとサービスの制限、クォータ、制約」をご覧ください。
  4. Azure Container Apps でスケーリング ルールを設定する」を参照してください

可用性

条件 Virtual Machines App Service Azure Spring Apps Service Fabric Azure Functions Azure Kubernetes Service Container Instances Azure Batch Azure Container Apps
SLA Virtual Machines の SLA App Service の SLA Azure Spring アプリの SLA Service Fabric の SLA Functions の SLA AKS の SLA Container Instances の SLA Azure Batch の SLA プレビュー (SLA なし)
複数リージョンのフェールオーバー Traffic Manager Traffic Manager Traffic manager、複数リージョンのクラスター Azure Front Door Traffic Manager サポートされていません サポートされていません サポートされていません

サービスの保証に関するガイド付き学習については、「コア Cloud Services - Azure アーキテクチャとサービスの保証」をご確認ください。

セキュリティ

各サービスの使用可能なセキュリティ制御と可視性を確認して理解してください

その他の条件

条件 Virtual Machines App Service App Spring アプリ Service Fabric Azure Functions Azure Kubernetes Service Container Instances Azure Batch Azure Container Apps
SSL VM で構成済み サポートされています サポートされています サポートされています サポートされています イングレス コントローラー サイドカー コンテナーを使用 サポートされています イングレス コントローラー
コスト WindowsLinux App Service 価格 Azure Spring アプリの価格 Service Fabric の価格 Azure Functions の価格 AKS の価格 Container Instances の価格 Azure Batch の価格 Azure Container App の価格
適切なアーキテクチャ スタイル n 層ビッグ コンピューティング (HPC) Web キューワーカーn 層 Spring Boot、マイクロサービス マイクロサービスイベント駆動型アーキテクチャ マイクロサービスイベント駆動型アーキテクチャ マイクロサービスイベント駆動型アーキテクチャ マイクロサービス、タスクの自動化、バッチ ジョブ ビッグ コンピューティング (HPC) マイクロサービスイベント駆動型アーキテクチャ

このフローチャートの結果は、検討の開始点です。 次に、サービスのより詳細な評価を実行し、ニーズを満たすかどうかを確認します。

制限とコストを考慮する

より詳細な評価を実行し、サービスの次の側面を確認します。

次のステップ