バッチ処理の設計
こんにちは、すーじーです。システムアーキテクト試験の午後Ⅱ、私が選択した問2、バッチ処理の設計について振り返ります。
まず、大前提にはなりますが、システムアーキテクトの午後Ⅱ試験は、「どのような設計を行なったのか」ということを中心に記述する内容がほとんどです。過去問を見ても、大体そうなっています。
そして、これは他の高度区分の試験と共通しますが、問題文中に例文が書かれているので、それをヒントにし、なぞっていきます。
ただし、IPAが、「問題文をなぞっただけの論文が散見された」というコメントを毎年のように公表していることもあり、ただ問題文中の言葉、例をそのまま使うと何のオリジナリティもなく、説得力に欠けるため、ヒントにするのはいいですが、自分の経験を踏まえて記述する必要があります。
問題文中の例をヒントにするのはいいが、自分の言葉で書かないと説得力に欠ける。
本当にシステムアーキテクトとして経験があるのか?と疑われてしまう。
どうしても自分の経験と当てはめられない、というピンチに陥ることもあると思います。その場合はある程度近い経験を探し出し、創作していくしかないのですが、そのやり方はプロ講師の講義や、参考書を見て頂いた方がいいでしょう。
設問ア バッチ処理の対象となる業務と情報システムの概要、及び業務上の特性や制約
私は元々、金融のSIerとして従事していました。扱っていたのは、大規模なバッチトランザクションのシステムばかりです。
オンラインシステムの設計、開発等もしたことはありますが、ほぼバッチでした。かつ、自由度も低く、新しい方式などにチャレンジすることはほぼできなかったので、論述のネタとしてあまりいいもものはありませんでした。
そのため、社内SEとしてバッチシステムを構築した経験を基に論文を作りました。その方が記憶にも新しいですしね。
※試験は2ヶ月前のため、思い出しながらかつメモもほとんど取っていなかったので薄い内容にはなってしまいますが、私が論述した内容を箇条書きにします。
(業務と情報システムの概要)
・基幹システムと自社製品を販売するECサイトの連携部分のバッチ処理
・連携するデータは、主に受注と在庫情報。基幹システムの在庫情報を連携し、ECサイトから受注を受けたら在庫を減らす。
・使用しているDBはOracle
→具体的な社名やミドルウェア名は避けた方がいいということなので、論文内ではOracleとは書かず
(業務上の特性や制約)
・基幹システムとはセキュリティ上、直で繋ぎにいけない(参照できない)ため、定期的にバッチ処理にてデータ連携している
・データの取得には基幹システムには負荷がかかるため、頻繁に処理を実施できない
設問イ バッチ処理の課題と、それを踏まえ工夫したこと
(バッチ処理の課題)
・ECサイトを担当するユーザーからは、処理の回数を増やして欲しいという要望があったが、処理回数を増やすのは基幹システムに負荷がかかるので難しい
→在庫データ連携処理から次の連携処理の間に、ECサイト以外の注文で引き当てされてしまった場合、基幹システム上の在庫とECサイト上の在庫に差異が出る。そうなると、お客さんが注文しようと思って購入しても、実際は在庫がないという事態が発生する。
→別の対応で、基幹システムでデータを取得する頻度を増やしたところ、基幹システムに負荷がかかり、他システムまで影響を及ぼしたトラブルがあった
(工夫したこと)
・現状、基幹システムの情報はView形式で格納されているが、View形式で参照すると遅い
①サブシステムに基幹システムの情報を基にしたMaterialized View(以下、MView)を新たに作成し、サブシステムからデータを取得する。MViewは定期的にリフレッシュ動作をしないといけないため、それもバッチ処理に組み込む。
②データ取得元をサブシステムにしたため、処理頻度も増やせる。
→①②の対応で、基幹システムに負荷がそこまでかからず、データ精度にも問題ないことはテストで確認済み
設問ウ エラー発生時に処理を継続させられるような仕組み
(組み込んだ仕組み)
・エラーが発生したら、情報システム部の担当者、ECサイトを担当しているユーザーに対してメールで通知する
・正常なデータは処理しないといけないため、エラーデータは別ファイルに吐き出し、正常データのみ処理を継続させる
・メール通知を受けた情報システム部の担当者は、エラー内容を確認し、ECサイト担当ユーザーに連携する
→例えば、顧客マスターに情報がない場合は、ユーザーにマスターを登録してもらい、再処理する
最後に
設問ウでもう少し具体的に言及できればもっとよかったと思います。決して時間が足りなかったわけではないのですが、いいネタが思いつかず、字数ギリギリになってしまいました。
もう少ししたらIPAからの解答、講評が発表されますので、それを待ちましょう。