大規模SNS実現のためのGREEのアプローチ大規模サイトの舞台裏(1/5 ページ)

大規模なサイトでは、どのようにWebアプリケーションをスケーラブルに構築しているのか。GREEのアプローチを、グリー取締役CTOにして、PHPフレームワークEthna(えすな)の開発者でもある藤本真樹氏が解説する。Webアプリケーション開発者必見だ。

» 2008年08月28日 00時00分 公開
[藤本真樹,ITmedia]

はじめに

 Webサイト構築で面白いのは、つい先日までどう見ても小規模なユーザーベースで動作していたサイトが、瞬く間に数万人、数十万人のユーザーを抱えることになったりする*ことです。また、最初は小規模だったアプリケーションが、少しずつ改善していくうちに、大規模なアプリケーション*になることがあります。本稿では、徐々に大きくなるWebアプリケーションをスケーラブルに構築する方法を説明します。

技術はコモディティ化しているけれど

 Webアプリケーションの開発に携わっている方は特に実感されていることと思いますが、ここ数年Webかいわいの動きは非常に速く、また面白いです。わたしの肌感覚としては、そうした動きは以前に比べれば落ち着いてきているようにも思いますが、だからこそこれからは「本物」であることが大事になってくるなー、と感じる今日このごろです。

 そうした動きの中では技術のコモディティ化も非常に速く、もはや「取りあえずWebサーバの負荷分散をさせたいけど、どうすればいいの?」とか、「データベースのパフォーマンスが落ちてきている。どうやって対策しよう」というレベルで悩むことはほとんどなくなっているように思います。

 例えば、オープンソースソフトウェア(OSS)でWebサーバの負荷分散を行う方法(mod_proxyやmod_proxy_balancer*、Pound*やLVS*など)についても、少し検索するだけでたくさん読むことができますし、データベースの負荷対策についても同様です。

実際にやってみるとまだまだ大変

 とはいえ、まじめに大規模Webアプリケーションを構築、運用する上では、上述のような「よく見る」トピック以外にも実に多くの問題にぶつかりますし、単純なWebサーバの負荷分散にしても、1台だったものを3台にするのと、10台だったものを200台にするのとでは少し話が違ってきます(コラム1)

 それだけの規模のサイトになれば、ロードバランサ自体の二重化は当然必要になってきますし、「ロードバランサはmod_proxy_balancerでいいのか、商用のものを導入した方がいいのか、スイッチはどうしよう? そもそもサーバ200台以上をどうやって管理していこうか? 従来はPCサーバを並列化させてきたが、ハイエンドなサーバを導入して台数を減らした方がいいのか?」などなど、いろいろと考える必要が出てきます。

 エンジニアとしては、この手の問題についてさまざまな要因を考慮した上で、適切な選択をしていかなければならないわけです。技術はコモディティ化している一方で、実際に手を動かす上で必要な、信頼できる情報はまだまだ少ないな、と感じています。そこで本稿では、大規模なWebアプリケーションを構築/運用する際に発生する問題とそれに対するGREEでのアプローチをご紹介します*

コラム1 大規模サイトとは?

 本文では、特に何の前提もなく「大規模サイト」と記述していますが、一口に大規模といっても、その意味はさまざまです。ソースコードの量が大規模なのかもしれませんし、プロジェクトとしての規模が大規模なのかもしれません。ユーザー数が大規模かもしれませんし、「そもそもどこからを大規模というのか……」などと考え始めるとキリがありません。

 正直、規模については「自分が大規模と思ったら大規模と考えるしかない」と思いますので、ここではあえて「どこからが大規模」とは定義しません。ただ、それではイメージがつかみにくいので、何となく10万人くらいはユーザーがいて、1日100万ページビューくらいはありそうなWebサイトを思い浮かべていただければ、と思います。


このページで出てきた専門用語

小規模なユーザーベースで動作していたサイトが、瞬く間に数万人、数十万人のユーザーを抱えることになったりする

GREEはまさにこの典型例だが、ソーシャルな(社会性の強い)ネットワークサービスはこうした傾向があるようだ。

大規模なアプリケーション

ここでの「大規模」は、ソースコードの分量や設計、機能などの面で大きくなることを指している。

mod_proxy_balancer

ロードバランス機能を実現するモジュールで、Apache 2.2で導入された。

Pound

リバースプロキシ専用に開発されたプロキシサーバで、ロードバランス機能も備える。

LVS

Linux Virtual Serverの略で、Linuxでの負荷分散を実現するソフトウェア。

GREEでのアプローチをご紹介します

GREEがどこまで「大規模」かはさておき(笑)。


       1|2|3|4|5 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