嵐ファン殺到で障害、これはシステム開発者の稚拙かつ初歩的なミスだと思う

php・MySQL・Web開発

arasi

こんな記事を読みました。

【参考】嵐ファン殺到でシステム障害…コンサート発表直後、203室のホテルに宿泊予約4000件(1/2ページ) – 産経ニュース

嵐のコンサートが行われる影響で、大量のファンが「ホテルルートイン仙台泉インター」(仙台市泉区)というホテルのネット予約に殺到。それでシステムが障害を起こし、受け入れ可能な部屋数を大幅に超過してオーバーブッキングしてしまったという記事です。

私はこれを読んで強い違和感を覚えました。

インターネットで宿泊予約ができるシステムは、定員になると自動的に「満室」と表示され、その後の予約を受け付けない。ところが、今回は申し込みが集中したため処理が追いつかず、満室を認識せずに受け付けを続けたとみられる

この記述はちょっとおかしいと私は思います。
記者が技術に疎いのか、ホテルが技術に疎いのか、システム開発業者が技術に疎いのか。
システム開発業者が技術に疎かったらシャレになりませんが・・・。

通常このような在庫管理システムでは、データベースにデータを出し入れする際、トランザクションという仕組みを使います。専門的な話なのでごくごく簡単に説明します。たとえば今回のようなホテル予約システムの場合、複数人が(ほぼ)同時に予約をかけた場合は、先に予約をかけた人の処理が終わるまで次の人の処理は待ちましょうね、という仕組みです。その仕組みをトランザクションと言います。

今回の記事を読む限り、大量の予約アクセスが殺到したせいでシステムの処理が追いつかなくなり、「満室処理」が出来なかったからオーバーブッキングした・・・と読み取れます。コンピュータに詳しくない人からしたら、「へぇ、そういうものなのか」と思ってしまうかもしれません。

しかしこれは前述のトランザクション処理をきちんと使っていれば、基本的に発生しないはずの障害です。仮にサーバの性能によってアクセスを捌ききれない事態が発生したとしても、「予約超過」は起こり得ないのがトランザクションの仕組みです。

銀行システムが一番わかりやすいかもしれません。銀行は「アクセスが殺到したから入出金の数字が合わなくなりました」なんてことは許されないわけで、トランザクション処理によってそうした事態を防いでいます。

【参考】トランザクション処理 – Wikipedia

しかし今回のホテルが使っていた予約管理システムは、トランザクション処理をどうやら使っていなかったのでは、と推測されます。予約(在庫)管理システムとしては完全に無意味というか、最も大事な部分が抜け落ちていますね。

これを開発した会社は、アルバイト学生レベルのSE・プログラマしかいないのでしょうか?

ホテルは(中略)「在庫を管理するシステムの調整が追いつかなかった」と説明した

いやいやいやいやいや!
いちいち手動・人力で調整が必要な在庫管理システムって何ですか!?
それって、もはや在庫を管理できていない無意味なシステムでしょう。
自動でリアルタイムに在庫を管理できるからこそ、システムとして意味があると思います。

「在庫を管理するシステムの調整が追いつかなかった」・・・、これはちょっと言い訳としては苦しい。
言い訳ではなくて本気で言っているのだとしたら、そんな糞みたいなシステムはもはやシステムと呼べるような代物ではありません。すぐに捨てたほうがいいでしょう。

2015/5/17 追記

あの怖くて恐ろしい有名な徳丸浩さんのブログで詳細な解説がされていました。必読です!!

【参考】徳丸浩の日記: 嵐のコンサートがあるとダブルブッキングしてしまうホテル予約システムを作ってみた

コメント

タイトルとURLをコピーしました