良いバッチ処理の設計について調べ中なので、基本からまとめていきます。
随時追記していこうと思うので、ほんとにまだメモです。
バッチ処理の構成の基本
バッチ処理は以下の3つのパートに分類して考えるのが基本です。
- 1.入力
- 2.加工
- 3.出力
設計の時に意識すると綺麗に切り分けられそうです。
切り分けた部分を再利用できるように考えておくと良いです。
バッチ処理の課題の基本
2016年現在、バッチ処理に関して以下の課題が増大し続けています。
この課題を改善できる設計を考えていく必要があります。
- データ量の増大
- データの種類の増大
再実行の基本
エラー等で途中で終了しても簡単に再実行できるように設計する事が大事です。
その為の工夫に以下のようなものがありそうです。
- トランザクションを利用して、処理が全て終了してからコミットする。
- 時間のかかる処理は分割して、中間データを出力する。
ログ管理の基本
バッチ処理はログを残さないと処理の結果が分かりずらいです。見やすいログを残すのが大事です。
- 一か所に集める。
- 独自フォーマットを作らない。
パフォーマンス維持の基本
バッチ処理はループが多いと思うので、ちょっと遅い処理が大きな問題になります。
- できるだけメモリ上で処理する。(ディスクアクセスを減らす)
- 性能の高いディスクを選ぶ。
バッチ処理用のフレームワーク
- jBatch … Javaのバッチフレームワーク。
バッチ管理に使えそうなツール、サービス
- ジョブスケジューラ
- AWS Elastic Beanstalk (https://aws.amazon.com/jp/elasticbeanstalk/)
(分かった事を更新していきます)