Amazon SWF -シンプルワークフロー

  • Amazon SWF を使用すると、分散コンポーネント間で作業を調整するアプリケーションを簡単に構築できます。
  • SWF は、分散コンポーネントを調整するためのプログラミングモデルとインフラストラクチャを提供することにより、非同期および分散アプリケーションの開発を容易にし、信頼性の高い方法で実行状態を追跡および維持します。
  • SWF は次のことを行います
    • ワークフローとそのコンポーネントパーツに関するメタデータを格納します。
    • 作業者にタスクを格納し、ワーカーが必要になるまでキューに入れます。
    • クラウドまたはオンプレミスのいずれかで実行できる作業者にタスクを割り当てます。
    • ワークフローの実行と関連付けられた作業者の間で情報をルーティングします。
    • タスクに対する作業者の進捗状況を追跡し、構成可能なタイムアウトを設定します。
    • 永続的な方法でワークフローの状態を維持
  • SWF は、アプリケーション全体のタスクを調整するのに役立ちます。アプリケーションの論理的な流れに従ってタスク間の依存関係、スケジューリング、並行性を管理する必要があります。
  • SWF は、タスクの実装を完全に制御し、進行状況の追跡や状態の維持など、根本的な複雑さを心配することなく調整します。
  • SWF は、アプリケーションが個々のコンポーネントの障害に対して弾力性のある、実装、デプロイ、スケーリング、および個別に変更できるように、永続性のある方法でワークフローの状態を追跡および維持します。
  • SWF は、さまざまなアプリケーション要件をサポートする機能を提供し、メディア処理、Web アプリケーションのバックエンド、ビジネスプロセスのワークフロー、分析パイプラインなど、タスクの調整を必要とするユースケースの範囲に適しています。

シンプルワークフローのコンセプト

