コロナ過において人の密集を生まない形の新しいスタイルが望まれるイベント業界。
時代の後押しもあって完全オンライン上で当日版権商品を販売できる
「トレジャーフェスタオンライン」が2020年9月20日に開催されました。
現地に遠征する必要もなく、自宅のPCやスマホでお手軽に商品を購入できるという事から
多くの人に注目される形で進められていたイベントだったかと思います。
私も2月に開催されたワンフェス2020W以降のイベント、
オンラインという新しい形式でのイベントと言う事でどのようなイベントになるか
期待と不安が入り混じった気持ちで開催を楽しみにしていました。
結果については、あえて詳細を語る必要はないと思いますが
次回以降開催、敷いては今後の当日版権オンラインイベントを盛り上がってほしいという気持ちから
自分なりの考察をここに残したいと思います。
(書いている時点ではお問い合わせフォームが使えませんが…)
あくまで予想の部分もありますので
参考程度に読んでいただけたらと思います。
本番開催の数日前からプレオープンという形でサイトにアクセスする事が出来る形で
始まったトレフェスオンラインの一般参加ですが
プレオープンの途中からサーバの挙動が重たいといった感じ取れる状態でした。
私も興味本位からサイトにアクセスして色々見ていました。
一部のSNS等ネット上にはサーバについてAWSを利用しているという情報が出ており、
物理的なサーバを用意せず、クラウドサービスによる柔軟性のあるサービスを利用している事に
気合が入っている。と感じました。
(私は見かけていないのですが公式からもAWSの利用が公言されていたと聞きました)
実際にどこのサーバを利用しているかという情報は
ちょっと調べれば大体判明する事で
(そもそも、それが分からないとURLからサーバまで誰もたどり着けませんが…)
ドメインを管理するDNSサーバへの問い合わせを行い、
AWSのELB(ALB)を挟んで2台構成という事が分かりました。
※DNSの調べ方は割愛。興味のある方はドメイン名 正引きで調べてみてください。
やっぱりアクセス集中を見込んで2台のサーバでの負荷分散を考慮している事からも
ある程度のアクセスにも耐えられる形を選択している事は分かりました。
ロードバランサーによる負荷分散のセオリー的な手段かと思いますので。
ロードバランサー?負荷分散?という方もいらっしゃると思いますが
単純に1台のサーバで全ての仕事をこなすよりも2台に分散して仕事を行うほうが
1台あたりの負荷は少なくて済む=処理が早い。という考え方です。
AWSはやろうと思えば負荷に合わせてパワーアップさせる事も出来るような仕組みですし、
状況に合わせて手動でパワーを調整する事も可能でしょう。
(多少のサービス停止時間が必要かもしれませんが)
プレオープンの時にサーバが重いのはアクセス状況を見て
負荷の度合いを見積もっているのかな?と考えていました。
※ここは私の想像です。
サーバを2台に分けているという事は
2台のサーバで同じ商品を表示しようと思うとデータの共通化が必要となってきます。
もしかして別途第3のサーバ、データベースサーバも用意されていて
データベースサーバの設定ミスによるスペック不足(1台で2台分の処理をこなしきれない状態?)にでもなっているのかな?
この時点で、他にもセキュリティ的な話がポロポロと聞こえてきましたが
その話はややこしい&専門知識が必要となりますのでここでは考慮していません。
ただサーバを2台構成にするという事は、
それに合わせたプログラムの考え方というものは必要で
単体でアプリを開発するよりも
多少なりともアプリ開発の難易度、テストの難易度は上がっていると思われます。
(エンジニアでもこの辺りは、やらかした経験が無いと分からないかもしれません)
そして迎えた本番当日、私は他の人が買い物する様子を見る約束をしていたので
その人が操作する様を後ろから眺めていました。
サイトにアクセスが集中してログインできない、ページが表示されないというのは
元々想定済みでF5合戦になって、
何回かサーバを再起動したりするかな?担当者は大変だろうな。と見守っていました。
自分の事ではないので冷静に見ていられるかと思っていましたが
意外な仕様が多く、衝撃を受けましたが、その辺りはアプリの設計要件かと思いますので
ここでは省きます。
AWS&負荷分散を使っていてもここまで耐えられないほどの
アクセスが集中しているのか!?と思うと
初めての互換ブース販売の日が蘇ってきます。
あの時は私(管理者)からの操作すら受け付けないほどアクセス負荷がかかっていて
強制シャットダウンをしました。(脳内はエヴァンゲリオンの13話状態)
一瞬、サーバの停止が起きるかな?と思ったのですが
どうやら502, 504エラーがブラウザに返ってくるもサーバは生きているようです。
そんな中、長い時間をかけ商品をカートに入れて決済画面へ進んでと
画面遷移を見守っていてある事に気付きました。
少し話は変わりますが
今回、トレフェスオンライではクレジットカート決済部分は
外部の決済代行会社ペイジェントの決済サービスを利用していると
SNSで入場券を購入した人達の情報で見かけていましたので知っていました。
一時的にURLがペイジェントのドメインに変わる事も見かけていましたので
リンクタイプと言われるサービスを利用している事も分かります。
普段から仕事でクレジット決済周りのサービスを利用する事も多く
ペイジェント決済を利用した事もあるのでリンクタイプの概要と安全性はすぐに理解できました。
(一応、気にしている人がいたので書きますが
リンク方式のサービスからクレジットカード情報を取得するのは、その仕組み上ほぼ不可能かと思います。
ペイジェント側のサーバで入力操作を行う形となる為、本体サービス側ではその情報にはアクセスできません)
因みにリンクタイプのメリットは
予めペイジェントが用意したサーバ、接続用プログラム等を利用する事による
安全性とコストの安さです。
デメリットはSNSでみんながURLが変わったと不安視した、購入フロー中にドメインが変わる事かと思います。
URLが変わった=怪しいと言う事でクレジットカード決済を止めてしまう顧客離れ(機会損失)が
どうしても防ぎきれないので・・・。
余計な一言かもしれませんがリンクタイプを利用したサイトはクレジットカード入力画面の手前で
ドメインがペイジェントに変わります!安全です!と目立つ文字で書いていたりします。
それを余計に怪しいと思う人もいるみたいなので効果のほどは知りませんが・・・。
で、ここで話を戻しますが
思った通り、ペイジェントのサイト(クレジットカード入力画面)はサクサク動きます。
クレジットカードの与信も通って
あとは最後に決済が完了した事を伝える通信を実行するボタンを押して購入完了!というところで
再び502, 504エラーの嵐。
トレフェス側のサーバに決済が完了した旨を伝える為の遷移でトレフェスのサーバへ戻る必要があるのですが
入場や商品一覧、マイページ、カート投入等、皆のアクセス集中が原因で
サーバが重たいな~、頑張れ~と見ていたのですが
戻ろうとしているドメインが「tfo.hobima.com」になっている事に気付きます。
あれれ?これはもしかして嫌な予感が・・・
プレオープン以前からも会員登録等は「tfo.hobima.com」で処理されている事は分かっていたのですが
これってAWSのサーバだったっけ?
で気になって調べてみたらどうやらAWS外のサーバのようです。
その後、再度、長い時間をかけて購入操作を行ってもらい、
ドメインの遷移を確認したのですが、カートの中の次の画面の「注文内容の確認画面」らしき画面でも
(既にサーバ負荷がかかり過ぎてCSS未適用のデザイン崩れ状態で操作してたのでなんの画面がよく分かりませんでした)
ドメインは「tfo.hobima.com」になっているように見受けられました。
購入フローを含めたすべての処理がAWS内で処理されないのでは
負荷分散した意味が無いのでは?もしかしてここがボトルネック?
ペイジェントリンクタイプの技術要件は資料をどこかにしまったままなので
わざわざ引っ張りだして調べていませんが、
もしかしてペイジェントのサーバとの連携は1台(IPアドレスによる指定)しかできない制約があったかもしれません。
その制約があるのであればリンクタイプの利用は結構無理があるのでは?と考えていた矢先、
ある事が頭に浮かびました…
※ここは私の想像です。
AWS上の2台のサーバでログイン/商品検索/カート投入、
「tfo.hobima.com」のサーバで会員登録、注文処理。
そう考えると3台のサーバでデータを共通化させる事は必須と思うのですが
(少なくとも在庫管理が絶対必要かと)
もしかしてインターネット越しにDB接続させてる?
データベースがもし1台で3台分の処理を対応しているのだとすれば
ここがボトルネックになるのではと思います。
もしデータベースサーバがAWS側になく
物理サーバだったりしてスペックが拡張できないサーバの場合、
すぐにサーバをパワーアップさせる事は難しいと思います。
AWSだからサーバのパワーを上げてしまえばアクセスが集中しても
捌ききれると私も考えていましたが
こういった形でネットワーク構成に問題があったのではないかと思います。
単純に全てのサーバをAWS上に配置すれば
(ペイジェントと通信するサーバも含めて)
サーバスペックも変更できるしネットワーク上のトラフィックも減らせたのではと思うと少し残念です。
ただここでは簡単にサーバのパワーアップと言っていますが
予算には限りがあり、現実的な事を考えるとどこまで出来るかは分かりません。
特にAWSは従量課金制で何でも無制限にすると請求金額も無制限に膨らんでいくと思います。
自分だったらどうするかといった事も含め、
何かしらの参考になればと思います。
2020年9月21日開催予定だった2日目が11月1日に延期して開催されました。
その時も同じようにサイトの状況を見ていたのですが
午前中は前回よりもひどい状況でサーバは全く動いていないように感じましたが
13時30分をまわった頃のメンテナンス終了直後からサクサクと動作するようになりました。
公式の発表では不正なアクセスを遮断したという事でサーバの負荷を軽減させる事に成功したそうです。
2月に開催が予定されているトレフェスオンライン2でも同じようにアクセスが集中する事は予想されますが
その時も同じように不正なアクセスを遮断する事でサクサクと動作する事を願いたいと思います。