ITリテラシの低い人間と要件定義していると、偶に凄く驚かされる話を聞くことがある。
今日、客先打ち合わせで聞いた話はこれだ。
「自分がシステムを操作中に裏で別の人間に操作されると知らない所でデータが変わってしまう」
なるほど、排他制御の話だな。
Webシステムではよく話題になる話だ。
Webシステムでは基本的に以下の挙動をする。
①対象データを画面に表示する。
②画面でデータを加工する。
③データを保存する。
この操作を複数の人間が同じデータに対して同時に行った場合、大抵は「③データ保存」は後勝ち。
つまり、先に保存した人の作業内容は後に保存した人の内容に上書き保存される。
従って先に保存した人の作業は無かったことにされてしまう。
この問題への対策が「排他制御」だ。
基本的に後に更新した人間が勝つということは変えられないから、同じデータを同時に触らないように何らかの制御を行うわけだ。
やり方は楽観ロック、排他ロックなどいくつかあるが、残念ながら既存システムにその機能は入っていない。
古いシステムだからな。
従って上記のような競合現象が起きる余地がある。
しかし、打ち合わせ中不思議だった……。
確かに競合が起きる可能性はあるけど、そんなに頻繁に起きるはずが無い。
基本的にその情報に触るのはその担当者だけなんだから。
現行システムに排他制御が入っていないのは需要が無いからでしょ?
何で今日打ち合わせしたこの人だけこんなに排他制御のことを気にするのか……。
長く打ち合わせして、ようやく言っていることが分かった。
この人、画面を何日間も開きっぱなしにしているんだ!!
まず最初に画面を開くでしょ。
そして保存ボタンを押すまではその開いた情報が守られていると思っている。
だからまず画面を開き、ちょっと作業して、その後で保存もしなければ画面も閉じない。
退社する時もPCをシャットダウンしないで画面を開きっぱなしのまま維持しておき、一日、二日、三日……。
そしてようやく保存ボタンを押すと、その三日間の間に別の人間が行った作業記録を自分が上書きしてしまう。
「三日間画面を開きっぱなしにしている間に知らない所で誰かがデータを加工していて、自分がそれを潰してしまったからだと怒られた!!」
これを問題視していたんだ!!
これなら確かに競合は起きるわ。
画面に表示されている情報は表示した瞬間のスナップショットに過ぎなくて、裏では色々な処理が動いている。
いつ誰かが更新するか分からないもの。
これは僕にとっちゃ常識だけど、この人にとっちゃそうじゃなかったんだ。
「Excelはファイルを閉じなければずっと自分に見えている情報が最新なのに、オンラインシステムは画面を閉じていないのに勝手に情報が古くなっている!!」
なるほどね、こういう考え方をするんだ。
カルチャーショック。
勉強になったわ。(;´・ω・`)
0 件のコメント:
コメントを投稿