嵐のコンサートがあるとオーバーブッキングするシステムって普通なの?!

結論をいうと、もしかすると「普通」かもとは思う。

部屋数203室の仙台市のビジネスホテルで、9月18~23日の宿泊予約を数千件受け付けるトラブルがあった。アイドルグループ「嵐」のライブが宮城県内で開催される期間だった。インターネットでの申し込みが殺到し、システム障害が起きたとみられるという。
203室のホテルなのに「予約」数千件 嵐公演で殺到か:朝日新聞デジタル


今年9月に仙台で嵐のコンサートが実施されると、5月1日早朝にテレビなどが報道
・嵐ファンの間でLINE等で情報が展開される
・仙台近隣のホテル予約に殺到
・当該ホテルがシステム障害を起こし、多重予約に至る
では、このような多重予約がなぜ発生してしまったかですが、その原因は公表されていないので憶測するしかありません。「ありそうな可能性」としては、排他制御が十分でなかったのではないかという仮説が成り立ちます…
嵐のコンサートがあるとダブルブッキングしてしまうホテル予約システムを作ってみた | 徳丸浩の日記


ようやくホテルに着いたら、「オーバーブックのため、お部屋がありません」。ちゃんと予約したはずなのに。バウチャーも持っているのに!でも慌てるのはちょっと待って。オーバーブックも仕組みを知れば、それほどコワイも のではありません。むしろ予定より高級なホテルに泊まれるチャンス!と楽しんでしまう余裕を持ってください。
9. 最大の危機「オーバーブッキング」をしのぐ【第4章 いざ、チェックイン!】|アップルワールド


海外旅行のガイドブックとかには、上記のようなことが書かれてたりしますよね。

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

どう考えても予約とったのに「予約がとれてませんでしたので別館を」って言われたことがあるからどっかにバッファがあってダブルブッキングありき(というかキャンセルありき)でやってるんじゃないかな。

2015/05/07 12:59


システムでなくて、初めから運用でカバーする感じの業務フローになっている場合において、嵐のコンサートのような想定外のことが起こると、問題が表面化してしまうということはあろうかと思います。

それも、LINEとかで展開されて、本当に集中して受け付けられたりしたら・・・。

予約システムで多いのは、予約時点では確定で無くて、ホテルからの折り返しのメール?があった時点で確定とするシステムですね。なぜ、そうするかといえば、排他制御程度の仕組みでは無理があるばあいが多いからというのもあるでしょう。

たとえば、昔?の、新幹線?飛行機?の予約システムでは、
初めから、「窓口から予約できる席」「ネットから予約できる席」に分けられている場合があります。だから、窓口では満席とかいわれたけど、ネットからは予約できるとか、その逆もあったりするわけです。

なぜ上記のような方法をとるかといえば、窓口側からのシステムと、ネットからのシステムが、簡単に統合できないとかそういう事情もあります。まあ、上記のことをすると、ダブルブッキングすることはないのですが、非効率になります。

それはともかく、予約システム系を個人とかで請け負って開発する人は、業務フローや効率を考慮の上、問題がある時の対応方法を考察しておく必要はあろうかと思います。

確定メールを送るまでは、仮予約で確定でないという運用も、その一つです。
システムを依頼する側、また使う側も、そういう事態があることを前提に、業務フローを考えておくべきかと思います。

排他制御について

嵐のコンサート情報が引き起こしたホテル多重予約問題を題材として、トランザクションと排他制御の重要性について説明しました。
当該の事故の原因はおそらくもっと複雑なものであろうと予想しますが、ここで説明したレベルの単純な排他制御であってもPHPの入門書等では解説されていないので、初めて知ったという読者も多いのではないでしょうか。
嵐のコンサートがあるとダブルブッキングしてしまうホテル予約システムを作ってみた | 徳丸浩の日記


引用先は、排他制御が原因だとは考えていない感じですが、最初の方だけ読むとなんか勘違いしてしまいな記事だなぁという感想を持ちました。

ただ、素人を騙す?感じの記事としては、最適だと思います。なんかすごそうに見えるし・・・。

排他制御も大事だけど、リアルタイム性をあまり重要視するのは、リスクが高いと思います。

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


嵐のコンサートがあるとダブルブッキングしてしまう予約システム。排他制御の問題。映画館の座席をよく予約する。座席を選択したままチケットを購入しないで終了すると、一定時間が過ぎると選択解除するんでしょう

2015/05/07 17:38

なんか、はまりそうな処理ですな。

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

今度は嵐のコンサートがあると他の客を含めて遅くてほとんど誰も予約できないシステムができあがるだろう。キュー使ったほうがいいんでないの?簡単には受け付けるだけ受け付けて処理してから返答を別途返せば良い。

2015/05/07 17:35

これが、あとから確定メールで、予約を予約を確定させるという方式だと思います。

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

論点からそれちゃうけど…例外が出た時にエラーメッセージだけロギングしてstacktraceをロギングしてないのが気になったけど、phpってこういうものなのかしら? う~ん。/rollbackをtry~catchしてないのも気になる…。

2015/05/07 16:53

個人的には、そんなものって感じがするが、それゆえにPHPで作られた予約システムは、システムだけに頼りすぎるのは危険そうな匂いがするわけです。

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


MySQLでのトランザクションの使用と行ロックによる更新処理の排他制御。

2015/05/07 14:51

知識ではそうだけど、実際にその方式を使うかどうかは、いろんな判断によるとは思う。

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

ホテルの予約って、普通部屋を抑えたあとで決済って手順を踏むからRDBのトランザクションではなくlong-running transactionの問題じゃないのかな http://developer.cybozu.co.jp/archives/kazuho/2010/04/rest-re-web-a6d.html

2015/05/07 11:48

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

select updateしとけば最悪の事態は回避はできる。予約システムなんぞで悲観的ロックしてまうと別の運用上のトラブルが… まあ数瞬で4,000件の予約が降ってくるのは災害だよね。

2015/05/07 11:42

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


排他制御不備のせいではという予想だけどブ米にもあるようにそれ以前の仕様的なところでこの問題だったんじゃないのかなあ。でもジャニヲタの方々の行動力は自分の想定超えてるからそうとばかりも言えんか…

2015/05/07 10:54

関連記事

ニトリネットは頑張ったほうじゃないかなぁと思う

スポンサーリンク

コメントを残す

メールアドレスは公開されません。
また、コメント欄には、必ず日本語を含めてください(スパム対策)。