バッチ処理の設計
令和6年度 春期 システムアーキテクト試験 午後Ⅱ 問題 問2「バッチ処理の設計」についてである。
問題文
業務処理において,一定のリソースの下で大量データを効率的に処理するためにバッチ処理を選択することがある。バッチ処理では,大量データを処理すると処理時間が長い,オンライン処理との並行実施が必要,など様々な課題が生じる。システムアーキテクトには,業務上の特性や制約に基づいて課題を解決することが求められる。
課題を解決するために,例えば次のように,バッチ処理の設計を工夫する。
- 売上げデータの取込件数が多いので後続の締め処理に間に合わなくなる,という課題に対して,インメモリデータ処理やオフラインバッチ処理などの処理方式を選択してスループットを上げる。
- 現在のリソースではピークの日に全ての取引を処理しきれない可能性がある,という課題に対して,1 日の処理件数の上限を設け,業務上優先度が高い取引から処理し,上限を超過した取引を翌日の処理に持ち越すようにする。
- 画面で入力しているデータをバッチ処理が同時に更新しようとするとデータの競合が生じる可能性がある,という課題に対して,画面で入力したデータを一時保存し,バッチ処理終了後に非同期でデータベースに反映する。
また,エラーが発生しても処理を継続させる仕組みを組み込んでおくことも重要である。例えば,給与振込データ作成時に後続処理に影響を与えないために,エラーデータを読み飛ばして後で再処理できるようにする。再処理時には,二重更新させないために,処理済データを読み飛ばして未処理データだけ処理するようにする。
あなたの経験と考えに基づいて,設問ア~ウに従って論述せよ。
設問ア
あなたが携わったバッチ処理の設計について,対象となる業務と情報システムの概要,及び業務上の特性や制約について,800 字以内で述べよ。
設問イ
設問アで述べたバッチ処理について,どのような課題があったか。その課題を解決するために,どのような設計にしたか。工夫した点を中心に,800 字以上 1,600 字以内で具体的に述べよ。
設問ウ
設問アで述べたバッチ処理で,エラーが発生しても処理を継続させるようにするために,どのような仕組みを組み込んだか。そのように設計した理由とともに,600 字以上 1,200 字以内で具体的に述べよ。