2023/10/30
JP1/AJS3の経験を持つエンジニアがAWS Step Functionsを理解する方法
目次
はじめに
こんにちは、システムエンジニアのキュウです。私たちの日々の業務では、AWSを使用して、複数のサーバーレスタスクをワークフロー形式で実行することも求められます。そのニーズに合わせて、AWS Step Functionsを使用してさまざまなプロセスを実行しています。
なぜこの記事を書いたのか
初めてAWS Step Functionsに触れたとき、どこから始めればいいのか分からず、戸惑いました。私は前職でJP1/AJS3の使用経験があり、「似たような管理ツールではないのか」と思ってAWS Step Functionsのドキュメントを調べたところ、「複数タスクの実行管理において、確かにJP1/AJS3との共通点がある」と気付きました。
JP1/AJS3を使った経験のある開発者にとって、以下の3つの基本的なタスク管理方法をJP1/AJS3とAWS Step Functionsで比較すると理解しやすいと考えました。
3つの基本的なタスク管理方法
複数のタスクをワークフロー形式で実行する場合、シーケンシャルタスク・並列タスク・条件分岐は最も基本的な管理方法です。
1. シーケンシャルタスク(Sequential Tasks):
シーケンシャルタスクとは前のタスクの完了を待つ必要があるタスクです。
JP1/AJS3では、ジョブネットを使用してシーケンシャルタスクを定義します。ジョブネット内でタスクの実行順序に従ってジョブを作成し、各ジョブは先行のジョブが完了した後に実行されます。
AWS Step Functionsでは、ステートマシン内にタスクを配置してシーケンシャルタスクを定義します。ステートマシン内のタスクは上から順に実行されます。
ポイント:JP1/AJS3とAWS Step Functionsの両方とも、先行タスクを定義する形でシーケンシャル処理を実現します。
2. 並列タスク(Parallel Tasks):
JP1/AJS3では、ジョブネット内の複数のジョブを並列グループにまとめて実行します。これらのタスクは同時に実行され、後続のタスクは並列グループ内のすべてのタスクが完了するのを待ちます。
AWS Step Functionsでは、ステートマシン内でParallelフローを使用して並列タスクを定義できます。Parallelフロー内すべてのブランチのタスクが完了すると、後続のタスクが実行されます。
ポイント:JP1/AJS3とAWS Step Functionsの両方とも、同じ前提条件を持ち、互いに依存しないタスクセットを定義して、並列処理を実現します。
3. 条件分岐(Conditional Branching):
JP1/AJS3は条件分岐をサポートし、ジョブで条件文を使用して次に実行するジョブを決定できます。条件の結果に応じて、異なるパスにフローを導くことができます。
AWS Step Functionsでは、Choiceステートを使用して条件分岐を実現できます。Choiceステートは条件に基づいて異なるステートに制御フローを導くことができます。条件式を定義し、その条件式の結果に基づいてステートマシンの制御フローを異なるブランチに導くことができます。
ポイント:条件が成立するかどうかを判断するためのタスクが必要であり、その結果に基づいて後続の実行対象を決定する必要があります。
まとめ
AWSのサービスを活用するアプリケーションにおいては、AWS Step FunctionsはAWSエコシステムとシームレスに統合されており、さまざまなAWSサービスと連携できるため、AWS Step Functionsを選択することが最適な選択肢と言えます。
AWS Step FunctionsとJP1/AJS3は、タスクの管理方法において基本的に同じアプローチをしていることを理解して使っていくと、迷うことなくAWS Step Functionsを学び始めることができます。