DECOLOGを運営するミツバチワークスに聞く
「かわいさへの理解が重要」――月間60億PVをさばき切るエンジニアの日常
DECOLOGは、10代〜20代の女性がメインユーザーのブログサービスだ。その規模は月間60億PV、モバイルブログサービスの中でも最大規模を誇る。エンジニアは、ユーザーが求める「かわいさ」と「莫大なトラフィックをいかに効率的にさばくか」を考えて、日々仕事をこなしている。 |
ミツバチワークスが運営するモバイルブログサービス「DECOLOG」は、10代後半から20代前半の女性を主な対象ユーザーとするユニークなサービスだ。
「月間60億PV」と、日本のモバイルブログサイトの中でも最大の規模を持つ。1日2億PVの膨大なトラフィックを約450台のサーバでさばく。その開発・運用を担当するエンジニアに、どのような日常を送っているのかを聞いた。
「よく作った、変態だな」と思った | ||
サービスを開発、運用しているのは少人数のエンジニアから成るチームだ。その1人、プログラマ 富田明徳氏は、DECOLOGを支えるサーバ群に最初に触れたときの感触をこう話す。
「痺れました。ケタが違う」
サーバ数がある規模を超えると、システムの性格が変わる。「生き物に触れているような感じでした。こっちをいじると、別の場所が反応する。足のツボを刺激すると体の別の場所が反応するように、まるで生き物みたいなバランスで成り立っている。よくこんなものを作ったな、これを作ったエンジニアは良い意味で変態だな、と驚きました」
富田氏の肩書きは「プログラマ」だが、その仕事範囲は広い。サーバ群を運用するための「仕組み」作りも大切な仕事である。「コードを書けることは重要。原点を大事にしたいと思って、プログラマという肩書きにしました」と、富田氏は語る。富田氏がDECOLOGのシステム開発・運用に参加して、5カ月ほどになる。いまではすっかり中核メンバーの1人だ。
「若い女性向けの機能」とは何か | ||
DECOLOGは「女性ユーザーが安心して使える」ことを徹底的に考え抜いて作られている。「検索エンジン避け」を施し、女性に不快感を与える広告は載せない。大がかりな広告宣伝はせずに口コミでじわじわとアクセスを伸ばし、現在の規模にまで成長した。
DECOLOGは、メインユーザー層である「10代後半から20代前半の女性ユーザー」向けの機能を搭載している。例えば、ユーザーは自分で好みの画像を使ってブログをカスタマイズし、「デコメ絵文字」を使える。そのため、ユーザーの個性を全開にしたブログを作ることができる。
ユーザーがそれぞれ好みの画像を使いカスタマイズし、さらに1つひとつの文字を画像で表現する「デコメ絵文字」を多用する。これはすなわち、システム要件として「非常に多くの種類の画像ファイルを扱わなければならない」ことを意味する。
このため、DECOLOGは、Web層とDB層の両方に負荷分散機構とキャッシュ機構を備え、大量のトラフィックと、多量の画像ファイルへのアクセス要求をさばいている。
NoSQLも取り入れてみた | ||
DECOLOGを支えるシステムは、新たな技術、サービス、オープンソース・ソフトウェアを積極的に評価して取り入れている。同社のシステム概要は別掲の記事に詳しい。
さらに最近、大量の画像ファイルを配信するため、アカマイ・テクノロジーズのCDN(Contents Delivery Network)を導入した。稼働率の高さ、コストとリスクを考えたうえでの導入だという。
同社は以前から、いわゆる「NoSQL」データベースの評価を進めていたが、一部に導入を始めた。オープンソースのKVS(Key-value store)の1つ「Redis」を、ブログの「カウンター」機能に使うことにした。カウンター機能には、従来はリレーショナル・データベース管理システムのMySQLを適用していたが、機能が単純でアクセス頻度が高いカウンターには、KVSの方が向いている。Redisを導入することでサーバ台数を4台から2台に減らし、しかも性能も改善できた。
このように、DECOLOGのシステムは、日々システム構成や運用技術の変化を続けている。
非機能要件「かわいい」に対応する | ||
DECOLOGの開発・運用で重要なポイントは何か。
富田氏は「ユーザーの感覚を理解しようとする姿勢です」という。具体的にはどういうことだろうか。
「DECOLOGには、重要な非機能要件として『かわいい』があるんです。自分のブログを『かわいくしたい』という要求を、どのようにサービスに落とし込むか。これをエンジニアは考えなければなりません」
例えば、日記の画面で「区切りのための線を入れる」機能がある。普通に考えれば、HTMLのHRタグを使えるようにすれば、機能としては事足りるように思える。だが、DECOLOGユーザーの中には、HRタグは「かわいくない」と感じる人もいるようだ。そのため、DECOLOGはここから一歩踏み込み、区切り線を好みの画像を変えられるようにすることで、「キラキラした線を入れられる」機能を実装した。
「僕たち男性エンジニアにとって、メインユーザー層である10代後半から20代前半の女性を、完全に理解することは難しい。それでも、理解しようとすること自体は面白い」と富田氏は語る。
「同じ問題を二度起こさない」 | ||
富田氏から、最近起こったトラブル事例についての話を聞くことができた。ネームサーバ(DNS)が1台ダウンしたことが原因で、システム全体が非常事態に陥ったことがあったという。
トラブルの発端は、プライマリDNSサーバの障害だった。ネームサーバ(DNS)は、通例、プライマリDNSとセカンダリDNSを設定する。プライマリDNSの応答がなければ、セカンダリDNSを利用する。従って、どちらか1台が落ちても大丈夫なはず──なのだが、大規模なDECOLOGのシステムの場合はそうはいかなかった。
プライマリDNSのサーバがダウンしたとき、次のような現象が起きた。各サーバからプライマリDNSへの問い合わせがタイムアウトして、セカンダリDNSヘ問い合わせるまでの待ち時間が発生する。この間に、処理要求がどんどんたまり、システム全体として「詰まった」状態が発生してしまった。
「最近起きたトラブルでは一番大きな事例です。幸い、ユーザーから見れば、日記サービスの一部の応答が遅い、という見え方だったことと、発生した時間帯が利用のピークではなかったことがあり、大きな問題には至りませんでした」
このときは、プライマリDNSのハードウェア交換に2時間ほど要した。その間、システム全体を止めないために応急処置を取った。サーバ群の管理に利用しているインフラ構成管理向けシステム統合フレームワーク「Chef」を使い、特に重要なサーバ群について、プライマリDNSの設定内容を、使えなくなったプライマリDNSサーバのアドレスではなく、利用可能なセカンダリDNSのアドレスへと書き換えた。
この際、全サーバの設定を同時に書き換えると、Chefサーバへアクセスが集中してしまい、新たなトラブルとなる可能性があった。そこで時間差を置いて変更が反映されるようにした。幸いなことに、これ以上の対策を取る必要が出る前に、前述したプライマリDNSのハードウェア交換が終了し、トラブルは解決した。
富田氏らは、同じ問題が再発しないよう措置を施した。DNSをプライマリとセカンダリの2台構成にするのではなく、クラスタ構成とした。複数のサーバに1つのIPアドレスを割り当てる。サーバ1台が故障したとしても、待ち時間なく他のサーバが名前解決のリクエストを処理する。今回のトラブルの発生原因となった「プライマリDNSが落ちた時にセカンダリDNSに切り替える」待ち時間が生じないようにした。
「同じトラブルを二度起こさない」、これがDECOLOG運用チームの原則である。
自分たちで環境を変えられる | ||
富田氏は、以前はWebシステムの受託開発を行っていた。緊急事態への対応、「火消し」に呼ばれることが多かったという。
受託開発と、自社サービス運用で違うところは何だろうか。
「一番違うのは、『1つのサービスを開発・運用する』という、同じ仕事を継続的に続けていく、ということです。受託だと、フェイズごとにやることが違う。まあ火消しにも『火事場の楽しさ』のようなものもあるのですが」
そして、もう1つ重要なことがある。「自分たちで仕事環境を変えることにハードルがない。これは、自社サービスならではですね」
「自分たちで環境を変える」ことは、前述したDECOLOG運用の考え方である「一度起こったトラブルは、二度起きないように対処する」という原則に結びついている。
「『一度回起こったトラブルは、二度起きないように対処する』と口先でいう人は大勢いますが、実際に徹底できている現場はほとんどありません。ミツバチワークスでは、本当にやっている。入社したとき、そこがすごいと思いました」と富田氏は語る。
このようなポリシーがなければ、片手で数えられるような少人数チームで、これだけ大規模なサービスの運用は難しいということだろう。
原則を徹底できている背景には、受託開発プロジェクトと違い、「システムが自分たちのコントロール下にある」であるという点にもあるようだ。受託開発だと、自分たちではコントロールできないところで火の手が上がる。しかし、自社サービスの場合は、火の手が上がらないように、自分たちで予防できる。そこが大きく違うところだと、富田氏は指摘する。
自社サービスならではの環境を、DECOLOGの開発・運用チームは築き上げ、成長させ続けているのだ。
「技術好き」なエンジニアなら絶対楽しい | ||
富田氏は、チームに加わって半年も経たないうちに、DECOLOG開発・運用の中核メンバーとして活躍している。少人数で大規模サービスを開発・運用している同社ならではの経験といえるだろう。
「DECOLOGはいまも成長し続けています。現在は片手で数えられる人数でサービスを回していますが、これからもっとエンジニアが必要になる」
どんな人なら、同社の開発チームで活躍できるのかを聞いてみた。まず、「非機能要件『かわいい』といったユーザーの要求を理解しようとする人」であることが、1つの条件だという。そして何より、「とにかく技術が好きな人」。
DECOLOGの開発・運営では、サービスを開発するプログラマとして能力を発揮する機会もあれば、インフラエンジニアとして大規模サービスの効率的な運用手法の確立に腕をふるう機会もある。何らかの得意分野を持つエンジニアにとって、大きなチャンスがあることは間違いない。
富田氏の話からは、月間60億PV、約450台のサーバという大規模なシステムの隅々まで、チームの1人ひとりのエンジニアが気を配り、操っている実感が伝わってくる。自分たちで作って運用するシステムだからこそ、自分たちで最適と考える環境を整え、成長させていける。
DECOLOGという日本屈指の大型モバイルブログサービスを、ベンチャー企業ならではの最小人数のチームで作り、操る。システムは日々変化し、進化する。富田氏らは、エンジニアとしてのチャレンジを今日も続けている。
提供:ミツバチワークス株式会社
企画:アイティメディア営業企画
制作:@IT自分戦略研究所 編集部
掲載内容有効期限:2011年5月13日
|
|
|