TOPシステム開発> ハードウェア
まるごとPerl!
事例編〜Web 2.0サービスの中を見せます

第1回:Inside Hatena Bookmark
著者:はてな  伊藤 直也   2006/10/18
前のページ  1  2
ハードウェア

   ハードウェアは、はてなブックマークに限らずはてなのサービスでは基本的にすべて自作のPCサーバーを利用しています。はてなブックマークで利用している17 台もすべて自作のPC サーバーで、基本的なスペックは、次のようにごく普通なものです。
  • CPU:Pentium 4 3.2GHz
  • メモリ:Webサーバーには1GB/DBには4GB
  • ディスク:IDE(SCSIは使っていない)/DBはRAID

   秋葉原のパーツショップからパーツを取り寄せ、自社で組み立ててサーバールームに設置しています。

   通常のWebサイトの運用では、あまりハードウェアを自作したりといった話は聞きません。わざわざハードを自作するからにはそれなりのメリットがなければなりませんね。ハードウェアの自作に関してはてなが重要視しているポイントは、次の点です。

  • 必要なときにすぐ追加することができる
  • 用途に合わせてカスタマイズできる
  • コストが安い


負荷の見積もりが難しいインターネットサービスで発揮する自作サーバーのメリット

   インターネットで不特定多数に対して公開されているシステムの難しさの一つに、負荷の見積もりがあります。ある程度人気のあるインターネットサービスではトラフィックは一定に落ち着くことはなく、アクティブなサービスであればあるほどそれは日々上昇し続けます。

   特に弊社で展開しているサービスは、開発している間も「このサービスはどのぐらい流行るだろうか」ということすらわからないものが多く、どういったペースでユーザー/トラフィックが増えるかなどは全く想定できません。

   また、システムへの負荷には多くの場合閾値が存在します。徐々に負荷が上がっていき少しずつシステムが辛くなっていくのではなく、ある日を境に突然レスポンス速度が極端に悪化したりするのです。

   このような理由から、インターネットサービスにおいてはユーザーの増加具合を予測したり、サーバーの追加ペースを事前に計画したりするのが非常に難しいのが現実です。

   そこで、はてなではもういっそのことと思い、開き直ってしまい、いつでもリソースが追加できる状態にして、負荷が高くなったらなるべく短い時間でそれに対応するという方針で運用を行っています。

   どれぐらいになるか分からない負荷に対して冗長なシステムを用意するのではなく、必要になった頃に素早くそれを追加する、という方針です。これを実行するにあたって、サーバーをいつでも追加できる状態をキープできるかどうかが鍵を握っているのです。

   業態形態によっては一概には言えないかもしれませんが、弊社のようにサーバーが必要になってから投入までにかかる時間が数時間といった環境を実現するのは、既製品を利用していたり、あるいはホスティングを利用しているという場合には難しいでしょう。サーバーを自作にしておけば、ある程度のパーツを社内で常に保持さえしえていれば、そこにかかる時間は組み立て時間だけに短縮できます。

   「既製品でもあらかじめ余剰のサーバーを確保しておけば良いのではないか」と思われるかもしれません。しかし、未来に負荷が上がるとき、追加すべきサーバーがどのような用途であるかを事前に予測することはできるでしょうか。

   「Webサーバー?アプリケーションサーバー?データベース?」通常、サーバーハードウェアは用途ごとにスペックが異なります。用途の予測ができなければ、余剰のサーバーを用意しようにもどういったスペックのサーバーを用意しておけばよいか見当がつきません。

   ここで自作であることによる「用途に合わせてカスタマイズできる」点が生きてきます。

   例えば追加したいサーバーがWebサーバーであれば、CPUやメモリなどのリソースはそれほど必要としません。ディスクも高価なものは必要ないでしょう。一方データベースはそこに使うメモリの容量やディスクの速度がシステム全体のパフォーマンスに大きく影響を与えます。

   また、システムクラッシュ時のことを想定すると、データを損失しないようにRAIDを使いたいところです。また、データベースはデータベースでも、それがマスターサーバーなのかスレーブサーバーなのかでも要求されるハードウェアスペックが異なってきます。

   自作なら必要になったころに好きな構成でサーバーを組み立てられるので、素早く必要な機能を備えた構成でサーバーを増やせます。

   早く必要なものを揃えられると言っても、肝心の物が高価ではそう簡単に手を出すことができません。そこでコストを低く抑えるという意味でも、自作であることに利点があります。

   後述しますが、コストが安いということは、単に企業の売り上げの利益率を高められるというだけでなく、LightweightLanguage(以下LL)でのWebアプリケーション開発において負荷分散という点で重要な意味を持つことにもなります。

前のページ  1  2

株式会社はてな 伊藤 直也
著者プロフィール
株式会社はてな  伊藤 直也
取締役最高技術責任者
ブログサービスやソーシャルブックマークなど、はてなの各種サービスの企画、開発を行う。著書に「BlogHacks」(オライリージャパン刊)。「続・初めてのPerl」(オライリージャパン)、「Perl救命病棟」(翔泳社刊)では監訳を務めた。


INDEX
第1回:Inside Hatena Bookmark
  はじめに
ハードウェア