SWFコンセプト

  • ワークフロー
    • SWF の基本的な概念は、ビジネスプロセスの自動化であるワークフローです。
    • ワークフローは、アクティビティを調整するロジックと共に、いくつかの目的を実行する一連のアクティビティです。
  • ワークフローの実行
    • ワークフローの実行は、ワークフローの実行中のインスタンスです。**
  • ワークフローの履歴
    • SWF は、ワークフローの履歴における各ワークフローの実行の状態と進行状況を維持し、アプリケーションの状態を永続的な方法で保存する必要がなくなります。
    • ワークフローの実行に関するすべての情報がワークフロー履歴に格納されるため、アプリケーションはステートレスになることができます。
    • 各ワークフローの実行について、履歴には、スケジュールされた活動の記録、現在の状態、およびその結果が表示されます。ワークフローの実行では、この情報を使用して次の手順を決定します。
    • 履歴には、実行中のワークフローを監視し、完了したワークフローを検証するために使用できる詳細な監査証跡が用意されています。
    • たとえば、ポーリング実行のワークフローの状態を変更しない操作は、通常、ワークフロー履歴には表示されません。
    • マーカーを使用すると、ユースケースに固有のワークフロー実行のワークフロー履歴に情報を記録できます。
  • ドメイン
    • 各ワークフローは、ドメインと呼ばれる AWS リソースで実行され、ワークフローのスコープを制御します。
    • AWS アカウントは複数のドメインを持つことができ、それぞれが複数のワークフローを含む
    • 異なるドメインのワークフローが相互に対話できない
  • アクティビティ
    • SWF ワークフローを設計するには、アクティビティを正確に定義し、名前、バージョン、タイムアウトなどの情報を含むアクティビティタイプとして SWF に登録する必要があります。
  • アクティビティタスクとアクティビティワーカー
    • アクティビティワーカーは、アクティビティタスクを受信して実行し、結果を返すプログラムです。アクティビティワーカーは、プログラムであっても、アクティビティワーカーソフトウェアを使用してタスクを実行する人であってもかまいません。
    • アクティビティタスクおよびそれらを実行するアクティビティワーカーは、
      • 同期または非同期での実行、複数のコンピュータ間での分散、地理的領域の異なる可能性、または同じコンピュータ上での実行が可能
      • 異なるプログラミング言語で書かれ、異なるオペレーティングシステムで実行される
      • 長時間実行されている、または失敗する可能性がある、タイムアウトの再起動が必要な、またはスループットと待ち時間が変化する場合に完了する
  • ディサイダー
    • ディサイダーは、ワークフローの調整ロジックを実装します。
    • ディサイダーは、アクティビティタスクをスケジュールし、アクティビティワーカーに入力データを提供し、ワークフローの進行中に到着したイベントを処理し、目的が完了したときにワークフローを終了 (または終了) します。
    • ディサイダーは、SWF から決定タスクを受信し、決定と共に SWF に応答することによってワークフローを指示します。決定は、アクティビティタスクをスケジュールするか、アクティビティタスクの実行を遅らせるためにタイマを設定し、すでに進行中のアクティビティタスクのキャンセルを要求することができるワークフローの次のステップであるアクションまたはアクションのセットを表し、ワークフローを完了または終了します。
  • ワーカーと Deciders は両方ともステートレスであり、必要に応じて追加の作業者と Deciders を追加するだけで、トラフィックの増加に対応できます。
  • SWF サービスの役割は、ディサイダー、アクティビティワーカー、およびワークフロー管理者などの関連するエンティティ間でデータを交換するための信頼性の高い中央ハブとして機能することです。
  • アクティビティワーカーとディサイダーの両方がタスク(アクティビティタスクと決定タスク)を受け取る仕組みは、SWFをポーリングすることです。
  • SWF は、”長いポーリング” を可能にする、要求は、ネットワークトラフィックと不必要な処理を減らすために、必要に応じて最大60秒間開いて開催されます
  • SWF は、各デシジョンタスク (現在のワークフロー実行履歴のコピー) を含めることによって、ワークフローの状態の決定を通知します。ワークフローの実行履歴はイベントで構成され、イベントがタスクの完了、タスクがタイムアウトしたことの通知、または設定されたタイマの有効期限など、ワークフローの実行状態の重大な変更を表します。以前のワークフローの実行。履歴は、ワークフローの進行状況の完全な、一貫性のある、権威のあるレコードです。

ワークフローの実装と実行

  1. ワークフローの処理ステップを使用して、アクティビティワーカーを実装します。
  2. ワークフローの調整ロジックを使用してディサイダーを実装します。
  3. アクティビティワークフローを SWF に登録します。
  4. アクティビティワーカーとディサイダーを開始します。開始されると、ディサイダーとアクティビティワーカーは、タスクの Amazon SWF のポーリングを開始する必要があります。
  5. ワークフローの1つ以上の実行を開始します。各実行は独立して実行され、独自の入力データセットを提供できます。
  6. 実行が開始されると、SWF は最初の決定タスクをスケジュールします。応答では、決定は、アクティビティタスクを開始する決定の生成を開始します。実行は、決定が実行を終了する決定を下すまで続きます。
  7. ワークフローの実行を表示および追跡する

