Azure Logic Apps を 使用すると、作成する必要があるコードの量を減らすことで、アプリ、クラウド サービス、オンプレミス システム間のデータをより簡単に統合および調整できます。
Azure を使用する場合、 信頼性は共有責任です。 Microsoft では、回復性と回復性をサポートするさまざまな機能を提供しています。 使用するすべてのサービスでこれらの機能がどのように機能するかを理解し、ビジネス目標とアップタイムの目標を達成するために必要な機能を選択する必要があります。
この記事では、一時的な障害、可用性ゾーンの停止、リージョンの停止など、さまざまな潜在的な障害や問題に対するロジック アプリ ワークフローの回復性を確保する方法について説明します。 また、Azure Logic Apps サービス レベル アグリーメント (SLA) に関する重要な情報についても説明します。
信頼性のための運用環境のデプロイに関する推奨事項
本番環境のワークロードに対しては、次のことをお勧めします。
- 分離またはネットワーク セキュリティ要件を持つエンタープライズおよびセキュリティで保護されたワークフローの場合は、マルチテナント Azure Logic Apps の従量課金ワークフローではなく、シングルテナントの Azure Logic Apps で Standard ワークフローを作成して実行します。 詳細については、「さまざまな環境を作成してデプロイする」を参照してください。
- シングルテナントの Azure Logic Apps を使用した運用環境のデプロイでは、 ゾーンの冗長性を有効に して、ロジック アプリリソースを複数の可用性ゾーンに分散させます。
信頼性アーキテクチャの概要
このセクションでは、信頼性の観点から最も関連性の高いサービスのしくみの重要な側面について説明します。 このセクションでは、デプロイして使用するリソースと機能の一部を含む論理アーキテクチャについて説明します。 また、物理アーキテクチャについても説明します。このアーキテクチャでは、サービスの内部での動作について詳しく説明します。
論理アーキテクチャ
デプロイするプライマリ リソースは ロジック アプリです。 従量課金ロジック アプリにはワークフローが 1 つだけ含まれますが、Standard ロジック アプリには複数のワークフローを含めることができます。 ほとんどのワークフローでは、1 つ以上の 接続 を使用して、他のアプリ、サービス、システムにアクセスします。
オンプレミス システムのデータにアクセスする場合は、 オンプレミス データ ゲートウェイをデプロイできます。 各ゲートウェイ リソースは、ローカル コンピューター上の個別のデータ ゲートウェイ インストールを表します。 複数のコンピューターを使用して、高可用性を実現するオンプレミス データ ゲートウェイを構成できます。 詳細については、「高可用性のサポート」を参照してください。
Azure Logic Apps for Business-to-Business (B2B) エンタープライズ統合シナリオを 使用する場合は、ロジック アプリ ワークフローが使用する成果物を定義して格納する 統合アカウント をデプロイできます。
物理アーキテクチャ
従量課金ロジック アプリの場合、Azure Logic Apps はコンピューティング インフラストラクチャ、状態ストレージ、およびその他のリソースを自動的に管理します。 仮想マシン (VM) を構成または管理する必要はありません。 従量課金ロジック アプリは、多くの顧客間でコンピューティング インフラストラクチャを共有します。
Standard ロジック アプリの場合、Azure Logic Apps では 、ワークフロー サービス プランと呼ばれるコンピューティング リソースまたは専用の プランが使用されます。 各プランには複数のインスタンスを含めることができます。必要に応じて、複数の可用性ゾーンに分散できます。 各インスタンスは大まかに仮想マシン (VM) にマップされますが、それらの VM は表示されないため、それらを直接構成または管理する必要はありません。 ワークフローは、プランのインスタンスで実行されます。
標準ロジック アプリでは、ステートフル ワークフローの状態を維持するようにストレージを構成する必要があります。 詳細については、「ステートフルおよびステートレス ワークフロー」を参照してください。
標準ロジック アプリでは、Azure Functions および Azure App Service と同様の基盤となるインフラストラクチャが使用されます。 ただし、ロジック アプリのプランを構成する方法には、他のサービスと比較していくつかの違いがあります。
詳細については、「 標準ロジック アプリと従量課金ロジック アプリの違い」を参照してください。
一時的な障害に対する回復性
一時的な障害は、コンポーネントにおける短い断続的な障害です。 これらはクラウドのような分散環境で頻繁に発生し、運用の通常の範囲であり、 一時的な障害は、短時間の経過後に自分自身を修正します。 アプリケーションで一時的な障害を処理できることは重要です。通常は、影響を受ける要求を再試行します。
クラウドでホストされるすべてのアプリケーションは、クラウドでホストされている API、データベース、およびその他のコンポーネントと通信する際に、Azure の一時的な障害処理のガイダンスに従う必要があります。 詳細については、「一時的な障害を処理するための推奨事項」を参照してください。
Azure Logic Apps では、多くのワークフロー トリガーとアクションで再試行ポリシーが自動的にサポートされます。再試行 ポリシーは、一時的な障害が原因で失敗した要求を自動的に再試行します。 再試行ポリシーを変更または無効にする方法の詳細については、「 Azure Logic Apps でのエラーと例外の処理」を参照してください。
アクションが失敗した場合、以降のアクションの動作をカスタマイズできます。 また、"スコープ" を作成して、一緒に失敗または成功する可能性のある関連アクションをグループ化することもできます。
詳細については、「Azure Logic Apps におけるエラーと例外の処理」を参照してください。
可用性ゾーンの障害に対する回復性
可用性ゾーン は、Azure リージョン内のデータセンターの物理的に分離されたグループです。 1 つのゾーンで障害が発生した際には、サービスを残りのゾーンのいずれかにフェールオーバーできます。
Azure Logic Apps ではゾーン の冗長性がサポートされており、コンピューティング リソースと状態が複数の可用性ゾーンに分散されます。 ロジック アプリ ワークフローのリソースを可用性ゾーン間で分散すると、運用ロジック アプリ ワークロードの回復性と信頼性が向上します。
マルチテナント Azure Logic Apps の新規および既存の従量課金ロジック アプリ ワークフローでは、ゾーンの冗長性が自動的に有効になります。
Azure Logic Apps では、"ゾーン冗長" がサポートされており、コンピューティング リソースが複数の可用性ゾーン間で分散されます。 必要に応じて、ロジック アプリ ワークフローが格納する状態のゾーン冗長を構成できます。 ロジック アプリ ワークフローのリソースを可用性ゾーン間で分散すると、運用ロジック アプリ ワークロードの回復性と信頼性が向上します。
シングルテナント Azure Logic Apps では、ホスティング オプションのワークフロー サービス プランを使用する Standard ワークフローの場合、必要に応じてゾーン冗長を有効にすることができます。
ホスティング プランの App Service Environment v3 を使用する Standard ワークフローの場合、必要に応じてゾーン冗長を有効にすることができます。 App Service Environment v3 が可用性ゾーンをサポートする方法の詳細については、「 App Service Environment の信頼性」を参照してください。
Requirements
- リージョンのサポート:可用性ゾーンをサポートする任意のリージョンにデプロイされた従量課金ロジック アプリは、自動的にゾーン冗長になります。 西日本は例外ですが、一部の依存サービスではゾーン冗長がまだサポートされていないため、現在、ゾーン冗長ロジック アプリはサポートされていません。
- リージョンのサポート: Azure App Service の可用性ゾーンをサポートする任意のリージョンに、ワークフロー サービス プランを使用してゾーン冗長 Standard ロジック アプリをデプロイできます。 西日本は例外ですが、一部の依存サービスではゾーン冗長がまだサポートされていないため、現在、ゾーン冗長ロジック アプリはサポートされていません。 詳細については、「Azure App Service の信頼性」を参照してください。
- リージョンのサポート: App Service Environment v3 の可用性ゾーンをサポートするリージョンを確認するには、「 リージョン」を参照してください。
- インスタンス数: ワークフロー サービス プランのインスタンスを少なくとも 2 つデプロイする必要があります。 各インスタンスは 1 つの VM にほぼ対応しているため、これらのインスタンス (VM) を複数の可用性ゾーンに分散するには、少なくとも 2 つのインスタンスが必要です。
Considerations
- ストレージ: ステートフル Standard ワークフローの外部ストレージを構成する場合、ゾーン冗長のストレージ アカウントを構成する必要があります。 詳細については、「Azure Functions のストレージに関する考慮事項」を参照してください。
コネクタ: ロジック アプリがゾーン冗長の場合、組み込みコネクタは自動的にゾーン冗長になります。
統合アカウント: プレミアムSKU統合アカウントは、デフォルトでゾーン冗長化されています。
Cost
マルチテナント Azure Logic Apps の新規および既存の従量課金ロジック アプリに対して自動的に有効になるゾーン冗長の使用には、追加のコストは適用されません。
シングルテナントの Azure Logic Apps にワークフロー サービス プランを含む Standard ロジック アプリがある場合、2 つ以上のプラン インスタンスがある場合、可用性ゾーンの有効化に追加のコストは適用されません。 自動スケールの条件に基づいて、ご利用プランのSKU、指定されたキャパシティ、拡張または縮小するすべてのインスタンス数に基づいて課金が行われます。 可用性ゾーンを有効にしたが、2 つ未満のインスタンスを指定した場合、プラットフォームによって最低 2 つのインスタンスが適用され、これら 2 つのインスタンスに対して課金されます。
App Service Environment v3 には、ゾーン冗長のための特定の価格モデルがあります。 App Service Environment v3 の価格情報については、「価格」を参照してください。
可用性ゾーンのサポートを構成する
消費ロジック アプリ ワークフローはゾーン冗長性を自動的にサポートしているので、構成は必要ありません。
新しいゾーン冗長ロジック アプリを作成する: Standard ロジック アプリのゾーン冗長を有効にするには、「 ロジック アプリのゾーン冗長を有効にする」を参照してください。
既存のロジック アプリでゾーン冗長を有効にする: サービス プランを作成した後でゾーン冗長を有効にすることはできません。 代わりに、ゾーン冗長を有効にして新しいプランを作成し、古いプランを削除する必要があります。
ゾーン冗長を無効にする: ワークフロー サービス プランを作成した後は、ゾーンの冗長性を無効にすることはできません。 代わりに、ゾーン冗長を無効にして新しいプランを作成し、古いプランを削除する必要があります。
容量の計画と管理
可用性ゾーンの障害に備えて、プランの容量 を過剰にプロビジョニング することを検討してください。 オーバープロビジョニングにより、ソリューションは、ある程度の容量損失を許容でき、パフォーマンスが低下することなく引き続き機能できます。 詳細については、「 過剰プロビジョニングによる容量の管理」を参照してください。
すべてのゾーンが正常な場合の動作
このセクションでは、ロジック アプリ リソースがゾーン冗長用に構成され、すべての可用性ゾーンが運用可能な場合に想定される内容について説明します。
ゾーン間のトラフィック ルーティング: 通常の操作中、ワークフロー呼び出しでは、リージョン内の任意の可用性ゾーンのコンピューティング リソースを使用できます。
ゾーン間のデータ レプリケーション: ステートフル ワークフローの場合、ワークフローの状態はゾーン冗長ストレージ (ZRS) を使用して可用性ゾーン間で同期的にレプリケートされます。
ゾーン間のトラフィック ルーティング: 通常の操作中、ワークフロー呼び出しは、使用可能なすべてのプラン インスタンス間ですべての可用性ゾーンに分散されます。
ゾーン間のデータ レプリケーション: ステートフル ワークフローの場合、ワークフローの状態は、構成した状態ストレージに基づいて格納されます。 外部ストレージ システムとして Azure Storage を使用する場合は、ゾーン冗長ストレージ (ZRS) を使用する必要があります。このストレージは、可用性ゾーン間でワークフローの状態を同期的にレプリケートします。
ゾーン障害時の動作
このセクションでは、ロジック アプリ リソースがゾーン冗長用に構成されている間に可用性ゾーンの停止が発生した場合の想定内容について説明します。
- 検出と応答: Azure Logic Apps は、可用性ゾーンの障害を検出する役割を担います。 ゾーンのフェールオーバーを開始するために何もする必要はありません。
- 通知: ゾーンがダウンしても、Microsoft から自動的に通知されることはありません。 ただし、 Azure Service Health を使用して、ゾーンの障害を含むサービスの全体的な正常性を把握し、 Service Health アラート を設定して問題を通知することができます。
アクティブな要求: 可用性ゾーンが使用できなくなった場合、Azure Logic Apps は、障害のある可用性ゾーン内の VM で実行される進行中のワークフロー実行を終了します。 プラットフォームは、別の可用性ゾーン内の別の VM でワークフローを自動的に再開します。 この動作により、新しい VM が残りの可用性ゾーンに追加されるため、アクティブなワークフローでは、一時的な障害が発生したり、待機時間が長くなったりする可能性があります。
予想されるダウンタイム: Azure Logic Apps ではダウンタイムは発生しません。 ただし、ダウンタイムが発生する他のサービスに依存関係が存在する場合は、ロジック アプリも影響を受ける可能性があります。
予想されるデータ損失: データ損失は予想されません。
- トラフィックの再ルーティング: 受信トラフィックは、正常なゾーン内のインフラストラクチャに自動的に分散されます。
- トラフィックの再ルーティング: 受信トラフィックは、使用可能になると正常なゾーンの新しいプラン インスタンスに自動的に分散されます。 詳細については、「 Azure App Service の信頼性 - ゾーン障害時の動作」を参照してください。
- 実行時以外の動作: ゾーン冗長プランのロジック アプリ ワークフローは、可用性ゾーンで障害が発生した場合でも引き続き実行されます。 ただし、可用性ゾーンの停止中に、実行時以外の動作が影響を受ける可能性があります。 これらの動作の詳細と一覧については、「 Azure App Service の信頼性 - ゾーン障害時の動作」を参照してください。
- 実行時以外の動作: ゾーン冗長プランのロジック アプリ ワークフローは、可用性ゾーンで障害が発生した場合でも引き続き実行されます。 ただし、可用性ゾーンの停止中に、実行時以外の動作が影響を受ける可能性があります。 これらの動作の詳細と一覧については、「 Azure App Service Environment の信頼性 - ゾーン障害時の動作」を参照してください。
ゾーンの回復
可用性ゾーンが復旧すると、Azure Logic Apps によって、復旧した可用性ゾーンにインスタンスが自動的に作成されます。別の可用性ゾーンに作成された一時インスタンスは削除され、トラフィックは通常どおりインスタンス間で再ルーティングされます。
ゾーンエラーのテスト
Azure Logic Apps は、ゾーン冗長ロジック アプリ リソースのトラフィック ルーティング、フェールオーバー、フェールバックを管理します。 何も開始する必要はありません。 この機能は完全に管理されているため、可用性ゾーンの障害プロセスを検証する必要はありません。
リージョン全体の障害に対する回復性
各ロジック アプリは、1 つの Azure リージョンにデプロイされます。 リージョンが使用できなくなった場合、ロジック アプリも使用できなくなります。
回復性のためのカスタム マルチリージョン ソリューション
回復性を高めるために、スタンバイまたはバックアップ ロジック アプリをセカンダリ リージョンにデプロイし、プライマリ リージョンが使用できない場合にその他のリージョンにフェールオーバーすることができます。 この機能を有効にするには、次のタスクを実行します。
- ロジック アプリをプライマリとセカンダリの両方のリージョンにデプロイします。
- 必要に応じて、リソースへの接続を再構成します。
- 負荷分散とフェールオーバーのポリシーを構成します。
- プライマリ インスタンスの正常性を監視し、フェールオーバーを開始する計画を立てます。
ロジック アプリ ワークフローの複数リージョンデプロイの詳細については、次を参照してください。
- Azure Logic Apps での複数リージョンへのデプロイ
- Azure Logic Apps での統合アカウントの複数のリージョンにわたるディザスター リカバリーを設定する
- Azure Logic Apps を使って Azure リソースのレプリケーション タスクを作成する
サービス水準合意書
Azure サービスのサービス レベル アグリーメント (SLA) には、各サービスの期待される可用性と、その可用性の期待を達成するためにソリューションが満たす必要がある条件について記載されています。 詳細については、 オンライン サービスの SLA を参照してください。