スポンサーリンク

リニューアルのベイチケで大トラブル!なんでこうなったのか

横浜DeNAベイスターズの専用チケット販売サイト「ベイチケ」でトラブルが発生した。4月15日から、5月7日以降の試合を対象にリニューアルしたベイチケをオープンさせた。4月17日にシーズンシート契約者からチケットの販売が始まったが、トラブルが続いた。4月19日朝には緊急メンテナンスに入り、そのまま中断。販売を予定していたチケットは、急遽、抽選販売に切り替わった。

なぜこんなことになったのだろうか。管理人は一応、システムエンジニアと呼ばれる職業だが、ベイチケはもちろん、チケット販売システムにも携わったことがない。内部的なことは分からないが、一般的なWebサイトの知識から今回のトラブルを考察してみる。実際の内容とは異なる可能性があるので、その点ご理解を。

システム障害が与える影響

昨年、株式の取引を行う東京証券取引所のシステムで障害が発生し、取引が中止になったことがあるのはニュースで見た方も多いだろう。株の売買が一時中断してしまうので、企業や投資家が大きな損失を被る。また今年に入って、みずほ銀行ではATMでキャッシュカードが取り込まれて出て来ないという障害もあった。

障害が発生する要因としては、機器が物理的に壊れる、システムの設計時に想定していなかった動作が発生して処理が進まなくなる、メンテナンスの作業がシステム本体に影響を与えてしまい停止するなどさまざまだ。

システムに障害が発生すると、業務が止まること以外にも調査や代替手段の提供、損失の補填やお詫びなど、莫大な費用がかかる上に信頼を損なう。そのため、障害が発生しないように物理機器は多重化したり、十分なテストを行って品質を担保した上で運用を開始する。それでも、なかなかゼロにすることは難しい。

ベイチケとは?

2012年に横浜DeNAベイスターズとなって最初のシーズンで導入された、専用のチケット販売システム。ファンクラブ会員は、シーズンの来場回数によりステージ制となっており、ステージが高い順から販売開始日時が異なっている。ベイチケのみファンクラブ先行発売が行われている。

その他、ハマスタのチケット窓口やプレイガイド、ぴあ、ローチケやセブンイレブンなどのコンビニでも販売される。

また、開幕戦やYOKOHAMA STAR NIGHTなどの人気イベントは、事前に抽選販売を行っており、この部分はベイチケではなくローチケの機能を使用して提供している。同様に、グループ席の販売もぴあの機能を使って提供している。

昨年からは新型コロナウィルス感染拡大の影響で座席数を大幅に減らしており、イレギュラーな販売が続いている。その為、ベイチケのみでの販売となることも発生している。ハマスタで観戦するベイスターズファン、そしてビジターチームのファンはベイチケを使うケースが非常に多いかと思う。

今回大きなトラブルが発生したのは、従来から提供されているシステムではなく、4月15日にリニューアルとしてオープンした、別の新しいベイチケの方になる。

ベイチケのリニューアルは?

管理人が知る限り、特にリニューアルの予告があったわけではなく、シーズンが始まった後に突然リニューアルということになった。5月2日のヤクルト戦までは既に販売が始まっており、新しいベイチケは5月7日以降の試合だけが販売される。

横浜DeNAベイスターズの公式サイトでのニュースによるとリニューアルのポイントは以下の通り。

  1. 「待合室機能」の追加
  2. グループ席が追加、PCとスマホの画面統一により座席を選びやすく
  3. 支払方法に「以前ご利用のカードでお支払い」が追加

旧ベイチケは、PCとスマホでページが異なっており、特にスマホの場合は座席選択がしづらかった。最近のサイトは、PCでもスマホでも同じ画面を使ってサービスすることが多い。昔はガラケーだと画面がかなり狭かったので、携帯用の画面を別に作っていた。ベイチケが登場した2012年もまだその流れをくんでいたので、スマホは別画面になっていた。

