Linda Rising氏による「誰を信頼しますか?」
Agile2008の3日目、8/6(水)午前中の、Linda Risingによるセッションです。セッションの冒頭、Linda Risingはとてもゆったりとしたきれいな、わかりやすい英語で話し始めました。
作者 Gavin Terrill, 翻訳者 編集部 投稿日 2008年5月19日 午後6時26分
Facebookのエンジニアリングのブログ(source)上で、ソフトウェアエンジニアであるEugene Letuchy氏が最近、Facebook Chatの背景にあるエンジニアリングに関する決定(source)について詳細を書いた。
機能のユーザベースが実際には一晩で0から7000万になる場合、最初からスケーラビリティを考えておく必要がある。
Eugene氏はそのサイズのユーザベースに対する多くの課題を 特定した。
ユーザがオンラインであろうと、オフラインであろうと、すべての友達に通知を送信するという単純な実装は1秒につきO(平均的な友達リストサイズ*ピーク ユーザ * チャーン率)メッセージという最悪のケースをはらんでいる。ここでチャーン率は、1秒ごとのイベントでユーザがオンラインとオフラインになるユーザの周波 数のことである。ユーザごとの平均的な友達の数が百単位で計測され、サイトのピーク時の並行ユーザの数が数百万であることを考慮すると、このことは広く受 け入れがたいとは言えない。
もう1つの課題は、リアルタイムでメッセージを送ることであった。Facebookは、CometのXHR Long Polling Process(source)と同様な方法をとっている、クライアントがサーバから更新を引き出すテクニックを選択している。
われわれが選択した、1人のユーザからテキストを取得し他のユーザに渡すそのメソッドには、各Facebookページでiframeをロードし、その ifameの Javascriptをそのクライアントのデータをサーバが保持している限り、返さないHTTP GET要求にする。
Eugene氏は続けて「長時間実行中の同時要求が大量にあると、標準LAMPのApacheの部分が疑わしい実装の選択を溜め込んでしまう」と語る。
FacebookはC++およびErlangを選択し、 クラスター化およびパーティション化されたサブシステムを実装する。C++モジュールがチャットメッセージの記録に使用される一方で、Erlangが「オ ンラインユーザの会話をメモリー内に保持し、 長時間ポーリングされたHTTP要求に対処する」。Linux 2.6で導入されている新しいシステムコールは、Erlangモジュールの駆動に使用された。Eugene氏は、Erlangでおこなうことに決めた理由 を以下のように述べている。
つまり、問題のドメインがグローブのようにErlangとぴったり合う。Erlangは機能的な並行性指向の言語であり、極めて軽量なユーザスペース「プ ロセス」、 share-nothingメッセージパッシングセマンティクス、内蔵型ディストリビューションを装備し、大規模なソフトリアルタイム稼動システムでの 20年間にわたるデプロイメントによって証明された「クラッシュおよびリカバー」の考えを固持している。
「スケーラブルなクロス言語サービス開発」向けのオープンソースフレームワークであるThrift(source)(昨年のエイプリルフールにFacebookに よってリリースされた)は、Facebook Chatで使用されているさまざまなテクノロジーを結束させるために使用された。今は、Erlangのバインディングを特色としている。
かつて興味深いアプローチは、いわゆる「dark launch」と呼ばれるサービスのロールアウトであった。
ユーザが一晩で0から7000万になる秘密は、すべてを一挙にするのを避けることである。われわれは「dark launch」期間、多くのマシンを叩いているリアルユーザの影響をシミュレーションすることにした。「dark launch」では、Facebookページがチャットサーバと関連づいて、情報の照会をし、ページに描かれた単一UIエレメントなしでメッセージ送信を シミュレートする。
FacebookエンジニアによるErlangの選択は、その言語にとって重要な承認である。 ErlangのエバンジェリストであるYariv Sadan氏(source)は、以下のように述べている。
この発表によって、Erlangがスケーラブルなリアルタイム(aka Comet)アプリケーションを構築するための *the*プラットフォームであることに対するあらゆる疑いを取り除くに違いない。
原文はこちらです:http://www.infoq.com/news/2008/05/facebookchatarchitecture
Agile2008の3日目、8/6(水)午前中の、Linda Risingによるセッションです。セッションの冒頭、Linda Risingはとてもゆったりとしたきれいな、わかりやすい英語で話し始めました。
Web2.0 に対する関心は、引き続き高いものがあります。 ただ、その関心は、新しいビジネス・モデルと、プログラミング・スタイルの二つの分野に集中しているように思えます。 今回のセミナーでは、Google のサービスの基礎である分散処理技術に注目します。
Jean Tabaka氏の書いた書籍では、会議などのチーム活動において、ファシリテーションの手法とツールについて具体的かつ実践的に説明しています。8/8(金)、Agile2008の最終日の朝のセッションでは、Jean Tabaka氏自身が本の内容をベースとしたセッションを行いました。
Agile2008の4日目となる8/6(木)の8:30から、Hubert Smits氏による「ゲーム・デザイン・ワークショップ」がおこなわれました。ゲームと言っても単なる遊びではなく、「フレームゲーム」と呼ばれる、グループでの情報収集や意志決定、また教育やトレーニングの教材として使えるいろいろなゲームです。
eBayが日々挑んでいる主要なアーキテクチャの勢力は、スケーラビリティです。これはアーキテクチャや設計に関するあらゆる意思決定を特徴づけたり、駆り立てたりします。
Bean Validationフレームワークの初期ドラフトに関する以前の記事に続き、InfoQは専門家グループが求めているコミュニティの関与と提案について理解を深めるため、Emmanuel Bernard氏と対談しました。
ポーカーは他のトピックにも広く適用できるような数少ない教えを私にもたらしてくれたと信じています。実際私はソフトウェアを開発すればするほど、これら二つの仕事は非常に似ていると言う確信の度合いを深めています。
恒例の「バーチャルパネルセッション」で、InfoQは新しいOASIS BPEL4People技術委員会の代表と対談をし、この作業が何故必要であるかについて彼らのフィードバックを得る機会を得ました。
No comments
返信