LoginSignup
0
1

AWS StepfunctionsとSWFの違い

Posted at

はじめに

AWS SAPの勉強中、SWFについて不明瞭だったこと、
StepfunctionsとSWFの違いが理解できていなかったことから、
これらについて勉強しました。
ドキュメントやちょっと動かしてみて得られた知見を共有します。

想定読者

SWFについて不明瞭な人。

まず、SWFとは

Amazon SWF(Simple Workflow Service)とは、フルマネージド型のワークフローサービスです。
処理のステート管理やタスク間のコーディネートが行える、
Stepfunctionsの前身といえるサービスです。

SWFはワークフローを作成し、タスクや状態を管理するものであり、
実際に処理をするワーカーと呼ばれるものが別途必要です。

ワーカーとは、SWFエンドポイントに通信できる
任意のコンピューティングデバイス(EC2、オンプレ等)で動作するプログラムのことです。
以下の言語で開発できます。

  • 開発言語
    Java、.NET、Node.js、PHP、PHP バージョン 2、Python および Ruby

また、ワーカーには種類があります。
SWFを実行する場合には、それぞれ実装する必要があります。

  • ワークフロースターター
    ワークフローを開始するもの。
    例として、eコマースにおけるウェブサイトに相当。
  • ディサイダー
    ワークフローでアクティビティタスクの流れを制御するもの。
    ワークフローの履歴を分析し、次のステップを決定する。
  • アクティビティ
    ワークフローでタスクを実行するもの。

現在では、新規アプリケーションの開発にはStepfunctionsの利用が推奨されており、Stepfunctionsでニーズが満たせない場合にSWFを検討するよう公式が明言しています。
よくある質問 - Amazon SWF

SWFを検討するケース

先に記した通り、基本的にはStepfunctionsで問題ないです。
しかし、下記の様なSWFを検討するケースもあります。

  • プロセスにおいて介入する外部信号が必要な場合
    例えば、ワークフローの途中に人間の命令が必要な場合。
    eコマースにおける注文処理にて、
    ユーザーから注文キャンセルを受け取る場合などが例に挙げられる。
    シグナル - Amazon SWF
    その他にも、人間の判断が必要なもの(承認系とか)であれば、SWFを検討できる。

  • 結果を親に返す子プロセスを起動する場合
    これはStepfunctionsでも親ステートマシンから子ステートマシンを呼び出すことによって、
    実現出来る気がするんですが、どうなんでしょうか…。
    AWS Step Functions のよくある質問 - SWFとの使い分け

おわりに

まず、SWFではワーカーの知識・実装が必要であるため、お手軽にできるものではないなと感じました。AWSコンソール上で完結しないので、軽く実装してみよっかなができないところも微妙ポイントです。開発環境を整えて、実装したプログラムをデプロイする必要があります。

Stepfunctionsでは、Lambdaを使ってサーバーレスにしたり、ユースケースに応じたテンプレートが存在したりするのでなおさらSWFの重さを感じました。
ステートマシンのテンプレート

また、Stepfunctionsはフローが視覚化されていますが、SWFでは視覚化されていません。
実行されたイベントがログ形式で表示されるのみなので、Stepfunctionsと比較してしまうと直感的ではありません。
SWFの実行画面

以上から、基本的にはStepfunctionsを使っておけば良いということが理解できました。
資格試験の対策としての勉強でしたが、いい勉強になりました。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1