AWS認定試験の練習問題

  • 質問はインターネットから収集され、答えは自分の知識と理解に基づいてマークされます(これはあなたと異なる場合があります)。
  • AWSサービスは毎日更新され、回答と質問はすぐに時代遅れになる可能性がありますので、それに応じて調査してください。
  • AWSのアップデートのペースを追うためにAWS試験の質問は更新されないため、基礎となる機能が変更されても質問が更新されないことがあります。
  • さらなるフィードバック、ディスカッション、修正を可能にします。
  1. Amazon SWF は何のために立つか。
    1. 単純な Web フロー
    2. 単純なワークフロー
    3. 簡易ワイヤレスフォーム
    4. 単純な Web フォーム
  2. Amazon SWF に関しては、ワークフロー内の調整ロジックは、____ と呼ばれるソフトウェアプログラムに含まれています。
    1. ハンドラ
    2. ディサイダー
    3. コーディネーター
    4. ワーカー
  3. 次の使用例のうち、単純なワークフローサービス (SWF) と Amazon EC2 が適切なソリューションであるかどうか。2つの回答を選択
    1. センサーの分散プラットフォームから1時間あたり数千のデータポイントを収集するためにエンドポイントとして使用する
    2. e コマース web サイトのマルチステップおよびマルチ意思決定のチェックアウトプロセスの管理
    3. 分散型および監査可能なビジネス・プロセスの実行のオーケストレーション
    4. ビデオトランスコーディングジョブの実行をトリガするための SNS (簡易通知サービス) エンドポイントとしての使用
    5. web アプリケーションの分散セッションストアとして使用する
  4. Amazon SWF は、ユーザーの ___ を助けるように設計されています。
    1. グラフィカルユーザーインターフェイスの対話を設計する
    2. ユーザー ID と承認の管理
    3. Web コンテンツを保存する
    4. 分散され、フォールトトレラントな同期および非同期タスク調整
  5. Amaozn SWF で “ドメイン” は何を指していますか?
    1. 内部のタスクのみが相互に通信できるセキュリティグループ
    2. 特殊なタイプのワーカー
    3. 関連するワークフローのコレクション
    4. Amazon SWF サービスの DNS レコード
  6. あなたの会社は、カスタムファインテックの強化を伴って、ファッションを組み合わせたユニークなスキーヘルメットを顧客から製作しました。スキー場に自分の個性を見せて、ヘッドアップディスプレイにアクセスできます。 GPS のリアビューカメラ、ヘルメットに埋め込むことを望む技術革新 現在の製造プロセスは、データが豊富で複雑なものです。ヘルメットの組み立てに使用されるカスタム電子機器と材料が最高レベルになるようにするためのアセスメントも含まれます。アセスメントは、 待ち時間の短いネットワーキングを持つサーバのクラスタ全体で CUD を使用して GPU を使用するカスタムエレクトロニクスの障害モード ハイブリッドアプローチを使用して既存のプロセスを自動化し、アーキテクチャが時間の経過とともにプロセスの進化をサポートできるようにするには、どのようなアーキテクチャが必要ですか?[PROFESSIONAL]
    1. AWS Data Pipeline を使用して、データおよびメタデータと評価の移動を管理します。プレースメントグループ内の G2 インスタンスの自動スケーリンググループを使用します。(人の評価の混在を含んでいる)
    2. Amazon Simple Workflow(SWF)を使用して、アセスメント、データおよびメタデータの移動を管理します。プレースメントグループ内の G2 インスタンスの自動拡張グループを使用します。(GPUおよび低遅延ネットワークによる人的および自動評価)
    3. Amazon Simple Workflow(SWF)を使用して、データおよびメタデータのアセスメントの移動を管理します。 SR-IOV(シングルルート I/O 仮想化)を備えた C3 インスタンスのオートスケーリンググループを使用します。(C3 と SR-IOV は GPU を提供しませんが、拡張ネットワークを有効にする必要があります)
    4. AWS Data Pipeline を使用してデータとメタデータの移動を管理し、評価では C3 の自動スケーリンググループを SR-IOV(シングルルート I/O 仮想化)で使用します。(人の評価の混在を含んでいる)
  7. あなたのスタートアップは、あなたの最初の日に1日に10件の注文を期待する6か月を要するいくつかの注文で生産するのに平均3-4日必要なパーソナライズされたガジェットを販売する注文履行プロセスを実装したいと考えています。 6ヵ月後には1日あたり1000件、12ヵ月後には1万件の注文があります。来る注文は、生産品質管理パッケージの発送と支払い処理のために、製造工場に派遣された一貫性のある男性をチェックします。製品がプロセスのいずれかの段階で品質基準を満たしていない場合、従業員はプロセスにステップを繰り返させる可能性があります。顧客は、注文状況や支払の失敗などの重要な問題について電子メールで通知されます。お客様のケースアーキテクチャーには、お客様のデータとオーダー用の RDS MySQL インスタンスを使用して、お客様の Web サイト用の AWS Elastic Beanstalk が含まれています。電子メールが確実に配信されるようにしながら、注文の履行プロセスをどのように実装できますか? [PROFESSIONAL]
    1. Elastic Beanstalk アプリケーションサーバーにビジネスプロセス管理アプリケーションを追加し、注文状態を追跡するために ROS データベースを再利用して、Elastic Beanstalk インスタンスの1つを使用して顧客に電子メールを送信します。 (BPM の代わりに SWF を使用します)
    2. アクティビティワーカーの Auto Scaling グループを持つ SWF と、min / max = 1の別の Auto Scaling グループのディサイダーインスタンスを使用します。顧客に電子メールを送信するには、ディサイダーインスタンスを使用します。 (電子メールを送信するディサイダーは信頼できない可能性があります)
    3. アクティビティワーカーの Auto Scaling グループを持つ SWF と、min / max = 1の別の Auto Scaling グループのディサイダーインスタンスを使用します。顧客に電子メールを送信するには、SESを使用します。
    4. すべてのプロセス・タスクを管理するには、SQSキューを使用します。タスクをポーリングして実行する EC2 インスタンスの自動スケーリンググループを使用します。顧客に電子メールを送信するには、SESを使用します。 (ステップを繰り返す能力を提供しない)
  8. Amazon EC2 で SWF の適切なユースケースを選択しますか? (2つ選択)
    1. Amazon S3 および Amazon EC2 を使用したビデオエンコード。このユースケースでは、大きなビデオが Amazon S3 にチャンクでアップロードされます。アプリケーションは、各ビデオファイルが1つのワークフロー実行として処理されるワークフローとして構築されます。
    2. Amazon Mechanical Turk を使用して大規模な製品カタログを処理する。大きなカタログのデータを検証している間は、カタログ内の製品がバッチ処理されます。異なるバッチを同時に処理できます。
    3. Amazon EC2、SQS、およびSimpleDBを使用した注文処理システム。 SWF通知を使用して、EC2で実行される注文処理システムを編成します.HTMLを介して送信される通知は、在庫システムや配送サービスなどの関連コンポーネントでリアルタイム処理をトリガーできます。
    4. SQS(Simple Queue Service)エンドポイントとして使用して、ビデオトランスコードジョブの実行をトリガーします。
  9. Amazon SWF にアクティビティを登録する場合は、以下の情報を指定します。
    1. 名前
    2. タイムアウト値
    3. ドメイン
    4. バージョン
  10. Amazon SWF に関しては、使用例に固有のワークフロー実行のワークフロー履歴に情報を記録する場合があります。____ を使用すると、ワークフローの実行履歴に情報を記録して、カスタムまたはシナリオ固有の目的に使うことができます。
    1. マーカー
    2. タグ
    3. ハッシュキー
    4. イベント
  11. SWF に関する次のステートメントのうち、どれが当てはまりますか。3つの回答を選択します。
    1. SWF タスクは一度割り当てられ、複製されることはありません
    2. SWF には、ワークフローストレージ用の S3 バケットが必要です。
    3. SWF ワークフローの実行は1年まで持続できます。
    4. SWF は、タスク割り当ての SNS 通知をトリガーします
    5. SWF は ディサイダー とワーカーを使用してタスクを完了する
    6. SWF には、ドメインごとに少なくとも1つの EC2 インスタンスが必要です

リファレンス


Jayendra’s Blog

この記事は自己学習用に「AWS SWF – Simple Workflow Overview – Certification(Jayendra’s Blogより)」を日本語に訳した記事です。