Facebookはグラフ検索機能の展開から、最先端技術を導入したデータセンターの世界各所での建設に至るまで、あらゆるものごとを可能な限り単独で進め、社内で作り上げようとするのが通例だ。
このことは、世界最大のソーシャルネットワーク企業であるFacebookが今回光を当てた新の取り組みにも当てはまる。
その取り組みとは「Autoscale」だ。これはソフトウェアインフラのエネルギー効率を向上させるために、ウェブクラスタへの配備を管理する目的で設計されたものだ。
Facebookは12億8000万人以上のユーザーを抱えており、今もその数を増やし続けている。このため同社のウェブクラスタは既に、毎日数十億件ものページリクエストを受け取っており、サーバへの負荷は増す一方となっている。
これによって同社のソフトウェアインフラに対する負荷が、特にピークタイムに増大しており、場合によっては同サイトのパフォーマンスに悪影響を及ぼしかねないほどになっている。これらはいずれも、慎重に対処しなければ長期的に見た同社の利益を損ないかねない問題だ。
Facebookのインフラソフトウェア担当エンジニアであるQiang Wu氏は米国時間8月8日付けの朝のブログ投稿で、Autoscaleの開発は電力のモデル化やプロファイリング、そしてピーク時の電力管理、エナジープロポーショナル(電力消費量を必要な計算量に比例させるという考え方)コンピューティングといった他のさまざまなアイデアに追随して開始されたものだと述べている。
しかしWu氏によると、Autoscaleによってクラスタ内のさまざまなウェブサーバに対する負荷の分散方法が変わってくるのだという。
Autoscaleの基本的な考え方は、純粋なラウンドロビン(均等負荷分散)アプローチを採るのではなく、あるサーバが少なくとも中程度の負荷になるまで、ロードバランサがそのサーバに負荷を集中させるというものだ。このため全体的に負荷が低い状態となっている場合(例えば真夜中)、ロードバランサは一部のサーバ群のみを使用することになる。その他のサーバはアイドル状態のままにされるか、バッチ処理のワークロードを処理するために用いられる。
このアイデアは簡単そうに聞こえるが、大規模システム上で効率的かつ堅牢なかたちで実装するのは骨の折れる作業だ。
Autoscaleは本番用のウェブクラスタに配備されており、エンジニアリングチームの評価によると、これまでの結果では24時間あたり平均10~15%の電力削減を実現しており、深夜には最大27%の電力削減を達成することもあったという。
Facebookのエンジニアリングチームは、ピークタイムでの電力削減がゼロであった点を認めながらも、アクティブ状態にないサーバをアイドル状態にしたり、アクティブ状態にないリソースをバッチ処理用に振り替えるといった、その他の効率向上手段をとることができたという。
この記事は海外CBS Interactive発の記事を朝日インタラクティブが日本向けに編集したものです。