in between days

表参道で働くシニアのブログ

Facebookにテスト用サーバはないかもしれないけどテストはやってるらしいよ、という話

ネタフルさんで「Facebookにはテスト用サーバがない」という記事が上がってまして、

Tetsuya Isozaki氏がセミナーで聞いた話によると、Facebookにはテスト用サーバというものがなく、エンジニアは全て本番環境で開発をしているのだそうです。
ウォンテッド株式会社社長の仲暁子さん(元Facebook)が、セミナーで以下のような話をされたそうです。
Facebookにはテスト用サーバがない。リリースとなったらそれをそのまま一般公開するだけ - netafull

というセミナーの話から、テスト用サーバがない=ロクにテストをしていない、と受け取った読者の方もいるようで、Facebookは危ないとか7億人のプライバシーデータを弄んでいるとか、こんなところに個人情報を預けるのバカだとか、いやこれこそがハッカースピリッツだとかそういう反応がツイッターやはてなブックマークであったわけですが、吉岡さん(id:hyoshiok)曰く

ということで、テスト用サーバーがないからといってテストをしてないわけではない。ということらしいですが、じゃあ実際にはどういうふうに開発をしているのか? が気になるわけで、参照できるリソースがネットにいくつかあるのでまとめてみました。

Yee Lee氏が2011年1月に公開したメモ

PayPalやSkypeやGoogleで働いてスタートアップ投資家のYee Lee氏が友人に聞いた話をまとめたメモがブログに公開されています。

How Facebook Ships Code - Frame Think

これは@tur_ki_sh氏による日本語訳が公開されているので、とくにサーバに関連しそうなところを引用します*1

Read an Interesting Article on Facebook Developers(和訳) - my days and responses

オペレーションチームはリリースするコードを徐々に反映させることにより実行する

  • Facebookには60,000台程度のサーバーがある
  • 新しいコードのリリースには9つのレベルが存在する
  • 最小のレベルでは6サーバーだけになる。
  • 例えば、火曜日の新規リリースが6サーバーを対象に行われる(レベル1)場合、オペレーションチームはそれら6つのサーバーを監視し、正しく機能していることを次のレベルへと移行する前に確認する。
  • リリースが問題を引き起こした場合(例えば、エラーが出る、など。)には更新を停止する。問題となるチェンジセットをコミットしたエンジニアは問題の修復に専念することになる。そしてリリースはレベル1からやりなおしとなる。
  • リリースは同じレベルを繰り返し通過する場合がある: 1-2-3-修正。1に戻る。1-2-3-4-5-修正。1に戻る。1-2-3-4-5-6-7-8-9。

サーバ台数は約1年前で6万台と……(;´Д`)

テスト自動化についてFacebookのエンジニアが答える

FacebookエンジニアのSteven Grimm氏がソーシャル質問サイトQuoraで「Facebookはどうやってテストを自動化してるの?」という質問に答えています。

What kind of automated testing does Facebook do? - Quora

For our PHP code, we have a suite of a few thousand test classes using the PHPUnit framework. ......

ちなみに2010年6月時点のQ&Aです。

安全にコードを扱う手法を解説したテックトーク

英語のリスニングが得意なかた向けですが、FacebookのリリースエンジニアのChuck Rossi氏が2011年5月に「Pushing millions of lines of code five days a week」というタイトルで講演したTech TalkのビデオがFacebook Engineeringで公開されています*2

http://www.facebook.com/video/video.php?v=10100259101684977&oid=9445547199

Every work day Facebook is safely updated with hundreds of changes including bug fixes, new features, and product improvements. Given hundreds of engineers, thousands of changes every week and hundreds of millions of users we have worldwide, this task seems like it should be impossible. ......

LivestreamのFacebook Tech Talksチャンネルにもほかにビデオがいろいろあるようです。英語力のある方はぜひどうぞ

*1:※引用者は技術のことをよくわかってません。全体を参照してください

*2:私は早々にリタイヤしたので内容は確認してませんすいませんごめんなさい