バッチ処理は、一定のまとまりにしたデータや作業を、一括して実行する方式です。売上の集計、帳票の作成、データの変換など、繰り返す処理をまとめて進める場面で使われます。
担当者が最初に押さえたいのは、いつ起動するかだけでなく、どのデータを対象にし、どこまで終われば完了かです。この記事では、バッチ処理の基本と、運用を引き継ぐときの確認点を説明します。
バッチ処理とジョブの関係
AWSの説明では、バッチ処理は、繰り返す大量のデータ処理をまとめて実行する方法として整理されています。夜間に実行する例もありますが、「夜に動くこと」だけが定義ではありません。AWS「バッチ処理とは」
実行する作業の単位をジョブと呼ぶことがあります。たとえば、データを取り込む、形式を変える、集計する、帳票を出すという作業を、複数のジョブへ分ける構成が考えられます。用語や実行単位は利用する仕組みで確認してください。
バッチファイルという名前のファイルを使う場合もありますが、バッチ処理の方式が特定のファイル形式だけに限られるわけではありません。
対象データと締め時刻を決める
架空の売上集計を例に考えます。「昨日の売上を集計する」だけでは、昨日のどの時刻までか、取消を含めるか、遅れて届いたデータをどうするかが曖昧です。
次のように条件を記録すると、再実行や確認で使えます。
| 項目 | 仮の記載例 |
|---|---|
| 対象期間 | 日本時間の前日0時から当日0時の直前まで |
| 入力 | 対象期間に確定した売上データ |
| 除外 | 集計時点で取消済みのもの |
| 遅延分 | 次回に自動加算せず、担当が訂正手順を確認 |
| 出力 | 日付単位の集計結果と処理件数 |
これは業務条件を説明するための仮例です。実際には、業務担当者と締め条件を合意してください。実行日時とデータの対象日時を別に持つと、過去分を処理するときも条件を説明しやすくなります。
前後の作業との依存関係を整理する
集計が始まっても、入力ファイルがまだ届いていなければ、期待した結果になりません。単に時刻をずらすだけでなく、開始してよい条件を決めます。
たとえば、入力の到着確認、必要な件数の確認、先行処理の正常終了を開始条件として検討できます。反対に、後続の帳票配布などは、集計が失敗した場合に進めてよいかを決めます。
処理時間が延びた場合、次回の実行と重なってよいかも確認してください。同じ対象を二つの処理が更新するなら、その扱いを設計へ戻して明確にします。
失敗後にどこから再開するかを決める
バッチ処理では、途中まで終わった後に失敗する場合を考えておく必要があります。最初から再実行した結果、同じ内容を二重登録するなら、単純な再実行はできません。
本記事では、処理対象を識別する値、完了した範囲、残った範囲、再実行前の確認を手順に含めることを勧めます。再実行しても同じ結果にできる設計や、処理済みを判別する方法などを、業務に合わせて検討します。
仮に100件のうち60件を登録して失敗したなら、「失敗」という結果だけでなく、どの60件かを追えるかが重要です。記録できていなければ、残り40件だけ進めてよいと判断できません。
正常終了と業務上の完了を確認する
プログラムが正常終了しても、入力が0件だった、出力先が違ったという場合は、期待する業務が完了していない可能性があります。
確認では、実行結果に加え、入力と出力の件数、対象期間、未処理の残件、処理時間を見ます。許容する差や0件の扱いをあらかじめ決め、判断できない場合の連絡先を残してください。
運用へ渡す記録は、開発から運用への引き継ぎと合わせて整理できます。まず一つのバッチについて、対象・開始条件・完了条件・再実行条件を一枚にまとめましょう。開発や運用の体制づくりは、システムエンジニアリングサービスをご確認いただけます。