はてな広報ブログ

株式会社はてなの広報ブログです。ウェブサイト「はてな」の話題やイベント情報、サービス開発の裏話など多彩な情報をお伝えします。

オライリー・ジャパン『Make』にはてな自社サーバー開発記掲載&id:marqsのサーバ開発こぼれ話

Make: Technology on Your Time Volume 08オライリー・ジャパンから出版されているMake: Technology on Your Time Volume 08という自作/DIY系の季刊誌に、インフラ担当のid:marqsがはてな自社開発サーバーの記事を書きました。
今日は、本誌では書ききれなかったはてなサーバー開発のこぼれ話をご紹介します。

自社サーバー開発までの道のり

はじめまして、はてなでエンジニアとして働いているid:marqsです。
2008年5月にはてなに入社して以来、東京オフィスにあるインフラチームに所属しています。インフラチームの中でも、データベースのメンテナンスや、ログ解析、ハードウェアの購買/投入プランニングなどを主に担当しています。
はてなでは、今年5月に新たにサーバーを開発したのですが、実は初期から自作サーバーでサービスを運用していました。旧自作サーバーはid:jkondoが京都の板金工場に依頼して作ったサーバーシャーシを使用していました。これもなかなかコンパクトで使いやすかったのですが、さすがに5年前の設計なので運用上の支障がいくつか出てきていました(写真右は旧はてなサーバー。板金工場の名前から「金森(かなもり)」と呼ばれていました)。
例えば、あるパーツを固定するには、別のパーツを一旦外さないといけないなど、組み立て順序がまるでパズルのように複雑になっていました。そんな中、社内でも「なんとかしたいな、新しいサーバーが欲しいな」という声が上がっていました。そこで、2008年末に新サーバーを作る計画が立ち上がり、たまたま私にハードウェアとソフトウェア両方の経験があったため、この新サーバ開発を任されることになりました。

実際のサーバー開発:小型化、1Uラック固定、メンテ効率UPを目指して

実際の開発にあたって、まず社内でもっともサーバーにふれる機会が多いインフラ系エンジニア(id:stanaka,id:hideoki,id:maoe)の要望をまとめていきました。主な要望には、小型化、1Uラックに固定したい、メンテナンス性を上げたい、といったものがありました。ちなみに、要望の中にはサーバシャーシのカラーバリエーションが何色かほしいという要望もあり、はてなTシャツのように多色展開しようかなぁと、だいぶ悩んだ末に採用はしませんでしたが(笑)。

計3回に及ぶ試作を経て本番稼働

次に、まとめた要望リストから取捨選択をして新サーバーの仕様を決め、実際の設計に入りました。
これは、アプリケーション開発と同じようにホワイトボードにあれやこれやと図を書いてアイデアをかたちにしていく作業です。ある程度構成が決まった後は、実際の寸法を考えながら図面を書きました。ここではアプリケーション開発と異なり、パーツのサイズなどハードウェアにより制限されることが多く、特にパーツ選定とレイアウトに苦労しました。設計が終わると、今度は板金工場に試作を発注しました。
試作回数は計3回にのぼり、その度に「ここはこうしたほうがよいのではないか?」というフィードバックを繰り返しました。最終的に出来上がったものが写真のようなサーバーで、2009年の5月に無事に本番サービスとして稼動し始めました。実際の開発から本番環境への投入には、合計で3ヶ月くらいかかったことになります。

↑第二期はてな自作サーバー。愛称は「marqs-60(マルクス60)」。
パーツ構成など技術的仕様については、私のブログ記事に詳しく書いてありますのでご覧ください。
1Uラックマウント可能なサーバを自作する - marqs blog

こぼれ話1:板金工場の職人さん

シャーシの作成・加工は、板金工場の職人さんと相談しながら進めたのですが、難しい加工や急な変更も「わけないよ!」と言ってすぐに対応していただきました。実は、最初に依頼をしたときには、そんなに多くのシャーシをつくることになるとは思っておられなかったようですが、いまではかなりの数のシャーシを発注しているので、職人さんもびっくりしておられます。

打ち合わせ風景...ではなくて、打ち合わせ後に職人さんの自慢話を聞いているところ。

こぼれ話2:新サーバーの唯一の欠点

新サーバーは価格的にも、スペース的にもかなり満足度の高いものに仕上がっているのですが、ひとつだけ欠点があります。それは、運搬のしにくさです。以前のサーバーはシャーシの骨組み部分を持って、簡単に持ち運ぶことができたのですが、今回はちょっと持ち運びが不便です。そんなわけで、次回の改善課題にしたいと思います。

クルマのトランクに鎮座し、サーバールームに運ばれるところ。

こぼれ話3:文系女子も参加するサーバ組立体験会実施中

実は、社内のインフラチーム以外の人にもサーバを組み立て体験してもらうことがあります(もちろん、組立後はインフラチームのメンバーがチェックしていますが、ほとんど問題はありません)。ちなみに組立時間は「いけてるインフラアルバイト」(id:hxmasaki,id:poohtarou,id:rsakamot,id:halfrack)だと15分くらいなのですが、初めて組み立てる方は30分くらいかかるようです。

文系女子がサーバー組み立てに奮闘しているところ。

こぼれ話4 作業台と食事スペースの兼用は至難の技である

インフラチームの作業台はオフィスの中央テーブルを借りているのですが、そのテーブルはオフィスランチで皆で集まってごはんをたべるテーブルでもあります。そのため、作業途中でもランチの始まる時間には、片付けなければいけません。例えば、下の写真は新サーバーの電源スイッチを半田付けで自作したときのものですが、作業中の工具や部品を昼休みまでにすばやく片付けるのはなかなか至難の業でした。片付けないと総務のid:mucccuに怒られる(笑)ので、必死で片付けたのはここだけの秘密です。

専用組み立てスペースが欲しい今日この頃。

最後に:はてなのサービスを支え続ける自作サーバー

今回開発したサーバは、すでに数十台がはてなのサービスを支えており、特に大きなトラブルもありません。自分が作ったものが、多くのユーザを支えるインフラとなっているのは、とてもやりがいのあることだと思います。また、サーバも開発当初のままではなく、日々改良を重ねて進化していっています。
今後もインターネットサービスをよりよくするために、必要であればソフトウェアだけでなくハードウェアまでも作っていきたいと常々考えています。
より技術的な内容、特にシャーシ設計や寸法、パーツレイアウトなどハードウェア設計部分については、冒頭でご紹介したMake: Technology on Your Time Volume 08をぜひご一読ください。

Make: Technology on Your Time Volume 08

Make: Technology on Your Time Volume 08