速くて落ちないサービスを提供する

外からはなかなか評価されない仕事としてもう一つ大きいのがサーバーの仕事です。はてなのように、1ヶ月のUU(ユニークユーザー)数900万人、月間のPV(ページビュー)が10億PVを超えるサイトを運営するには、当たり前ですが相当なサーバーやネットワークが必要となります。

これまでこのサーバーやネットワークについては、「なるべく安く」ということを目標に構築してきました。売り上げが安定的ではないため、業績が悪化した際にリスクとなる固定費をなるべく減らしたかったからです。(ちなみにはてなは外部からこれまで資本を入れておらず、全て自分たちの事業で生み出した利益を元に設備投資を行ってきています。苦労して生み出した利益を使ってサーバーを買うわけですから、そのコストについて厳しくなるのは当然ですし、そのおかげでネットベンチャーには珍しく、完全自己資本でここまで会社を成長させることができました。ただ、自己資本であるがゆえの甘さもやはりあると思います。それが例えばこうしたインフラへの消極的投資というところに逆に現れているという考えもできるでしょう。(段々と話が長くなってきたので、自己資本経営についての話はまた別に書いてみたいと思います))

ユーザーが増加し、収益もある程度安定してきた事から、昨年末に「必要な投資は積極的に行い、インフラの品質を上げよう」、という決定を行いました。これまでの、「とにかく安いインフラを作る」から、「必要な部分にはお金を使って品質の高いインフラを作る」にモードを切り替えたわけです。

ただ、単に「お金を使う」といっても、業者の言いなりになって良いのかどうかも分からない製品を次々に買うようなことはしたくありません。これまで自分たちでサーバーを作ってきたノウハウを最大限に活かし、創意工夫をして必要な投資だけを積極的に行い、安価な方法でまかなえる部分は安く押さえつつ、インフラの品質を劇的に上げよう、というプロジェクトが立ち上がりました。

まず、サーバーやネットワークのインフラを主に受け持つサーバーチームのメンバーを増やしました。サーバーチームはこれまで主にid:danjouが担当していましたが(これが一人だった、というのもある意味すごいですよね、ほんとお疲れ様でした)、現在アルバイトを含めて6人のメンバーがおり、それを伊藤(id:naoya)がまとめています。

取り組んだ内容として大きかったのがデータセンターへのサーバー移行と、それに伴う回線品質の向上です。データセンター移行記に詳しいですが、数百台あるサーバーを、なるべくサービスを止めずにデータセンターへ移行し、品質の高いインターネット回線へと変更を行いました。

f:id:naoya:20070115192655j:image

また、サービスのレスポンスタイムを向上させるため、必要な部分には高性能サーバーを利用し、サービスのダウンタイム(停止時間)をなるべく短くするために、さまざまな冗長化策を講じました。

「冗長」というと一般には話が長くてつまらない、といったマイナスの言葉ですが、コンピュータの世界では冗長である事、つまり余分がある事は基本的に良い事です。冗長であるとは、1つのデータが消えてしまっても、別の場所に同じデータがあって復旧できる事であり、1つの回線が切れても、1つのサーバーが動かなくなってしまっても、サービスが提供し続けられることになるわけです。

冗長でない場所、つまり「ここが止まると全体に障害が発生してしまう」といった場所をSPOF(Single Point of Failure)と呼び、このSPOFを無くす事にたくさんの労力を注ぎ込んでいます。(詳しい説明はまたこの取り組みを率先しているid:stanakaid:naoyaが書いたり発表したりしてくれるでしょう)

こうした努力のおかげではてなのサービスの稼働率は大幅に向上しました。例えば、はてなダイアリーの直近の1ヶ月間の稼働率は99.8%を超えており、その他のサービスでも99.8 - 99.9%以上の稼働率を達成しています。また、サービスの反応速度も向上し、軒並み1秒未満でページが表示されるようになっています。

f:id:jkondo:20071104065015p:image
これは、はてなの主要サービス( d,g,b,f)のレスポンスタイムのヒストグラムですが、多くが1秒以内で応答を返している様子が分かります。

データセンターの移行は今年中に完了する予定ですが、レスポンスタイムの向上、稼働率の向上はいつまでも追求し続けなければなりません。はてなダイアリーやその他のサービスを利用されているユーザーの皆さんに、「そういえば最近ちょっとはてなが軽くなったね、落ちなくなったね」と言ってもらえるように、裏側ではたくさんの取り組みを行っています。