嵐のコンサート日程と開催場所が発表された後、会場近くのビジネスホテルが部屋数を大幅に超える予約を受け付けてしまったトラブルが、5月3日に報じられました。インターネットでの予約申し込みが殺到したとのことです。セキュリティーコンサルタントの徳丸浩さんはニュースを受け、トラブルが再現する宿泊予約システムを題材としたブログ記事を、5月7日(木)に公開しました。解説の分かりやすさから、はてなブックマークでも盛り上がりを見せました。
▽ 嵐のコンサートがあるとダブルブッキングしてしまうホテル予約システムを作ってみた | 徳丸浩の日記
▽ 203室のホテルなのに「予約」数千件 嵐公演で殺到か:朝日新聞デジタル
徳丸さんはホテルの多重予約が発生してしまった理由について、宿泊予約システムで「排他制御」が十分でなかったという仮説を立てました。排他制御とは、ファイルやデータを複数人で更新する際に整合性が保てるよう、同時には書き込みできないようにする処理のことです。
徳丸さんがまとめたトラブルの概要は以下の通りです。
- 今年9月に仙台で嵐のコンサートが実施されると、5月1日早朝にテレビなどが報道
- 嵐ファンの間でLINE等で情報が展開される
- 仙台近隣のホテル予約に殺到
- 当該ホテルがシステム障害を起こし、多重予約に至る
多くの嵐ファンが同じタイミングで宿泊予約をしようとする様子をシミュレートする「嵐のコンサートでダブルブッキングするホテル予約システム」を作成し、「203室×6日間」の条件で負荷テストを実施。1,218件の予約しか受け付けられないはずが、予約総数は約4,400件になりました。空室数の判定をする際に排他制御をきちんとするよう改修したところ、各日の予約数は室数と同じになり、ダブルブッキングはなくなりました。
徳丸さんによると、排他制御の解説や、複数の処理を1つの処理として扱う「トランザクション処理」に関する具体的な説明は、PHPの入門書や中級レベルの解説書にはないとのこと。排他制御の不備は、セキュリティー問題に直結する場合もあるそうです。
はてなブックマークのコメント欄には、「1つの仮説ではあるけど、面白い」「専門外の自分にも技術的概要が分かる良エントリだった」「当該事案の原因かどうかは別として、『排他処理』の必要性は判りやすく説明されている」「嵐のライブ情報ページを監視して、更新されたら管理者にアラートメールを飛ばすべき」などの感想が集まりました。