しかし、一番大きな変更は、待合室機能だろう。旧ベイチケでは、ファンクラブの先行発売の時間が近づくと、「アクセスが集中し、つながりにくい状態です」というエラー画面になるのが恒例だった。これを「ソリベ」と呼ぶ人がかなりいるが、アクセスできないという問題が発生していた。チケットを買いたい人は、時間になったらベイチケにアクセスし続け、ひたすら入れるようになるのを待ち続ける必要があった。システムに入ってチケットを買えるかどうかは、タイミング次第なので運よくすぐに繋がる人といつまでも繋がらない人がいて、不公平さがあった。

これを改善するために、アクセスしてきた人に順番を振り、順番が来た人からベイチケに入ってチケットが買えるという機能が、「待合室機能」だ。

TOKYO 2020のチケット購入のための登録でも、現在何人が待っているか表示されていたかと思う。それと同じような仕組みをベイチケにも導入したというのが大きなリニューアルポイントだっただろう。

ニュースには書かれていないが、これまで開幕カードやYOKOHAMA STAR NIGHTなどの人気イベントは、ファンクラブ会員に対して抽選販売を行っていた。旧ベイチケにはこの仕組みがない為、ローチケに委託して販売を行っていた。新ベイチケのマイチケットには「抽選申込履歴」が存在しているため、リニューアル後の新機能として、新ベイチケ内で抽選販売が行えるようにしている可能性が高い。

また、2021年はTOKYO 2020の野球・ソフトボールのメインスタジアムであるハマスタが使用できない期間があり、東京ドームや神宮での主催試合が予定されている。そのチケットをベイチケで販売する上で、リニューアルが必要であった可能性も高い。過去に新潟などの地方球場のチケットを旧ベイチケで販売した実績はあるものの、東京ドームとなると何らかの機能アップが必要だったのかも知れない。

さらに利用者には見えない裏側として、管理者であるベイスターズ側でも運用の為の改善があったと推測される。昨今のコロナ禍でのチケット販売に対して、売り方が多様化しており、それを実現するために必要な機能や作業の簡素化が図られているかも知れない。現在のような状況は当然、旧ベイチケでは想定して開発されていないし、今後のサービス拡大や新たな試みに対して必要な機能を盛り込んだということは十分に考えられる。

ソリベとは?

前述したように、旧ベイチケにアクセスが集中すると、「アクセスが集中し、つながりにくい状態です」というエラー画面が表示される。このエラー画面を「ソリベ」と呼んでいる人が一定数存在する。由来は、このエラー画面のURLが「sorry.baystars.co.jp」となっており、そこからソーリーベイスターズを略してソリベと呼んでいる。アクセス集中によるエラーの一般的な名称ではなく、あくまでベイチケだけの話なので、他のシステムでソリベと言っても全く通じないのでご注意。

何でソリベになるのか。まず、チケットを買う人がインターネットを通じてベイチケにアクセスすると、アプリケーションサーバーと言われるコンピュータが動いて、ログイン、チケットが販売されている試合のスケジュールの表示、在庫のある座席の表示、チケットのカートへの追加、クレジットカードの決済、購入履歴の表示など全般の処理を行う。

これらの処理を行う上で、同時に捌ける処理数はある程度、サーバーの性能と処理の複雑さで決まって来る。一般的に、Webのシステムは同時接続数というのを設定してあって、それ以上のアクセスが来るとアプリケーションサーバーに入れないようにしてある。

よくテレビなどで取り上げられた直後、その企業やお店の公式サイトが落ちてしまい、Bad Gatewayとか変なエラー画面になっていることがあると思う。それは、同時接続数を設定していなかったりして、大量のアクセスに対して画面を表示させようとして限界を超え、サーバーの機能自体が停止してしまっている状態。

チケットの販売システムで、サーバーの機能が止まってしまうと誰も購入できなくなるし、クレジットカードの決済中に止まってしまった場合には大きな問題にもなる。その為、チケットの照会や購入を実行しても処理速度が落ちないレベルを維持できる同時接続数を上限とし、アプリケーションサーバーの前にある入り口の役割をするWebサーバーで、上限に達している場合は決まったエラー画面に移動するように設定を行っている。ベイチケではそれがソリベである。

接続数の制限はなぜ必要か?

