Azure でアプリケーションをホストする
これは、開発者が Azure を使い始める際に役立つ 7 部構成の記事のパート 3 です。
- パート1: 開発者向けの Azure の概要
- パート 2: 開発者向けの主要な Azure サービス
- パート 3: Azure でアプリケーションをホストする
- パート 4: アプリを Azure サービスに接続する
- パート 5: Azure でリソースを作成および管理する方法
- パート 6: Azure アプリを構築するための主要な概念
- パート 7: 請求方法
Azure には、ニーズに応じてアプリケーションをホストするためのさまざまな方法が用意されています。 この記事では、要件に合わせたサービスを提案します。 これは規範的ではありません。 ニーズに合わせてサービスを自由に組み合わせることができます。 ほとんどの運用環境では、ビジネスと組織のニーズを満たすようなサービスの組み合わせを使用しています。
サービスを選択する場合は、多くの場合、次の 2 つを考慮する必要があります。
- シンプルさとコントロール性のどちらを優先するか。
- クラウド ネイティブ (コンテナー) と Azure ネイティブ (カスタマイズされたツールと統合) のどちらが良いか。
次のビデオでは、1 つ目の考慮事項であるシンプルさとコントロール性について説明します。
シンプルさと制御性
Azure ホスティング サービスには、次の 2 つの考慮事項があります。
- シンプルさ対制御性
- 単純なホスティング プラットフォームでは、必要な構成と管理が少なくなりますが、基になるインフラストラクチャの制御性が少なくなります。
- より複雑なホスティング プラットフォームでは、必要な構成と管理が多くなりますが、基になるインフラストラクチャをより詳細に制御できます。
- クラウドネイティブ対 Azure ネイティブ
- クラウドネイティブは、コンテナーなどのオープンソース ワークロードと、Dapr などのオープンソース テクノロジを使用する、クラウドポータブルと考えることができます。 ビルドするアプリケーションは、任意のクラウド プロバイダーにデプロイできます。
- Azure ネイティブは Azure に固有であり、インフラストラクチャを管理するために Azure 固有のツールとテクノロジに投資します。 これらのサービスにはコンテナー ワークロードが含まれますが、Azure サービス間の接続と統合に重点を置いて、Azure 固有のコード優先、ローコード、インフラストラクチャ ツールも含まれます。
シンプルなホスティング
シンプルなホスティング ソリューションは、Azure によって完全に管理されます。 コードや環境の構成などの機能は、お客様が担当します。 Azure は、更新プログラムやパッチを含む、基になるランタイムとインフラストラクチャを管理します。 シンプルなホスティングは、Azure ネイティブなアプローチです。
- Logic Apps: コードをほとんどまたはまったく使用せずに、自動化されたワークフローを作成して実行します。
- Power Automate: ビジネス プロセスとワークフローを自動化する必要がある場合に使用します。
- Azure 静的 Web アプリ: Blazor や React などの生成された静的 Web アプリ をデプロイします。
- Azure Functions Apps: サーバーレス コードまたはコンテナー ホスティング。
バランスの取れたホスティング
バランスの取れたホスティング ソリューションは、シンプルさの必要性と制御性の必要性のバランスを取ります。 コードや環境の構成などの機能は、お客様が担当します。 Azure は、更新プログラムやパッチを含む、基になるランタイムとインフラストラクチャを管理します。 また、独自のコンテナーをサービスに取り込むこともできます。 バランスの取れたホスティングは、Azure ネイティブでもあり、クラウドネイティブでもあります。
- Azure App Service: 言語ランタイム、コンテナー、自動化ワークロードを含む、フル サービスの Web ホスティング。
- Azure Container Apps: サーバーレス コンテナー ホスティング。
- Azure Spring Apps: Spring Boot アプリケーションを Azure クラウドにに移行します。
制御されたホスティング
制御されたホスティング ソリューションを使用すると、基になるインフラストラクチャを完全に制御できます。 更新プログラムとパッチ、およびコード、資産、環境の構成は、お客様の責任で行います。 制御されたホスティングは、クラウドネイティブのアプローチです。
- Azure Virtual Machines: VM のフル コントロール。
- Azure Kubernetes Service: Kubernetes クラスターのフル コントロール。
ソースコード ホスティング
Azure を初めて使用して新規開発を開始する開発者の場合は、次のグラフを使用して、推奨されるホスティング ソリューションを見つけてください/。
コードなしまたは少量のコード
Azure サポートのコードなしのソリューションは、Azure-Cloud アプローチの一部です。
- Logic Apps: 事前構築済みの操作のビジュアル デザイナーを使用して、企業と企業間のシナリオのワークフローを開発します。
- Power Apps などの Power Automate: Microsoft 365 組織内のビジネス プロセスとワークフローを自動化する必要がある場合に使用します。
コードとコンテナー
ローコード ホスティング ソリューションは、アプリケーション インフラストラクチャを管理しなくてもコード機能を利用できるように設計されています。
- Azure静的 Web アプリ: 生成された静的 Web アプリ をデプロイします。
- Azure Functions: アプリケーション インフラストラクチャを管理することなく、サポートされている言語でコード関数をデプロイします。
コード優先 ホスティング ソリューションは、コードをホストするように設計されています。 コードは、ホスティング ソリューションに直接デプロイできます。
- Azure アプリ サービス: フルサービスの Web ホスティング。
- Azure Spring Apps: Spring Boot アプリケーション。
コンテナー優先 ホスティング ソリューションは、コンテナーをホストするように設計されています。 このサービスには、コンテナー固有の構成オプションと機能が用意されています。 コンテナー内で使用されるコンピューティングは、お客様が担当します。 コンテナーをホストするサービスは、マネージド コントロールから完全な責任に移行するため、必要な量のコンテナー管理のみを行います。
Kubernetes 中心 のオーケストレーション ホスティングには、次のものが含まれます。
サービス | 対象 | 使用 |
---|---|---|
Azure Kubernetes Service | クラウドネイティブ | 構成ファイルと外部成果物を使用する宣言型アプローチの Kubernetes クラスターに使用します。 |
Azure Service Fabric | Azure ネイティブ | マシンのクラスター間でマイクロサービスをデプロイするには、命令型のアプローチを使用します。 システムの望ましい状態を記述するコードを開発者が作成できるようにするプログラミング モデルを提供し、Service Fabric ランタイムはシステムをその状態と一致させる処理を行います。 |
事前構成済みのコンテナー ホスティングは、オーケストレーション オプションが事前に構成されていることを意味します。 コンテナー間またはコンテナー クラスター間で通信する機能には、Dapr などの追加のサービスが必要になる場合があります。
サービス | 使用 |
---|---|
Azure App Service | フルサービスの Web ホスティング |
Azure Spring Apps | Spring Boot アプリケーション |
Azure Container Apps | サーバーレス コンテナー ホスティング |
Azure Container Instances | シンプルで単一のコンテナー ホスティング |
Azure には、コンテナー イメージを格納および管理するためのコンテナー レジストリが用意されています。また、サードパーティのコンテナー レジストリを使用することもできます。
サービス | 使用 |
---|---|
Azure Container Registry | 独自のコンテナー イメージをビルドしてホストするときに使用します。これは、ソース コードのコミットと基本イメージの更新によってトリガーできます。 |
サーバーレス
サーバーレス ホスティング ソリューションは、ステートレス コードを実行するように設計されています。これには、使用しない場合にゼロにスケーリングされる従量課金ベースの価格レベルが含まれます。
サービス | 使用 |
---|---|
Azure Container Apps | コンテナー ホスティング |
Azure Functions | コードまたはコンテナーのホスティング。 |
マイクロサービス
マイクロサービス ホスティング ソリューションは、大規模なアプリケーションを構成するために連携する、小規模で独立したサービスを実行するように設計されています。 マイクロサービスは通常、コンテナーとしてデプロイされます。
サービス | 使用 |
---|---|
Azure Container Apps | サーバーレス コンテナー化マイクロサービスに使用します。 |
Azure Functions | サーバーレス コードまたはコンテナー化されたマイクロサービスに使用します。 |
Cloud エッジ
Cloud エッジとは、クラウド サービスがユーザー (クライアント) またはアプリケーション (サーバー) のメリットを得るために配置されているかどうかを示す用語です。
クライアント コンピューティング
クライアント コンピューティングとは、Azure クラウドから離れた場所にあるクライアントで実行されるコンピューティングです。 通常、クライアント コンピューティングは、クライアント側のレンダリングや、ブラウザー ベースやモバイル アプリケーションなどのクライアント側の処理に使用されます。
サービス | 使用 |
---|---|
Azure Static Web Apps | React、Angular、Svelte、Vue、Blazor などのクライアント側レンダリングを使用する静的 Web アプリに使用します。 |
クライアントの可用性
サービス | 使用 |
---|---|
Azure Front Door | インターネットに接続するすべてのアプリケーションで、DDoS 保護、エンド ツー エンド TLS 暗号化、アプリケーション ファイアウォール、ジオフィルタリングなど、静的および動的資産に、グローバルにキャッシュされ保護されたネットワークを提供します。 |
サーバー コンピューティング
サーバー コンピューティング資産とは、クライアントに提供される前にサーバーによって処理されるファイルです。 動的資産は、バックエンド サーバー コンピューティングを使用して開発され、必要に応じて他の Azure サービスと統合されます。
サービス | 使用 |
---|---|
Azure App Service | このサービスは、一般的な Web ホスティングに使用します。 これにより、さまざまな機能 API エンドポイント、フル スタック アプリケーション、バックグラウンド タスクがサポートされます。 このサービスには、多くのプログラミング言語ランタイムと、コンテナーから独自のスタック、言語、またはワークロードを提供する機能が付属しています。 |
Azure Functions | このサービスを使用して、AZURE サービスの HTTP エンドポイントまたはイベント ベースのトリガーに対して、サポートされている言語で独自のコードを提供します。 |
Azure Spring Apps | コードを変更せずに Spring Boot アプリケーションをデプロイするために使用します。 |
Azure Container Apps | マネージド マイクロサービスとコンテナー化されたアプリケーションをサーバーレス プラットフォームでホストするために使用します。 |
Azure Container Instances | これは、コンテナー オーケストレーションを必要としない単純なコンテナー シナリオに使用します。 |
Azure Kubernetes Service | Kubernetes クラスターが必要な場合は、このサービスを使用します。 クラスターを管理するためのコントロール プレーンが作成され、追加料金なしで提供されます。 |
サーバー エンドポイント管理
サーバー エンドポイント管理とは、ゲートウェイを介してサーバー エンドポイントとそのコンピューティングを管理する機能です。 このゲートウェイには、バージョン管理、キャッシュ、変換、API ポリシー、監視などの機能があります。
サービス | 使用 |
---|---|
Azure API Management | このサービスは、クォータとレート制限、認証と承認、変換、キャッシュされた応答など、API ゲートウェイを使用して REST、OpenAPI、GraphQL API を製品化するときに使用します。 |
Azure Application Gateway | リージョンの 負荷分散 (OSI レイヤー 7) に使用します。 URL パスまたはホスト ヘッダーに基づいてトラフィックをルーティングするために使用でき、SSL オフロード、Cookie ベースのセッション アフィニティ、Web Application Firewall (WAF) 機能をサポートします。 |
Azure Front Door | グローバル負荷分散 (OSI レイヤー 7) に使用して、DDoS 保護、エンド ツー エンド TLS 暗号化、アプリケーション ファイアウォール、ジオフィルタリングなど、静的および動的資産に、グローバルにキャッシュされ保護されたネットワークを提供します。 |
Azure Traffic Manager | DNS (OSI レイヤー 7) によるトラフィックを、グローバル Azure リージョン全体の公開アプリケーションに分散するために使用します。 Traffic Manager では、DNS を使用して、トラフィック ルーティング方法に基づいて適切なサービス エンドポイントにクライアント要求が誘導されます。 優先順位、パフォーマンス、地理的ルーティングなど、さまざまなトラフィック ルーティング方法がサポートされています。 複数のリージョンまたはデータ センター間のトラフィックを管理するのに最適です。 |
自動コンピューティング
自動コンピューティングは、時間指定されたスケジュールや別の Azure サービスなどのイベントによって自動化され、通常はバックグラウンド処理、バッチ処理、または実行時間の長いプロセスに使用されます。
サービス | 使用 |
---|---|
Power Automate | ビジネス プロセスとワークフローを自動化する必要がある場合に使用します。 |
Azure Functions | 時間指定されたスケジュールに基づいて、または他の Azure サービスのイベントに応答して、コードを実行する必要がある場合に使用します。 |
コンテナー サービス (Azure Container Instances、Azure Kubernetes Service、Azure Container Apps) | 標準の自動化可能なワークロードに使用 |
Azure Batch | ハイ パフォーマンスの自動化が必要な場合に使用します。 |
ハイブリッド クラウド
ハイブリッド クラウドは、企業のオンプレミスのプライベート クラウド サービスと、サードパーティのパブリック クラウドを、組織のアプリケーションとワークロードを実行するための単一の柔軟なインフラストラクチャに接続するコンピューティング環境です。
サービス | 使用 |
---|---|
Azure Arc | クラウドとオンプレミスの両方のリソース (セキュリティ、ガバナンス、インベントリ、管理など) を、環境全体で管理する必要がある場合に使用します。 |
独自のインフラストラクチャを維持する必要がない場合は、Azure Stack HCI を使用してオンプレミスで仮想マシンを実行できます。
ハイ パフォーマンス コンピューティング
ハイ パフォーマンス コンピューティング (HPC) は、高度なアプリケーション プログラムを効率的かつ確実かつ迅速に実行するために、並列処理を使用することです。 この用語は、テラフロップ、つまり1 秒あたり 10^12 回の浮動小数点演算以上で機能するシステムに特に適用されます。
サービス | 使用 |
---|---|
Azure Batch | Azure Batch は、コンピューティング ノード (仮想マシン) のプールを作成および管理し、実行するアプリケーションをインストールし、ノードで実行するジョブをスケジュールします。 開発者は Batch をプラットフォーム サービスとして使用して、大規模な実行が必要な SaaS アプリケーションやクライアント アプリケーションを構築することができます。 |
Azure BareMetal インスタンス | オペレーティング システム、ストレージ、ネットワークへのルート レベルのアクセス権のある非仮想化環境で実行する必要がある場合に使用します。 |
Azure Quantum ワークスペース | 量子アルゴリズムを開発して実験する必要がある場合に使用します。 |
Microsoft Genomics | ISO 認定の HIPAA 準拠のゲノム処理に使用します。 |
Azure 上のハイ パフォーマンス コンピューティングに関する詳細をご確認ください。
イベント ベースのコンピューティング
イベント ベースのコンピューティングとは、時間指定されたスケジュールや別の Azure サービスなどのイベントによってトリガーされるコンピューティングです。 イベント ベースのコンピューティングは、通常、バックグラウンド処理、バッチ処理、または実行時間の長いプロセスに使用されます。
サービス | 使用 |
---|---|
Power Virtual Agents | コードなしのインターフェイスを使用してチャットボットを作成する必要がある場合に使用します。 |
Azure Functions | 時間指定されたスケジュールに基づいて、または他の Azure サービスのイベントに応答して、コードを実行する必要がある場合に使用します。 |
Azure Service Bus Messaging | アプリケーションとサービスを分離する必要がある場合に使用します。 |
CI/CD コンピューティング
CI/CD コンピューティングとは、アプリケーションのビルドとデプロイに使用されるコンピューティングです。
サービス | 説明 |
---|---|
Azure DevOps | Azure DevOps を使用して、ホストされているエージェントへの認証と承認を含む Azure クラウドとの緊密な統合を行い、アプリケーションをビルドしてデプロイします。 |
GitHub のアクション | GitHub Actions は、GitHub リポジトリ アプリケーションをビルドしてデプロイするのに使用します。 Azure CLI を使用して、アクションを使用して Azure に安全にアクセスします。 |
Azure Virtual Machines | 別の CI/CD システムを使用する場合は、Azure Virtual Machines を使用して CI/CD システムをホストできます。 |