2011年12月28日水曜日

PVでサーバを見積ることはおすすめしません

「私のサービスは毎月1億PVくらいになりそうなんですけど、どのインスタンスがいいですか?」

こんな質問をときたま受ける。マジレスすると、

  • 1ページあたりの転送量がわからん
  • どれだけのキャッシュをブラウザに効かせるのかわからん
  • そもそもそのページが動的に生成されるとして、その重さがわからん

などなどの理由で、ずばっと答えられないので、相手をガッカリさせることがある。

責任のある答えは「試しに作って測定してください。測定して、足りなければ増やせばいいので」というのが私の典型的な回答になる。

もちろん、超ざっくりでいいなら、こんな例えをしてみる。

  • 1ページあたり1MB、ブラウザキャッシュは考慮しないとして、30PV/sec とすると、30MByte/sec == 240Mbit/sec なので余裕もったサーバなら1台あたりはこんなもんじゃないかと。AWSならlargeインスタンスでならなんとかなるレベル.単純計算すると、これが月間7000万PVという数字になる。実際にはボトムとピークで7倍の差があるとして、一台のlargeインスタンスで1000万PVという無茶な計算がなりたつ。
  • DAUが1万人のアプリがあり、ピーク時にはその1/10である1000人が同時アクセスをする。10秒に一度ボタンをおすとして、1秒あたり100リクエストをさばくとする。1リクエストあたり10アクションがおこるとして、1000アクションを同時にさばけるアプリが動けばいいのならば、ここで必要なサーバは1台。

こんな適当なことを言われたらみなさん怒ると思います。まったくアプリの苦労をわかってないといわれ、あらゆる言葉で罵倒されることでしょう。というわけで測るしかないのです。

世の中のWebページやWebサービスの指針としてPage Viewが重視されるようになったのはいつからだろう。

私のなかの超適当な印象だと(年数は適当。調べたいけどもうわからない)

  • 96年以前: そもそもたいして数字に意味がなかった。→webサーバがあればおおいばりの時代
  • 97年: ネットスケープが2億Hit/dayとかいってたような。→squidなどのアクセス側proxyがよりがんばってた時代
  • 98年: ポータルサイトがユニークユーザ数を競いだしてたような。→だんだん有料コンテンツというのが出てきた
  • 99年: 滞在時間を競っていたような→長く滞留すればそれだけ広告を目にする。
  • それ以降、企画する人の企画がPVによって語られ、予算がつくように。。
  • ソーシャルゲームではプラットフォーマはなんでもかんでもPVあたりのコストや収益で測る。

こう考えると、hitとかいっていた時代は技術者が牽引してた時代だったなあと。そんな時代じゃないので最初のような質問がでてくるのは当然かしれない。