世界で約9億人が利用する巨大サービスへと成長したFacebook。日々膨大なトラフィックをさばき、新しいサービスを提供していく同社は、どのような開発体制を敷いているのだろうか。FacebookのCTO(最高技術責任者)であるBret Taylor氏に聞いた。
エンジニアは大体1000人程度で、1人のエンジニアが100万人に影響を与えているという計算ですね。これだけの人数のエンジニアを抱えていることには誇りを持っています。我々はエンジニアリングの文化を重視しており、何か問題があった際に対処できる状況を作っています。
1人のエンジニアが100万人に影響を与える状況なので、細かいことにこだわるというよりは、最重要なレベルの問題に対して適宜対応できる体制にしています。
これだけの人数はいますが、チームは非常に小さい単位で稼働しています。たとえば、iPhone向けのカメラアプリの「Facebook Camera」(日本では現時点では未公開)については、開発チームは6~7人でした。
また我々はバックエンドのテクノロジーを重要視しており、既存のインフラをベースに作業しています。ですので、アプリの開発は数人のチームで行いましたが、バックエンドには、もともとあったフォトストレージのインフラを利用しています。
我々が新しいサービスを考える際、2つのやり方があります。1つは、「Open Graph」のように全社戦略として開発するものです。この場合、Mark(CEOであるMark Zuckerberg氏)が言ったことに対して、全社でその内容を共有し、開発を進めていきます。
2つめは個々のエンジニアが主導するものです。我々は社内で「Hackathon(ハッカソン:開発イベント)」を行っています。あるエンジニアが1つのアイデアを持ってきた際、そのプロトタイプを作ってもらい、それを社内に紹介した上で、ローンチするかを判断します。社内で人気が高ければ、Markの承認を得た上でリリースするという流れです。「Facebook Video Calling」なども、ここから生まれました。
Markを含め、我々エグゼクティブもいまだにコーディングをしていますが、エンジニアがそれらをローンチさせてくれることはないでしょう(笑)。ですがもちろん、プロトタイプ作りやアイデアの提案は行っています。
小さいフィーチャーについては、ウィークデーであれば毎日更新しています。というのも、我が社のエンジニアリング文化として、「常に細かなアップデートをすることで(サービスの)レベルを向上させ、世界のユーザーに提供していく」と考えているからです。
一方で、タイムラインのような大きなフィーチャーについては少し時間をかけます。いきなり大きな変更をすると、マイナスな意見も出ます。以前、大きな変更を実施した際に「まるで家に誰かが忍び込んで、いきなり居間のレイアウトを変えられてしまった」と言われたこともあります。
ですので、何カ月かの猶予を持って更新するというスケジュールにしています。その期間内にもユーザーからフィードバックをもらって、内容をアップデートしていきます。約9億人のユーザーがいる状況ですので、びっくりさせないよう、段階を追って更新するという具合です。
細かな数字は公開していませんが、データセンターについては、効率性の向上に努めています。電力消費や冷却コストをいかに低く抑えるか、これが重要です。
また、オープンソースについても重視しています。さまざまなものをオープンにして、皆さんに提供できるようにしたい。たとえばHewlett-Packard(HP)などとは「Open Compute Project」という(データセンターのノウハウに関する)プロジェクトを行っています。より多くの人に我々のデータセンターの仕組み作りを提供し、各社がオープンな状況でデータセンターを構築できるようにという試みです。
我々はもともとオープンソーステクノロジーを使っています。言語にはPHP、データベースにはMySQL、メモリキャッシュにはmemcached、フォトストレージには独自にカスタムしたストレージを利用しています。
このように伝統的なテクノロジーを使いつつ、新たにオープンソーステクノロジーを提供しています。たとえば、PHPの高速化をする「HipHop for PHP」などです。オープンソースのインフラをより改善することで、ほかの企業にも影響を与えています。
私自身の経験を言えば、Googleで、大きなシステム作りをさせてもらえたり、あるインフラをより多くの人に提供するためにはどうすべきかということを学びました。そしてFriendFeedでは、少人数でより大きなことを行う可能性について学びました。
Facebookで求められるのは、技術者として有能なだけでなく、世界に何かしら影響を与える人物であるということです。製品デザインに長けていることはもちろん重要ですが、人々に影響を与えるという意味では心理学的な要素も必要ですし、技術的な要素も必要になります。
たとえばFacebookの写真共有機能では、友人をタグ付けして紹介することができます。ですがこれを開発する際、技術やデザインだけでなく、プライバシーについても同時に考える必要がありました。
CNET Japanの記事を毎朝メールでまとめ読み(無料)
ものづくりの革新と社会課題の解決
ニコンが描く「人と機械が共創する社会」
ZDNET×マイクロソフトが贈る特別企画
今、必要な戦略的セキュリティとガバナンス