解決策
2012年のNew York Times Bitsの記事で、Quentin HardyはFacebookの成功の一部をパフォーマンスエンジニアリングの成果だとしている。2002年に設立されたFriendsterは、高負荷時に頻繁な障害と遅いページ読み込みに悩まされ、当時の慣行に従って大量の情報を単一のデータベースに格納していた。
記事の言葉を借りれば、Facebookはこれを偶然によって回避した。ハーバード大学で始まり、その後他のアイビーリーグの学校、他の大学、そして一般公開へと展開した。Mark Zuckerbergは各大学ごとに別々のデータベースを作成し、希望する場合に大学間で人々をつなぐソフトウェアを書いた。そのモデルは、現在シャードと呼ばれる多数の別々のデータベースとして存続しており、新規ユーザーは全体システムが処理できる能力に基づいて割り当てられる。
記事はまた、匿名で語った幹部によると、簡素化の功績も挙げている。Facebookは二人の共通の友人のみを調べたが、これはFriendsterが隔たりの次数を計算しようとした試みよりもはるかに簡単な問題だった。Accelは2005年の投資後、Veritas Softwareの創業者であるJeff Rothschildをコンサルタントとして招き、Zuckerbergは彼を説得してサーバーを監督させた。
達成したこと
各大学に独自のデータベースを与え、それらをまたいで人々をリンクするソフトウェアを書くことで、各障害と各負荷をローカルに留める。
うまくいった理由
全ユーザーに対する単一のデータベースは、トラフィックが増えるにつれて速度が低下し、一緒に障害が発生する。
一度に一つの学校ずつ展開することで、チームは実践しながら学び、期待感を高めることができた。
大学ごとに別々のデータベースを持つことで、障害がローカル化され、システムがより安定した。
隔たりの次数ではなく共通の友人を数えることで、クエリを安価に保った。
応用できること
段階的な展開は、スケールするアーキテクチャを強制することができる。負荷が押し寄せる前に、自然な単位で分割せよ。
その後
記事によると、Facebookの9億人のユーザーは現在、別々のシャードに存在している。Friendsterは2003年にGoogleからIPO前の株式で3000万ドルのオファーを断り、2008年には約1億1500万人の会員でピークを迎えた後、衰退し、2009年後半に売却された。
出典をたどる
出典
- Engineering Tricks That Helped Facebook Win The New York Times (Bits) · archive.nytimes.com ·