iPhone4オンラインショップから学んだこと

2010.06.16 Author: ぴ

まずは、朝から眠いです。睡眠時間3時間切ったのって、ここ最近はないですから。

昨日(6/15 17:00)から始まったiPhone4の予約。iPhone3GSを持っている私は、iOS4で満足しておけばよいものを、解像度が4倍になるから…とか、エンジニアなのに新しいものを持たないのはあり得ない!とか叫び、購入することにしました。
17:00は会議中であったため、会議終了後に戦友(iPhone4を購入する人をこう定義する)に状況を聞くと、オンラインショップがダウンしてると言われ、言われてもアクセスし続けていました。

アップルからのメールで、20時までに来店すれば当日お渡しできますよ♪というメールも来たので、今から行こうかとも思いましたが、暑い中外を歩くのもやだな…という情けない状況だったので、オンラインに頼っていました。

帰宅してからが勝負だと、帰り次第に戦闘態勢に。
パソコンを出し、遅い晩ご飯を食べて格闘中、23:33にレスポンスコードに503が出てきたので、本腰モードで戦闘態勢に。

思い起こせば、オンラインショップで格闘するのって、これで何回目だろうと。
PSPの時も、Wiiのときも、PS3のときも、数えればきりがありません。
毎回、数時間費やしていることのばからしさ?というか楽しさ?は、後になってみれば武勇伝かもしれませんが、不毛なこと間違いなしですね。

もう寝ようかな、明日会社だし…。と思いながら、格闘していると徐々に見たことのない申し込み画面が1ページ、また1ページと出てきます。
となると、欲深い?もので、またがんばろうとしてしまうんですね。
結局、深夜戦は惨敗ということで床につきましたが、夢の中でもまだ購入し続けているんですね。起きてても寝てても変わらないのがまた笑えるのですが、寝ていないにもかかわらず早起きして見ると、さくっと購入できました。
あの苦労は何だったんだー。とっとと寝て、早起きした方がいいじゃん!と一人で突っ込んでいました。

と、戦記はここまでにして。
弊社でも、バースト的にトラフィックが増えるサイトの保守・管理をさせていただいています。
iPhoneとは違い1点ものを取り扱っていらっしゃるので、購入チャンスを逃すと次はないというさらに過酷な中でお客様が購入をされています。
少しでもご迷惑をおかけせずに、スムーズに購入ができるよう、ロードバランサー(L/B)やWeb/DBサーバー、Webアプリケーション自体のチューニングを日々行い、安定して運用できるように昼夜努力しています。

そんな中で、今回の戦況から学んだこととしては、
「購入遷移中の各ページには、外部ファイルを極力おかない」
に尽きるのだと思います。
アプリケーションの作り上、CSSやJSファイルは外部ファイルにすることが推奨されています。また、画像ファイルも多用されているので、ファイル数は増加傾向にあります。
こんな場合、サーバーがオーバーロード状態になっていれば、ページ表示に必要なすべてのファイルを落としてくることは非常に困難で、CSSが適用されていない状態であったり、画像がない状態であったり、はたまたJSが読み込まれないため、JSエラーになって処理が継続できないなど、使い物にならないページになってしまいます。

具体的改善策としては、

  • 表示は非常にシンプルにする
    → 購入できることがすべてで、見た目はどうでもいいです。
    → このようにすれば、画像点数やJSの外部ファイル数を減らせます。
  • CSSやJSは、メインのhtmlファイル内に埋め込む
    → 1回接続できれば、サーバーはResponseを返します。
    → Responseが正常に返ってくれば、ブラウザは次の処理を継続できます。
  • L/Bで正規WebサーバーにつながったセッションIDは、購入完了まで確実に保護する。
    → 弊社システムは確実にできているはずなんですが…。
    → フォームに入力して後に、メンテナンス中って言われるとどうかと。
  • RIAなフォームにする
    → Ajaxで十分ですが、通信量を削減するため、必要な情報のみのやりとりに限定してしまう
    → ユーザーのストレスは大いに削減できるはず。
  • そもそもの売り方を変える
    → これはビジネスモデルの話になるので難しいのですが、抽選にするとか、購入ページに入るための整理券を配るとか。
かなと。多くは意識しているつもりでも、いざバースト状態で自分が体験すると、大切さがより分かってきます。
とはいいつつも、バーストにあわせて物事準備をするのは、非常にコストがかかる話です。
今回のiPhoneなら、購入機会が延びるだけでしょうが、社会インフラではバーストにもある程度備える必要があります。
と考えると、この手の問題はなかなか簡単には解決できないですね。

名古屋のWebシステム開発・ネットワーク構築会社 コネクティボへ