太田さんによる某銀行のバッチについてのまとめ

とりあえずまとめてみた
149
Kenichiro Ota @oota_ken

やる夫で学ぶバッチ突き抜け原因分析をやってみるよ あくまで予測で本物じゃないからね

2011-03-20 07:15:27
Kenichiro Ota @oota_ken

やる夫:やらない夫ー、地震に続き某メガバンクでトラブルがあってお金の引き出しとかができなくなっているみたいだけど?

2011-03-20 07:16:33
Kenichiro Ota @oota_ken

やらない夫:そうなんだ。現在中の人は大変な状態だぞ。ところでなんでこんなことが起こるかって分析したことがあるか?

2011-03-20 07:17:05
Kenichiro Ota @oota_ken

やる夫:メガバンクのバッチはそもそも超高速のメインフレーム使っているからそんなこと起きるわけないと思っていたお。

2011-03-20 07:17:44
Kenichiro Ota @oota_ken

やらない夫:まず口座間の資金移動で実際何起こっているかを分析する必要がある。まあ、どういう処理をしているかだな。そこでボトルネックが分かってくるぞ。

2011-03-20 07:18:33
Kenichiro Ota @oota_ken

やらない夫:すごく単純化すると、両者の口座が普通預金であるとすると、口座Aから口座Bへの資金移動としよう。さらに簡単にするために、同一銀行内とする。

2011-03-20 07:20:05
Kenichiro Ota @oota_ken

やらない夫:処理口座Aの顧客のチェック(CIF)とんでもなくたくさん色々する。もっとも大きなものは注意コードつまり取引禁止かをチェックすることだ。新しいシステムだと銀行で一意だったりするけど、古いシステムだと店舗ごとでかつここで名寄せをするのでこれまた処理が重い。

2011-03-20 07:22:24
Kenichiro Ota @oota_ken

やる夫:そこは最速のメインフレームが使われるところかお。

2011-03-20 07:22:54
Kenichiro Ota @oota_ken

やらない夫:もちろん、あとどちらかっていうと、RDBじゃデータ構造的に向いていないとか処理性能がついていかないとかで階層型データベースとか使われていること多いな。

2011-03-20 07:23:49
Kenichiro Ota @oota_ken

やらない夫:ちなみに銀行のシステムはアーキテクチャー上は大体二つのハブを介してチャネル側と本体システム側は完全に分離されている。ただし、性能のために2つのハブの間にCIFとか使用頻度の高いシステムは配置される。

2011-03-20 07:25:44
Kenichiro Ota @oota_ken

やる夫:本体システムって言っても、フロント、ミドル、バックってさらに分離されているんだお。

2011-03-20 07:26:09
Kenichiro Ota @oota_ken

やらない夫:日計(俗にいう会計システム)や情報系も基幹系本体からは分離されている。

2011-03-20 07:27:35
Kenichiro Ota @oota_ken

やる夫:で、さっきの顧客確認の次は実際の資金移動かお?

2011-03-20 07:28:01
Kenichiro Ota @oota_ken

やらない夫:両者の口座確認をしたのち、資金移動に入るのだが、これまたその口座が属する店舗の各種情報チェック、今度は顧客だけでなく、口座の移動可能チェック(定期との合計額を見たり、マル優の限度額見たり)とかいろいろやった後、

2011-03-20 07:30:01
Kenichiro Ota @oota_ken

やる夫:ようやく、資金移動かお?

2011-03-20 07:30:27
Kenichiro Ota @oota_ken

やらない夫:資金移動自体も店舗内、店舗間、銀行間で相当違うんだけど、その後がえぐい。利息計算のし直し、まあ、これはいいだろう。

2011-03-20 07:31:19
Kenichiro Ota @oota_ken

やる夫:その後にも更にあるのかお?

2011-03-20 07:31:33
Kenichiro Ota @oota_ken

やらない夫:ポジション報告やAMLチェックとかがあるな。ポジション報告の場合、資金ポジション(口座の通貨ベースの持ち高)、金利ポジション(金利ベースの持ち高)、通貨ポジション(外貨の場合の各通貨ごとの持ち高)がそれぞれの外部システム用に作成する必要がある。

2011-03-20 07:33:40
Kenichiro Ota @oota_ken

やらない夫:今回の処理の遅延はこの外部システムの連携部分にボトルネックがあったのではないかと踏んでいるがあくまで予想だ・・・特に外貨からの振り込みの場合の通貨ポジションは連携が複数の店舗にわたるから間に処理性能の低いシステムがあると、遅延が発生しやすいな。

2011-03-20 07:35:35
Kenichiro Ota @oota_ken

やる夫:まだ処理はあるのかお。

2011-03-20 07:35:48
Kenichiro Ota @oota_ken

やらない夫:その後は会計システムに連携するための日計データ作成、情報系システムへ連携するためのデータ作成(これはトランザクションの最初からすべてデータを取っている)とかだな。これもデータ量によるけど、結構重い処理だ。

2011-03-20 07:36:58
Kenichiro Ota @oota_ken

やる夫:全部でどれくらいの大きさなんだお?

2011-03-20 07:37:41
Kenichiro Ota @oota_ken

やらない夫:普通預金の金利計算だけで別の銀行では6000行だったので、エラー処理も考えると資金移動だけでも10万行以上のコードなんじゃないかなあ。

2011-03-20 07:38:25
Kenichiro Ota @oota_ken

やる夫:それを絶対に3秒いないとかでオンライン処理するのかお?

2011-03-20 07:38:44
Kenichiro Ota @oota_ken

やらない夫:ジョブネットで隙間なくスケジュールが組まれている夜間バッチだともっと要求はシビアだ。どれかのジョブが指定次点を突き抜けてしまっただけでも、連鎖的に遅延が起こるぞ。

2011-03-20 07:39:57