はじめに
先日2020年開催の東京オリンピックのチケット当落発表があり、エンジニア目線で面白い負荷分散方法だなと思ったので、どういったところが面白いと思ったのか綴ってみます。
なお、私はチケットを申し込みをしていないので、周りの人から聞いた情報となります。
※本記事は裏付けや根拠など一切ない主観的かつ個人の感想なので、事実とは異なります。
オリンピックの当落結果を知る方法
1.当落メールが届く
2.公式サイトでの当落確認
上記2つの方法で確認ができます。
負荷分散方法
①すべて落選した人には早い段階でメールで落選を伝える
周りの人を見ていると申し込んだチケットがすべて外れた人は朝早い段階で落選メールが届いていました。
逆に一つでも当選している人には朝の段階ではメールは届いていませんでした。
このことから推測できる負荷分散は、すべて落選した人に早めに伝えることによって、サイトへのアクセスを減らすことができるのではないかと思いました。
わざわざサイトで確認する必要がないので、アクセス集中を避けられることにより負荷軽減ができると感じました。
全員に同時にメールが来ないって斬新だなって思いました。
アクセスだけでなくメール配信の負荷も分散されていますね。
②公式サイトで確認する場合に待ち情報が表示される
引用:https://www.huffingtonpost.jp/entry/olympic-ticket_jp_5d0ae7b1e4b09f5a54b5e888
サイトに当落確認のためにアクセスすると上記のような画面が表示されます。
このことから推測できる負荷分散は、「すぐには確認できないこと」、「どのくらい待てば確認できるか」、「何人くらい待っているか」という情報をユーザーが知ることで連続でアクセスすることを回避させることができます。
ユーザーのアクセス集中を待ち時間、待ち人数を伝えることで、連続でアクセスして確認するというシステム泣かせのアクションを抑制することができると思いました。
また、これは完全な推測ですが、システム的には初回アクセス時に確認待ちキューにデータを入れ、順次キューのデータを処理して、当選を伝えているのではないかと思いました。
(それだとDB接続とか発生してしまうので、負荷分散できないのでフロントだけで解決できる仕組みとかも利用しているのかなとか色々思いました。残念ながら私の知識ではそこまで想像することはできなかったですが、、)
最後に
負荷分散というとLBやマイクロサービスとか色々ありますが、こういったユーザーの行動抑制という形で分散する方法もあるのだなと新たな気づきになりました。
使い捨てのシステムで予算の限られた中では良き選択なのではないかなと思いました。(AWSとかで大量にサーバ建てて負荷分散とかもできると思うけど、費用対効果が見合わないのかなと思いました)
エンジニアとしてはもっと深堀して知ってみたいなーと思ったりもしました(笑)
最後までお読みいただきありがとうございました。