上手い例えかどうか分からないが、マンションなどで水道の水を出すとき、貯水槽というタンクに溜めてある水が各家庭の水道から出る、というケースがある。水が使われれば、その分を大元の水道からタンクに補充して行く形になるが、マンションの全戸で水を全開にした場合、タンクの水がなくなって、全戸で水が出なくなるはずだ。

ファンクラブ先行販売の開始時間はまさにこれと同じ状態で、制限をかけなければ数千から数万のアクセスが来て、アプリケーションサーバーが一気に動いて、タンクの水のようにコンピューターのCPUやメモリといった資源を使い果たし、動かなくなってしまう。

そのため、タンクに水が補充されるのと同じくらいの量しか使われないように、100世帯のところ、10世帯までしか水が出ないようにするのが同時接続数だ。水を出して用が済めば、その分待っている別の世帯で水が出るようにして行く。

ベイチケにアクセスした時、Webサーバーは、アプリケーションサーバーで処理が動いている接続数を見て、上限を超えていればエラー画面に飛ばして入れないようにしている。

昔であればアプリケーションサーバーは、物理的にCPUやメモリを持っていたので、それ自体を増強しておかなければならなかったので、高額な費用が掛かっていたのだが、最近はクラウド化、仮想化が進んで、他の用途で使っているサーバーの資源を一時的に移したり、販売開始時の一時的な高負荷の時間帯のみ増強するようなことができるようになっている。それでも、一定の同時接続数を決めておかなければ、システム全体がダウンしてしまう。

順番待ちの機能とは?

同時接続数がある場合、どういうタイミングで待っている人が入れるようになるのか。ベイチケではチケットを購入し、支払いも含めて確定されると接続が切れる仕組みになっている。その為、誰かが購入を確定すれば、その分入れることになる。ベイチケに入ったが、チケットを買わずに出て行ってしまった人の分はどうなるのか。一般的に同時接続数を制限しているシステムでは、最後にアクセスしてから一定時間を経過した接続は自動的に切れるようになっている。一定時間はシステムによって異なるが、10分や5分で設定されていることが多い。

ログインしてからの時間ではなく、画面上のボタンを押したり、更新ボタンを押したり、システムに何らかのアクションを起こして接続した最後の時間からの経過で判断される。だから、ベイチケで残っている座席を見た後10分以上放置すると、接続が切られているのでまたアクセスし直しになる。この時、同時接続数の上限に達していると「ソリベ」になる。

アクセスが集中した際は、チケットを購入するか、一定時間接続がなかったユーザが弾かれるのを待つ形になり、それにより接続数のカウントが減った瞬間にアクセスするとベイチケに入れる仕組みだ。タイミング次第になるので、ひたすらアクセスし続け、運が良ければ入れるという状態になる。

その為、それを解消するために先に新ベイチケにアクセスした人から順番に入れるようにする仕組みが「待合室機能」だ。アクセスした時に、同時接続数の上限に達していた場合は、既に待っている人数(10人単位での表示)を表示し、その画面を表示し続けていれば順番が来たタイミングで入れるようになるというもの。画面を表示し続けなければならない理由は、前述の通り一定時間接続がなかった場合は切るようにしているからだろう。順番待ちの画面に、自動的にベイチケに再アクセスする仕組みが入っているので、表示させておけば接続が切れることなく、順番が進んで行くという理論だ。

注意事項に書いてあったように、別のタブを表示したり、別のアプリを開いていると、この一定時間でベイチケにアクセスする機能が動かない為、接続が切られてしまい、最後尾になる。ずっと表示させたままであっても、ベイチケにアクセスするタイミングでネットワークが切れていたりすると更新ができない為、これも最後尾に行ってしまう。

旧ベイチケでは、ひたすら手動でアクセスし続ける必要があり、入れるかどうかは運次第となっていたが、順番を付けて自動的にベイチケとの接続を維持する便利な機能が追加されたのが新ベイチケだ。

トラブルの原因は?

