

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# オーケストレーション
<a name="orchestration"></a>

このアプローチでは、単一のオーケストレーターが各マイクロサービスを呼び出し、順番に呼び出すか並行して呼び出すかを決定し、その過程で個々のサービスレスポンスを操作し、最終結果をコンパイルします。オーケストレーターは、同期呼び出しと非同期呼び出しを混在させることができます。

[AWS Step Functions](https://aws.amazon.com/step-functions/) および [Amazon Managed Workflows for Apache Airflow (Amazon MWAA)](https://aws.amazon.com/managed-workflows-for-apache-airflow/) は、ワークフローオーケストレーターに最適です。

オーケストレーションは、プロセスに論理ブランチがあり、そのロジックをカプセル化するために 1 つの場所が必要な場合に適しています。また、非同期クレームチェックパターンを実装する場合にも便利です。例えば、Step Functions の標準ワークフローはワークフローを一時停止し、別のサービスからのコールバックを待つことができます。オーケストレーターを使用すると、プロセスのモニタリングとオブザーバビリティも向上します。

## 例: Step Functions
<a name="step-functions"></a>

Step Functions を使用して、複数の Lambda 関数やその他の を調整し AWS のサービス、マイクロサービス統合のための複雑なワークフローを構築できます。このオプションは、複数のマイクロサービスを利用して長時間実行される複数ステップのプロセスに特に役立ちます。

以下の場合は、Step Functions の使用を検討してください。
+ マイクロサービス統合に複雑な複数ステップのプロセスが含まれる場合。
+ 長時間実行されるオペレーションで状態を維持する必要がある場合。
+ ワークフローレベルでエラー処理と再試行ロジックを実装したい場合。
+ 同期オペレーションと非同期オペレーションの両方を調整する必要がある場合。

Step Functions は、複雑なワークフローを設計するためのビジュアルエディタを提供するため、ステートマシンの作成と管理のプロセスが簡素化されます。再試行ロジックやエラー状態管理など、組み込みのエラー処理メカニズムが用意されているため、アプリケーションの信頼性と堅牢性が向上します。標準ワークフローは、最大 1 年間の長時間実行されるプロセスをサポートします。これは、長期間にわたるワークフローに適しています。このオプションはオーケストレーションロジックをアプリケーションコードから分離するため、コードの複雑さが大幅に軽減されます。つまり、デベロッパーはコアビジネスロジックに集中し、Step Functions は分散コンポーネントのフローコントロールと調整を処理できます。

例えば、次の図に示されている金融サービスアプリケーションでのローン承認プロセスを考えてみましょう。このプロセスは、ローン申請が送信されたときに開始されます。

![AWS Step Functions を使用して、マイクロサービス統合のための複雑なワークフローを構築します。](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/modernization-integrating-microservices/images/step-functions.png)


前の図に示すステートマシンでは、Step Functions は次のステップを調整します。
+ アプリケーションデータの検証 (Lambda 関数)
+ クレジットスコアを確認する (外部 API を呼び出す Lambda 関数)
+ リスクを評価する (Lambda 関数)
+ 高リスクの場合は、手動レビュー (人間による承認タスク) にルーティングする
+ 承認された場合、ローンの支払いを開始する (Lambda 関数)
+ 申請者に通知を送信する (Amazon SNS)

このアプローチを使用して、組み込みのエラー処理と自動ステップと手動ステップの両方を含む機能を使用して、複雑で長時間実行される可能性のあるプロセスを確実に管理できます。

考慮事項:
+ ステートマシンは、考えられるすべてのシナリオを処理するように慎重に設計してください。
+ 可能な場合は、ステップを並行して実行します。
+ 永続的障害と一時的な障害の両方に対して、Step Functions の組み込みエラー処理と再試行メカニズムを使用します。
+ ユースケースに基づいて、[標準ワークフローまたはエクスプレスワークフロー](https://docs.aws.amazon.com/step-functions/latest/dg/choosing-workflow-type.html)を使用することを検討してください。エクスプレスワークフローは、短期間または大量のワークフローに適しています。
+ [実行メトリクスをモニタリング](https://docs.aws.amazon.com/step-functions/latest/dg/monitoring-logging.html)してワークフローを最適化します。
+ ネストされたワークフローを使用して、複数のステートマシン間で機能をカプセル化して再利用します。
+ 複雑なワークフローの場合は、Step Functions の代わりに [Amazon Bedrock エージェント](https://docs.aws.amazon.com/bedrock/latest/userguide/agents-how.html)を使用することを検討してください。

詳細については、[Step Functions ドキュメント](https://docs.aws.amazon.com/step-functions/latest/dg/)を参照してください。

## 例: Amazon MWAA
<a name="mwaa"></a>

組織が既に Apache Airflow を使用している場合、Amazon MWAA はワークフローオーケストレーターとして当然の選択肢です。Apache Airflow では、Python を使用して、有向非巡回グラフ (DAG) としてワークフローを構築します。Step Functions セクションに示されているステートマシンの DAG 表現は次のようになります。

![Amazon MWAA と DAG を使用して、マイクロサービス統合のための複雑なワークフローを構築します。](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/modernization-integrating-microservices/images/mwaa.png)


DAG の操作に関する詳細については、[Amazon MWAA ドキュメント](https://docs.aws.amazon.com/mwaa/latest/userguide/working-dags.html)を参照してください。

## Step Functions と Amazon MWAA の主な違い
<a name="differences"></a>
+ Step Functions はフルマネージド型のサーバーレスサービスであるため、事前プロビジョニングするインフラストラクチャはなく、メンテナンスウィンドウをスケジュールする必要はありません。Amazon MWAA は事前にデプロイする必要があり、クラスター内のノードのサイズと数を選択します。
+ Step Functions では、Workflow Studio、JSON として直接、または AWS Cloud Development Kit (AWS CDK)を使用して、さまざまな方法でステートマシンを作成できます。Apache Airflow DAGsは Python で記述されます。
+ Step Functions では、ワークフローが実行されていない場合、料金は発生しません。Amazon MWAA では、DAG が実行されていない場合でもコストが発生します。