もしあなたの会社がFavebookと同じサイズで、数百万台のサーバー上に20億人以上のユーザーを抱え、毎日数千回の設定変更(そこには無数の設定チェックが行われる)を行うとしよう。容易に想像できるように、設定作業は大変な作業だ。Facebookではよくあることだが、彼らはほどんどの企業には縁のない問題取り組まなければならず、しばしば普通のツールの限界に達してしまう。
こうした固有の問題を解決するために、Facebookは新しい設定配信プロセスを開発した。その名はLocation Aware Delivery(位置を考慮した配信)。略してLADと呼ばれるものだ。LADを開発するまでは、同社はZoo Keeperというオープンソースツールを使用して、設定データを配信していた。このツールは機能はしていたが、Facebookのような規模の会社に対しては、きわめて重大な制限が存在していた。
おそらくそれらの中でも最も深刻なものは、一度には2500の相手に対して5メガバイトの配信しかできないように制限されていたことだった。設定がどのように機能するのかの感覚を掴んでもらうためにMessengerのようなFacebookのサービスをリアルタムに正しい設定で配信することを考えて欲しい。それは何百万ものサーバーに対して、あるユーザーには英語で、別のユーザーはスペイン語で配信するといったことを意味する。
Facebookは、データそのものを配信メカニズムから切り離し、遅延時間が5秒未満で、Zoo Keeperに比べて10倍以上のファイルを扱うことのできる、各種の制限を克服したツールを開発しようと考えた。そしてもちろん、それら全てを何百万というクライアント上で実行して、Facebookだけが問題として出会う、正気とは思えない更新頻度と流量急増に対応したいと考えたのだ。
Facebookエンジニアリングチームが作成したプロダクトであるLAD(ところでドジャースはこれについてどう思うだろうか)は、2つの部分から構成されている。1つ目は設定ファイルを必要とするマシンに配信を行う、Facebookのあらゆるマシン上の1つずつ存在するプロキシーだ。2つ目はディストリビューターである。その名前が示すように設定情報を配信(ディストリビュート)する。ディストリビューターは新しい更新をチェックし、それが発見されたときには、更新を探しているマシンたちのために、配信ツリーを生成する。
FacebookのAli Haider-Zaveriによる、新しい配信方法を発表したブログ記事によれば、このツリー方式は、Facebookが極めて大量の設定更新を配信しようとしたときに直面した多くの問題の解決に役立ったと言う。「ツリーを活用することで、私たちの持つ全てのマシンではなく、関心のあるプロキシに対してのみ更新がプッシュされるように、LADは保証してくれるのです。さらに、親マシンはその子マシンに更新を直接送信することができるため、ルートに近い1台のマシンだけが過負荷になることもありません」とHaider-Zaveriは書いている。
先に述べた制限に関しても克服することができた。5MBの更新制限は100MBに増やされた。またクライアント数2500の制限も4万へと増やされた。
このシステムは簡単に作られたわけではない。テストと再テストを繰り返す必要があったが、やっと運用を開始できるようになったのだ…少なくとも今は ―― この先Facebookがまた別の困難に直面し、他の誰もが考慮することのなかった新しいやり方を見つける迄は(なにしろFacebookのスケールに達する者は他にはいないのだ)。
[原文へ]
(翻訳:sako)