最初に書いたように、新ベイチケの中を知っているわけではないので、Twitterでの利用者の声と実際に使ってみた上での考察に過ぎないので、その点は理解いただきたい。

  • 実際に販売が始まってから想定以上に処理が遅く同時接続数を減らした
  • 順番待ちの人数と接続が切れる(ベイチケから出る)人数が釣り合っていない
  • チケット販売開始時の負荷の想定が甘く設計に不備がある
  • 移行に際して十分なテストができていない
  • 移行でトラブルが発生した場合の代替策が不十分

今回、4月15日に急遽リニューアルが公表され、もともと予定していた発売日が前倒しになり、さらに5月25日からのハマスタでの交流戦9試合も合わせて発売されることになった。販売は下記の通りランクに応じてタイミングが異なる。

種別発売日
シーズンシート契約者4月17日(土)12:00
ファンクラブ ゴールド+4月18日(日)12:00
ファンクラブ ゴールド4月18日(日)17:00
ファンクラブ シルバー4月19日(月)12:00
ファンクラブ ブロンズ4月19日(月)17:00
一般4月20日(火)10:00

まず4月17日(土)12:00からシーズンシートの契約者だけが購入できる時間が24時間あったのだが、この時点で大量の待ち行列が出来て、ベイチケに入るのに何時間も待つ状況になった。急遽リニューアルされたので、シーズンシート契約者以外のまだ購入できない人も様子を見る為にアクセスしたことが予想される。

そして、販売を開始した後で、何らかの障害が発生し、最初の緊急メンテナンスに突入している。シーズンシート契約者には後に連絡が行って、交流戦の9試合を除外した上で4月17日(土)19:30から販売から再開したようだ。

これは推測に過ぎないが、最初の障害で当初想定していた接続数では処理が動作しない状況だったため、同時接続数を絞ったのではないか。そうでなければ、ベイチケに入るのに3時間もかかるような設計はありえないはず。当面は多くても半数の座席しか販売されないが、将来的には最大34,000席を販売するのだから、この程度のアクセス数でパンクするのは論外。もちろん、先述した通り仮想化されたサーバー性能を状況に合わせて可変にしてある可能性はある。だとすれば、今回の販売でのアクセス数の想定を見誤り、処理能力が足りなかったのかも知れない。ここは当事者しか知りえないところ。

障害を抱えていたのにも関わらず、交流戦の9試合を除外するだけで再開してしまった判断も妥当性が疑わしい。翌日の12:00にゴールド+のファンクラブ会員もチケットを買うためにアクセスするも、順番待ちが長く、ここからは次のステージの開始時間までに、前のステージの会員がまだ購入している段階で、さらに待ち時間が長くなって行った。管理人はゴールド+で、4月18日(日)11:00すぎに順番待ちを始めて試合開始の14:00くらいに購入することができた。

今回は、ガールズフェスティバルと10th Anniversary Gameが対象で、抽選販売が行われており、運よく仲間内で当選していた為に1試合のみ必要としていた。旧ベイチケは複数試合を跨って12枚まで(コロナ禍では6枚または4枚に変更)購入可能だったが、1試合ごとに決済して確定しなければならず、購入する試合数の分だけ順番待ちに並び直して購入という必要があった。それも順番待ちを増やした原因だった。

結局、シルバー会員への発売が始まる前の4月19日(月)10:00ごろに2度目の緊急メンテナンスに入り、そのまま再開されることはなく、夜になってローチケでの抽選販売に切り替わったという連絡があった。

設計、移行計画にも問題あり?

「待合室機能」を導入したが、順番が来るまで画面を表示させたまま数時間待つことが必要という、実用的でない状況になっていたことが問題を大きくした。

順番はどのくらいの時間待つことを想定して設計したのだろうか。1,000人以上待っていれば、ほとんどの人が諦めて別の時間にアクセスすると見込んでいたのだろうか。どうしてもチケットを買いたいファンは順番が来るまで待つ人がほとんどだと思う。後でアクセスすれば、希望の席種はなくなっていくのだから。

前述した通り、本来はもっと接続数が多く、処理速度が速かったはずが障害により縮小したことが原因だろうか。せいぜい順番待ちで耐えられるのは30分程度だろう。旧ベイチケでも繋がらない場合はそれくらいアクセスし続けることはあった。

