この記事は、開発者が Azure を使い始めるのに役立つ 7 つの記事シリーズのパート 3 です。
- パート1: 開発者向けの Azure の概要
- パート 2: 開発者向けの主要な Azure サービス
- パート 3: Azure でアプリケーションをホストする
- パート 4: アプリを Azure サービスに接続する
- パート 5: Azure でリソースを作成および管理する方法
- パート 6: Azure アプリを構築するための主要な概念
- パート 7: 請求方法
Azure には、アプリケーションをホストするいくつかの方法が用意されています。 この記事では、要件に一致するサービスについて説明します。 これは規範的ではありません。 ニーズに合わせてサービスを組み合わせます。 ほとんどの運用環境では、サービスを組み合わせてビジネスと組織のニーズを満たします。
多くの場合、選択するサービスには次の 2 つの考慮事項があります。
- シンプルさとコントロール性のどちらを優先するか。
- クラウドネイティブ (コンテナー) または Azure ネイティブ (カスタマイズされたツールと統合) が好きですか?
次のビデオでは、最初の考慮事項であるシンプルさと制御について説明します。
シンプルさと制御性
Azure ホスティング サービスには、次の 2 つの重要な考慮事項が含まれます。
-
シンプルさ対制御性
- 単純なホスティング プラットフォームでは、必要な構成と管理が少なくなりますが、基になるインフラストラクチャの制御が少なくなります。
- 複雑なホスティング プラットフォームでは、より多くの構成と管理が必要ですが、基になるインフラストラクチャをより詳細に制御できます。
-
クラウドネイティブ対 Azure ネイティブ
- クラウドネイティブは、クラウドポータブルと考えることができます。 コンテナーや Dapr などのテクノロジなどのオープン ソース ワークロードを使用して、構築したアプリケーションを任意のクラウド プロバイダーにデプロイできます。
- Azure ネイティブでは、インフラストラクチャを管理するための Azure 固有のツールとテクノロジに重点を置いています。 これらのサービスには、コンテナー、コード優先、ローコード、および Azure サービス間の統合を強調するインフラストラクチャ ツールが含まれます。
シンプルなホスティング
簡略化されたホスティング ソリューションは、Azure によって完全に管理されます。 コードと環境の構成は、あなたの責任です。 Azure は、更新プログラムやパッチを含む、基になるランタイムとインフラストラクチャを管理します。 シンプルなホスティングは、Azure ネイティブなアプローチです。
- Logic Apps: コードをほとんどまたはまったく使用せずに、自動化されたワークフローを作成して実行します。
- Power Automate: ビジネス プロセスとワークフローを自動化します。
- Azure Static Web Apps: Blazor や React などのフレームワークで構築された静的 Web アプリをデプロイします。
- Azure Functions アプリ: サーバーレス コードまたはコンテナーを実行します。
バランスの取れたホスティング
バランスの取れたホスティング ソリューションは、シンプルさの必要性と制御の必要性のバランスを取る。 コードや環境の構成といった機能の管理はあなたの責任です。 Azure は、更新プログラムやパッチを含む、基になるランタイムとインフラストラクチャを管理します。 また、独自のコンテナーをサービスに取り込むこともできます。 バランスの取れたホスティングは、Azure ネイティブとクラウドネイティブの両方です。
- Azure App Service: 言語ランタイム、コンテナー、自動化ワークロードを含む、フル サービスの Web ホスティング。
- Azure Container Apps: サーバーレス コンテナー ホスティング。
- Azure Spring Apps: Spring Boot アプリケーションを Azure クラウドにに移行します。
制御されたホスティング
制御されたホスティング ソリューションを使用すると、基になるインフラストラクチャを完全に制御できます。 更新プログラム、パッチ、コード、アセット、環境の構成は、お客様が担当します。 制御されたホスティングは、クラウドネイティブのアプローチです。
- Azure Virtual Machines: 仮想マシンの完全な制御。
- Azure Kubernetes Service: Kubernetes クラスターのフル コントロール。
ソース コードのホスティング
Azure を初めて使用して新規開発を開始する開発者の場合は、次のグラフを使用して、推奨されるホスティング ソリューションを見つけてください/。
コードなしまたは少量のコード
Azure では、クラウド アプローチの一部としてコードなしのソリューションがサポートされています。
- Logic Apps: 事前構築済みの操作のビジュアル デザイナーを使用して、企業と企業間のシナリオのワークフローを開発します。
- Power Apps などの Power Automate: Microsoft 365 組織内のビジネス プロセスとワークフローを自動化する必要がある場合に使用します。
コードとコンテナー
ローコード ホスティング ソリューションは、アプリケーション インフラストラクチャを管理しなくてもコード機能を利用できるように設計されています。
- Azure Static Web Apps: 生成された静的 Web アプリをデプロイします。
- Azure Functions: アプリケーション インフラストラクチャを管理せずに、サポートされている言語でコード関数をデプロイします。
コード優先の ホスティング ソリューションではコードがホストされるため、サービスに直接デプロイできます。
- Azure App Service: フル サービス Web ホスティング。
- Azure Spring Apps: Spring Boot アプリケーション。
コンテナー優先 ホスティング ソリューションは、コンテナーをホストするように設計されています。 このサービスには、コンテナー固有の構成オプションと機能が用意されています。 コンテナー内で使用されるコンピューティングは、お客様が担当します。 コンテナーをホストするサービスは、マネージド コントロールから完全な責任に移行するため、必要な量のコンテナー管理のみを行います。
Kubernetes 中心 のオーケストレーション ホスティングには、次のものが含まれます。
| サービス | 対象 | 使用 |
|---|---|---|
| Azure Kubernetes サービス | クラウドネイティブ | 構成ファイルと外部成果物を使用する宣言型アプローチの 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 エッジ
クラウド エッジは、クラウド サービスがユーザー (クライアント) またはアプリケーション (サーバー) に役立つ場所にあるかどうかを示す用語です。
クライアント コンピューティング
クライアント コンピューティングは、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 サービス | 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 サービスなどのイベントによってトリガーされるコンピューティングです。 イベント ベースのコンピューティングは、通常、バックグラウンド処理、バッチ処理、または実行時間の長いプロセスに使用されます。
| サービス | 使用 |
|---|---|
| Microsoft Copilot Studio | コードなしのインターフェイスを使用してチャットボットを作成する必要がある場合に使用します。 |
| Azure Functions | 時間指定されたスケジュールに基づいて、または他の Azure サービスのイベントに応答して、コードを実行する必要がある場合に使用します。 |
| Azure Service Bus メッセージング | アプリケーションとサービスを分離する必要がある場合に使用します。 |
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 システムをホストできます。 |