

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

# AWS Flow Framework 基本的な概念: 信頼性の高い実行
<a name="awsflow-basics-reliable-execution"></a>

非同期分散アプリケーションは、次のような従来のアプリケーションでは発生しない信頼性の問題に対処します。
+ 非同期分散コンポーネント (例: リモートシステムでの長時間コンポーネント) 間で*信頼性の高い通信を提供する*方法。
+ 特に長時間稼働アプリケーションなど、コンポーネントでエラーが発生するか、切断された場合に*結果を紛失しない*方法。
+ *エラーが発生した分散コンポーネントに対処する*方法。

アプリケーションは、 AWS Flow Framework と Amazon SWF を使用してこれらの問題を管理することができます。長時間稼働しており、高い演算負荷や、ユーザーによる操作で非同期タスクが実行されている場合でも、信頼性が高く、予測可能な方法でワークフローを実行する Amazon SWF のメカニズムについて説明します。

## 信頼性の高い通信を保証する
<a name="awsflow-basics-reliable-execution-communication"></a>

AWS Flow Framework は、Amazon SWF を使用してタスクを分散アクティビティワーカーにディスパッチし、その結果をワークフローワーカーに返すことで、ワークフローワーカーとそのアクティビティワーカー間の信頼性の高い通信を提供します。Amazon SWF は、次の方法を使用して、ワーカーとそのアクティビティ間の信頼性の高い通信を確実にします。
+ Amazon SWF は、スケジュールされたアクティビティとワークフロータスクを永続的に保存し、一度だけ実行されることを保証します。
+ Amazon SWF では、アクティビティタスクを正常に実行して有効な結果を返すか、タスクが失敗したことをワークフローワーカーに通知することができます。
+ また、Amazon SWF は、完了した各アクティビティの結果を永続的に保存するか、失敗したアクティビティでは、エラー情報を保存します。

 AWS Flow Framework 次に、 は Amazon SWF からのアクティビティ結果を使用して、ワークフローの実行を続行する方法を決定します。

## 結果を保持する
<a name="awsflow-basics-reliable-execution-history"></a>

### ワークフロー履歴の維持
<a name="maintaining-workflow-history"></a>

ペタバイトのデータのデータマイニングオペレーションを実行するアクティビティは、完了するのに*数時間*かかるのに対し、複雑なタスクを行うよう人間のワーカーに指示するアクティビティは*数日間*、場合によっては*数週間*かかる場合があります。

このようなシナリオに対応するために、 AWS Flow Framework ワークフローとアクティビティが完了するまでに任意の時間がかかる場合があります。ワークフローの実行*には最大 1 年の制限*があります。信頼性の高い方法で長時間稼働プロセスを実行するには、継続的なワークフローの実行履歴を永続的に保存するメカニズムが必要です。

は、各ワークフローインスタンスの実行履歴を保持する Amazon SWF に応じて、これ AWS Flow Framework を処理します。ワークフローの履歴には、すべてのワークフローやアクティビティタスクのスケジュールや完了など、ワークフローに関する信頼性の高い完全な進行状況の記録が含まれます。

AWS Flow Framework アプリケーションは通常、ワークフロー履歴を直接操作する必要はありませんが、必要に応じてアクセスできます。ほとんどの場合、アプリケーションは、フレームワークからバックグラウンドでワークフロー履歴にアクセスできます。ワークフロー履歴の詳細については、「*Amazon Simple Workflow Service デベロッパーガイド*」の「[Workflow History](https://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dg-basic.html#swf-dev-about-workflow-history)」(ワークフロー履歴) を参照してください。

### ステートレスな実行
<a name="stateless-execution"></a>

実行履歴を使用することで、ワークフローワーカーを*ステートレス*にできます。ワークフローワーカーまたはアクティビティワーカーの複数のインスタンスがある場合、どのワーカーも任意のタスクを実行できます。Amazon SWF からタスクを実行する必要のあるステート情報はすべてワーカーに送信されます。

このアプローチにより、ワークフローの信頼性は高まります。たとえば、アクティビティワーカーが失敗しても、ワークフローをやり直す必要はありません。ワーカーを再起動するだけで、障害が発生したタイミングに関係なく、タスクがリストに入るとそのタスクリストがポーリングされ、処理されます。2 つ以上のワークフロー、アクティビティワーカーを別々に使用して、ワークフロー全体の耐障害性を強化します。ワーカーのいずれかに失敗した場合、それ以外のワーカーは、ワークフローの進行を妨げることなく、スケジュールされたタスクに対応し続けます。

## エラーが発生した分散コンポーネントに対処する
<a name="awsflow-basics-reliable-execution-errors"></a>

アクティビティは一時的な切断などの一時的な理由でエラーになることが多いため、失敗したアクティビティを処理する一般的な方法として、アクティビティを再試行します。再試行プロセスを処理せずに、複雑なメッセージを引き渡す戦略を実装することによって、アプリケーションで AWS Flow Frameworkを使用することができます。この機能では、失敗したアクティビティを再試行する複数のメカニズムや、ワークフローでタスクの分散的な非同期実行を使用する組み込みの例外処理を行うメカニズムを使用できます。