簡単な答え:
シーサイド アプリケーションをスケールできます。
長い答え:
IT ドメインでは、スケーリングは 1 つのことですが、2 つの側面があります。
- 水平
- 垂直
ほとんどの人は、垂直方向のスケーリングについて考えました。それは、Intel と友人がいくつかの物理的な障壁に到達し、MHz を追加することが現在不可能であることを補うためにコアを追加し始めるまででした。
それが、進むべき道として水平方向のスケーリングをより意識し始めたときです.
なぜ私はあなたにこれを言っているのですか?
Seaside は VM で実行される smalltalk イメージであり、モノコア プロセッサのサーバー内のシステムとほぼ同じ状況だからです。
それを基盤として、サーバーのクラスターを作成することで Web アプリをスケーリングします。それは自然なことであり、フォールトトレラントなことであり、トポロジ的にインテリジェントなことであり、柔軟なことでもあります。
したがって、スケーリングについては、Intel & Friends と同じように、水平方向を採用します。そして、垂直方向よりもさらに安価です (これにより、高価な IBM および Sun サーバーにたどり着きます)。
RoR アプリケーションは通常、水平方向にスケーリングされます。Google には、目的を達成するための無数の安価なサーバーがあります。どんなに脚色された人々があなたに忘れられがちなさえずりのクジラを投げつけてあなたに感銘を与えたいと思っても、それは完全にうまく機能します.
彼らがそれについてあなたに話したら、あなたは礼儀正しく、彼らの言うことを聞くだけですが、次のことを覚えておいてください:
- 完璧は善の敵
- 未完成の完璧なものは、行われた良いことほど価値のあるものではありません
ところで、Amazon もそのようなことを行っています (これは一種の地理位置情報を組み合わせているため、現在地に最も近いクラスターでリクエストに対応できる可能性が高くなります)。
一方、Avi が dabbledb (Twitter によって買収された Seaside ベースの Web アプリケーション会社) をスケーリングする方法は、顧客アカウントごとに 1 つの VM を使用していました (必要に応じてそれらを起動およびシャットダウンしました)。
画像に多くの状態があるからといって、スケーリングが不可能になったり複雑になったりすることはありません。
ただ違う。
その方法は、スティッキー セッションを使用するロード バランサーを使用することです。これにより、1 つのイメージがユーザー セッションのすべての要求に対応できるようになります。ロード バランサーの背後にあるすべてのワーカー イメージが、特定のアプリのすべてのユーザーに対応できるようにします。そして、それはほとんどそれです。
これを可能にするには、永続オブジェクトをワーカー間で共有する必要があります。すべてのユーザー データベースは、ワーカーがいつでもアクセスできる必要があり、並行性を適切に処理する必要があります。
そのようにスケーラブルなエアフローを設計しました。
非常に小さい N から始めて (最初のサーバーの RAM に応じて)、必要に応じてハードウェアの制限に達するまで増やすことができるため、経済的にも便利です。
ハードウェアの制限に達したら、別のホストをクラスターに追加し、バランサー (およびデータベースへのアクセス) を再構成するだけです。
シンプル、経済的、そしてエレガント。