Twitterのスケーリング:可能性はあるのか?

次の記事

Identity 2.0のスタートアップSxipがデッドプール入り

たった2日前、また大型のダウンタイムの被害で、一部ユーザーを不満に陥れ、またある人たちからは「何故このプラットフォームは問題続きなのか?」と疑問の声も出た連絡用メッセージアプリケーションの「Twitter 」。

Twitterが抱える技術的問題と、このスタートアップの前途に立ちはだかる難題に精通した人物と最近話す機会があった。彼は、問題の所在は会社を追い出されたエンジニア部門の元ヘッドBlaine Cookにあるのでもなく、Joyent NTT(同社のホスト)にあるのでもない、自分たちの問題が先々どれだけややこしいことになるか早い段階で気づけなかった見通しの甘さにあるんだよ、という自分の見方をまた繰り返し語っていた。

問題は、グループメッセージングを巨大なスケールで達成することが非常に難しいことにある。ほかのWordPressDiggのような大型サイトは、大型サイトと言ってもそのほとんどは既知の問題との取り組みで対処できる。 大量のページや、大量の画像をどう配信するか、という、まあ、よくある問題だ。Twitterが他と違うのは大量のメッセージをパースし、尚且つそれを複数の受け手に届けなくてはならないところだろう。しかもユーザー一人一人が他のユーザーたちと自分だけの固有のコネクションを持っている状態で、それを行わなくてはならないのだ。

ソーシャルネットワークにも似たような複雑性の問題があるが、それはただメッセージを一人のユーザー(多くてもせいぜい特定のグループ)宛てにルートするだけで済む。それでもFriendsterのようなソーシャルネットワークはもう何年も技術的なスケーリングの問題で苦戦している。Twitterが扱うのはテキストメッセージ処理だけである。そして多くの場合、かなり頻繁にメッセージを流すアクティブなユーザーが相手で、それを何百人という連絡先(つまりTwitter流に言うと“フォロワー”)に届けるのだ。Twitterに新規ユーザーが加われば加わる度に増え、人と人が繋がれば、またその度に新規コネクションが増え、その全てを処理するんだからコンピュータ処理能力だって幾何学級数的に大きなものが必要になる。

一方でもっとも優れたウェブアプリケーションのいくつかは、非常に複雑な問題を取り扱いつつ、利用者にはシンプルな結果を提供する(例:Google)。これらアプリケーションが成功したのは、立ちふさがる技術的難問を解決しようとする技術者の創造的努力の関与が大きかった。従来の枠組みを超えたところで問題解決に繋がることも多かった。Twitterにおいても成功事例と評価される信頼レベルを確立するためには、新地平を開拓するようなわかりやすい解決策が求められる。

私の話した人物は、現在および将来において生じる障害に対して、Twitterチームがいかに準備不足であったか、あるいはまた準備不足であるかについても言及した。小規模チームには技術者も少数で、システムの土台部分ないしアーキテクチャ面に携わるのはひとりないし二人に過ぎなかった。Diggにおいてはネットワークおよびシステム面に携わる技術者だけでもTwitterの技術者全員より多く、またDiggの開発チームは超一流の有名スターによって率いられていたとも言っていた。

Twitterの問題はしばしばRubyOnRailsというウェブ開発フレームワークを採用していることに起因するとも言われる。Railsで構築されたサイトとして、Twitterはほぼ間違いなく最大規模のものだろう。そのこともあって、Railsのファンたちは批判さらされると即座に反論し(訳注:リンクは現在404のエラーで見ることはできません)、矛先をTwitterの技術者たちに向けていた。巨大規模のシステムに実績のないフレームワークを適合させる場合、そのリスクおよび解決のための作業を考慮しておかなければならない。Railsは開発の即時性にフォーカスしたもので、本来は大規模アプリケーションの開発をターゲットとしたものではない。

Railsのおかげで、Twitterは開発期間を短縮することができた。直ちにサービスの提供を開始し、そしてまた新機能の導入も比較的短期で行うことができた。しかし古い格言に言う「Good、Fast、Cheap – pick two(訳注:どの2つの組み合わせでも1つは落ちる。すべてを得ることはできない)」がまさに当てはまる。Railsは集中的なタスク処理を行う場合にJavaやCと競合し得るプラットフォームではないことを認めても、Railsの価値をなんら貶めるものではない。Railsは今日まで十分に役割を果たしてくれたが、Twitterはいま岐路にある。今のところApache上にRubyで動くクラスタ処理が実装されることはありそうもない。

Twitterは非常に有用でかつ人気のあるサービスだ。しかし技術的に解決しなければならない非常に複雑な問題もある。Twitterに必要なのは新たなアーキテクチャと(1500万ドルの助けを借りて得られる)優秀な人材の注入だけではなく、利用者およびわれわれ傍観者による少々の忍耐といったところだろうか。

[原文へ]

(翻訳:satomi、Maeda, H)