また、シーズンの途中の中途半端なタイミングで移行したことも疑問だ。本来は2021年の当初からリニューアルする予定が、開発などの遅れによってこの時期になってしまったのか。

  • 販売開始の対象でないアクセスも順番待ちに入ってしまう
  • 障害が発生したのに十分に対策しないまま、範囲を縮小して続けてしまった
  • トラブルが発生した場合の対応策の事前検討が不十分

何故、初回の販売開始を土日にしたのかも疑問だ。土日にバックアップ体制を十分に敷けていたのだろうか。土日が休みである業務のシステム移行を土日に実施することは多いが、こうしたシステムは土日の昼間の方がアクセスされることになる。土曜に最初の障害が起きて対策が不十分なまま継続され、月曜になって2度目の緊急メンテナンスに入ったところからも、土日の体制が十分だったのかどうかも疑わしい。

まん延防止等重点措置に関連し、直前にチケットの販売について変更がありうるタイミングだったのに移行を強行し、さらに交流戦の販売まで追加してしまったのは、移行に対して楽観的過ぎたと思う。システム移行を取りまとめるチームで業務したこともあるが、さまざまな影響を想定し、トラブルが発生した場合に旧システムに戻す方法などを予め検討し、移行スケジュールを作り上げる。

月曜になって1日要して検証した結果、ベイチケでの販売を中止してローチケでの抽選に切り替えるというのが、最終手段として選択されたのかも知れないが。

今回は旧ベイチケの置き換えではなく、並行に走らせることができるので、それほど難易度は高くないはずだが、IT系を親会社に持つ球団のチケット販売システムのリニューアルとしてはお粗末だったと言われても仕方ないだろう。

システムエンジニアとして他人事とは思えない事象で、関わる人の苦労も何となく分かる気がする。しかし、きっちりと原因分析をし再発防止を図らなければならない。ただ、待合室機能の設計に問題がある場合には、少し対応に時間がかかると思われる。

まとめ

経緯をまとめると、以下の通り。

  • 5月7日以降のチケットは、新しいベイチケにリニューアルして販売開始
  • 直前に発売予定を前倒し、4月17日(土)から急遽、交流戦の6試合も併せて発売
  • シーズンシート契約者から販売を開始したが、直後にトラブルが発生して中断
  • 交流戦の発売は見送り、5月7日から20日までのチケット販売に限定して再開
  • 再開後も待ち人数が数千人という状態が続き、新ベイチケに入るのに半日以上かかる状態
  • 4月18日(日)にファンクラブのゴールド+、ゴールドも販売開始でさらに混雑が加速
  • 旧ベイチケと異なり、1試合ずつしか買えない為、何度も待ち行列に並ぶことになる
  • 4月19日(月)朝になって、販売を中止しメンテナンスに入った
  • 新ベイチケで購入した5月7日から20日までのチケットは有効だが、残り分はローチケでの抽選販売に切り替わった
  • 神奈川県において、まん延防止等重点措置が4月20日から適用され、チケットの販売が停止された為、当日券等の販売がなかったことは不幸中の幸いとなった(新ベイチケの障害による販売停止が隠れた)
  • (5/10追記)5月8日付で神奈川県のまん延防止等重点措置は月末まで延長が確定しているが、5月25日からの交流戦のチケット販売についてのアナウンスは、2週間ほど前になってもまだ出されていない。新ベイチケの問題への対応に時間がかかっている可能性もある

ちょうどチームが記録的な負け方でのスタートになっており、悪いことが重なってしまった。

コメント

  1. とんぼ より:

    いろいろ分かりやすくて面白かったです

    https://japan.cnet.com/release/30519916/

    ベイスターズのチケット部の人がセミナーしてみたいだし、上記のシステム使ってるんですかね

    • RockyRocky より:

      とんぼさん、コメントありがとうございます。

      確かにおっしゃる通り、関係がありそうですね。今時、ゼロから作るということはあまりないので、このあたりのプラットフォームを使用しているのかも知れませんね。

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