Azure App Service によるコンテナーへのリフト アンド シフト

Microsoft Entra ID
Azure Container Registry
Azure App Service

ソリューションのアイデア

このアーティクルはソリューションのアイデアです。 このコンテンツにさらに多くの情報 (想定されるユース ケース、代替サービス、実装に関する考慮事項、価格ガイダンスなど) の掲載をご希望の方は、GitHub のフィードバックでお知らせください。

このソリューションでは、既存の Web アプリを App Service にデプロイされたコンテナーに移行します。これにより、コンテナーのオーケストレーションの管理を気にすることなく、コンテナーの作成に専念できます。

アーキテクチャ

アーキテクチャ図は、Azure データベースへのアクセスに Open Service Broker for Azure を使用した Azure Kubernetes Service のコンテナーへの既存のアプリケーションの移行を示しています。

このアーキテクチャの Visio ファイルをダウンロードします。

データフロー

  1. 開発者が既存の Web アプリケーションをコンテナーに変換します。
  2. 開発者がコンテナー イメージを次の場所に発行します。
    1. プライベート レジストリまたは Docker Hub。
    2. または Azure Container Registry。
  3. App Service が次を使ってイメージをプルします。
    1. 使用する場合は、プライベート レジストリまたは Docker Hub の資格情報。
    2. または、マネージド ID。これは、Azure Container Registry にアクセスするために Microsoft Entra のセキュリティ プリンシパルを使います。
  4. 他の Azure リソースにアクセスするサービス コネクタ。
  5. 開発者が新しいイメージをコンテナー レジストリにプッシュます。継続的デプロイが有効な場合は、これによって App Service の更新がトリガーされます。

コンポーネント

Web App for Containers: App Service を使うと、Windows および Linux 上でコンテナー化された Web アプリをデプロイして実行できます。 開発者がフル マネージド プラットフォームを利用し、さらにアプリとその依存関係をすべて含む 1 つのデプロイ可能な成果物が必要な場合に、Web App for Containers は簡単な入口として利用できます。 もう 1 つのターゲット シナリオは、Azure App Service プラットフォームに組み込まれた既定以外のカスタム フレームワークやバージョンを使って作業したい開発者です。 Azure App Service 上のコンテナー化された Web アプリは、必要に応じてスケーリングできます。また、Docker Hub、Azure Container Registry、GitHub による合理的な CI/CD ワークフローを使用できます。

Azure Container Registry: Docker および Open Container Initiative (OCI) イメージのレジストリであり、すべての OCI 成果物をサポートします。 コンテナー イメージは、App Service、Machine Learning、Batch などの Azure サービスで使います。 たとえば、Web アプリ用に Web App for Containers を構成する場合、Azure Container Registry からコンテナー イメージを指定できます。

Azure Cosmos DB: スケーラブルでハイ パフォーマンスのアプリケーションを構築および最新化するためのフル マネージド NoSQL データベース サービスです。 Azure Cosmos DB は、Azure Functions、IoT Hub、AKS (Azure Kubernetes Service)、App Service など、Azure の主要なサービスと統合されています。 ネイティブの Azure Cosmos DB for NoSQL、Azure Cosmos DB for MongoDB、Azure Cosmos DB for Apache Cassandra、Azure Cosmos DB for Apache Gremlin、Azure Cosmos DB for Table など複数のデータベース API から選択できます。

Azure SQL Database:インテリジェンスが組み込まれた、フル マネージド リレーショナル データベースです Azure SQL Database を使うと、最も一般的な言語のドライバーがサポートされており、一般的なプラットフォームやフレームワーク上でローカルまたはクラウドでアプリケーションを構築できます。 SQL Database を使うと、Azure App Service で動作する Web サイトがネイティブでサポートされているので、開発を簡略化できます。

Azure Storage:Azure Storage には、耐久性と可用性が高く、非常にスケーラブルなクラウド ストレージ ソリューションがあり、オブジェクト、ファイル、ディスク、キュー、テーブル ストレージが含まれます Azure Storage には、Web サイトの要求を満たすオブジェクト、ブロック、ファイル ストレージのサービスが含まれています。 たとえば、Web サイトには、写真やビデオなどの Web サイト メディア用のスケーラブルで安全なブロック ストレージとして、Azure Blob Storage を簡単に使用できます。

Azure Monitor:Application Insights は、正常性とパフォーマンスの監視と診断が提供されます。 Azure Monitor を Web App for Containers (App Service) と併用することで、HTTP 状態コードの原因となる接続数や要求数などの Web サイトのメトリックを監視できます。

Azure Service Connector: サービス コネクタを使うと、Azure コンピューティング サービスを他のバッキング サービスに接続できます。 たとえば、Azure App Service と、Azure Database for MySQL または PostgreSQL、Azure Storage、Azure Key Vault との間にサービス コネクタを使います。 サポートされるサービスの完全な一覧については、「Service Connector でサポートされているサービス」を参照してください。

シナリオの詳細

簡単に既存の Web アプリケーションをコンテナーに移行し、Azure App Service の Web App for Containers でコンテナー化された Web アプリを実行します。 Web App for Containers を使用すると、基になるコンテナー オーケストレーターの管理と保守について心配することなく、コンテナーの作成に集中できます。 Web アプリを構築する場合、コンテナーを使った最初の手順を実行するには、Web App for Containers がお勧めです。 コンテナーは、ストレージやデータベースのサービスのような他の Azure リソースと簡単に統合できます。

既存の Web アプリを Azure リソースと統合すると、Azure サービスのパスワードレス接続も利用できます。 パスワードレス接続は、複数の Azure サービスにまたがる、言語に依存しない機能です。 パスワードレス接続を使用すると、Web アプリはパスワードをローテーションする必要なしに Azure ベースのサービスに接続します。 必要なのは構成のみです。新しいコードは必要ありません。

考えられるユース ケース

このソリューションのアイデアは、現在の Web アプリケーションを Azure 上で実行されるコンテナーに移行するのに適しています。 以下に該当する場合、このソリューションのアイデアは Web サイトの作成に使用できます。

  • コードでデプロイした Web サイトの作成に使った既存のプログラミング エクスペリエンスを、コンテナーでデプロイする Web サイトの作成に使います。 既存の Web アプリを App Service 上のコンテナーにリフト アンド シフトします。

  • Visual Studio、Visual Studio Code、Azure CLI、Azure Cloud Shell などのツールを使った開発とデプロイの簡略化。

  • 開発環境から運用環境、さまざまなクラウドにいたるさまざまな環境間の移植性。 運用環境用にデプロイされたものではないプラットフォーム上で、ローカルでテストできます。

  • App Service のスケーラビリティは、オンデマンドで使う worker 数をスケールアウトできることを意味します。

  • 将来的な Web サイトに備えたモジュール性は、App Service でも、Azure Container Apps や Azure Kubernetes Service のような他のサービスでも役に立ちます。 Web App for Containers は、コンテナーに移行する最初の手順としてお勧めです。

  • Web App for Containers にデプロイされたコンテナーは、継続的インテグレーションと継続的デプロイ (CI/CD) に対応しています。 CI/CD 機能により、更新プログラムをより迅速にリリースできます。

共同作成者

この記事は、Microsoft によって保守されています。 当初の寄稿者は以下のとおりです。

プリンシパル作成者:

パブリックでない LinkedIn プロファイルを表示するには、LinkedIn にサインインします。

次のステップ

App Service でのコンテナーの言語デプロイ例:

関連するアーキテクチャ ガイダンス: