AWSのジョブ管理とは?AWS Step Functionsとジョブ管理ソフトウェアで効率的に管理
クラウド上でのシステム構築を検討している方の中で、重要なデータを期間内にまとめて処理するバッチ処理制御の仕組みを多くの方が必要としています。そのような場合にお勧めなのがジョブ管理です。
しかし、オンプレミスで運用していたようなジョブ管理をどのようにクラウド上のシステムに実装するかは大きな課題の一つです。
例えばAmazon Web Services(以降、AWSと略す)ではAWS Step Functions(以降、Step Functionsと略す)のようにワークフローを使ってアプリケーション間の連携を行うサービスが提供されていますが、他のサービスとどのように連携すれば従来のジョブ管理に近いものを実現できるのか疑問に思われる方が多いかもしれません。
一方、サードパーティー製のジョブ管理ソフトウェアの活用も考えられます。しかし、こちらもオンプレミスでの実績は多いのですが、AWS上でも適用できるか疑問です。
そこで疑問を解消していただくため、ここではAWS上でジョブ管理を実装する方法を3パターンご紹介します。
【目次】
- 1. ジョブ管理とは?
- 2. Step Functionsでジョブ管理をする場合
- 2.1. Step Functionsとは?
- 2.2. 複数のサービスを統合することでジョブ管理を実現
- 2.3. 考慮すべきポイント
- 3. ジョブ管理ソフトウェアを利用する場合
- 3.1. ジョブ管理ソフトウェアとは?
- 3.2. AWS CLIやREST APIを使用してAWSサービスのジョブを管理
- 3.3. 考慮すべきポイント
- 4. Step Functionsとジョブ管理ソフトウェアの比較
- 5. Step Functionsとジョブ管理ソフトウェアを連携させる場合
- 5.1. それぞれの長所を活かす
- 5.2. 考慮すべきポイント
1. ジョブ管理とは?
ジョブ管理とはその名の通り、システムを運用してくうえで必要なジョブを管理することです。ここでいうジョブとは例えば、”売上情報の集計処理”や”顧客情報データベースの更新”など意味のある処理単位を指します。特に基幹系システムでは重要かつ膨大な情報を管理するジョブを多大な時間・負荷をかけて実行するため、システムへの影響が抑えられる夜間や休日などの時間帯にまとめて処理するような管理が必要になってきます。
2. Step Functionsでジョブ管理をする場合
2.1. Step Functionsとは?
Step Functionsはワークフローを使ったローコード・ノーコード開発で、AWSが提供する複数のサービスを連携するためのマネージドサービスです。
Step Functionsについてはこちらの記事で解説していますのでぜひご覧ください。
2.2. 複数のサービスを統合することでジョブ管理を実現
Step FunctionsはAWS Lambda、AWS Batch、Amazon ECS、AWS Systems Manger(以降、Lambda、Batch、ECS、SSMと略す)といったサービスと連携することでジョブ管理と同じような機構を実装できます。そのためにはまず、ジョブの特性に合わせてジョブの実行先のサービスを決定する必要があります。
例えば、複数のバッチプログラムをそれぞれジョブとして定義し、ジョブフローで順序制御を行うとします。その場合は一般的にバッチプログラムの特性に応じて以下のように実行環境を選択します。(以下の基準はあくまでも一例です。)
- 短時間で実行が完了するバッチプログラム
Lambdaの関数に移行 - 長時間の実行が必要なバッチプログラム
コンテナイメージ内に移行し、Amazon ECRのようなコンテナイメージレジストリサービスに登録 - 仮想マシン上でのみ動かせるバッチプログラム
Amazon EC2(以降、EC2と略す)のインスタンス上に構築した実行環境に移行
Loading component...
Loading component...
2.3. 考慮すべきポイント
Loading component...
3. ジョブ管理ソフトウェアを利用する場合
3.1. ジョブ管理ソフトウェアとは?
Loading component...
3.2. AWS CLIやREST APIを使用してAWSサービスのジョブを管理
Loading component...
3.3. 考慮すべきポイント
Loading component...
Loading component...
4. Step Functionsとジョブ管理ソフトウェアの比較
以上を踏まえて、AWS上のジョブ管理をStep Functionsを用いて実装した場合とジョブ管理ソフトウェアを使った場合とでのメリット・デメリットをまとめました。



