
10.2
クローニングと負荷分散
333
アプリケーションの性質には良い効果がもたらされます。特に可用性と障害耐性が向上するのです。
実際クローニングによる
Node
アプリケーションのスケーリングは比較的単純で、使用するリソースを
増やす必要がない場合でも冗長性と耐障害性の実現だけを目的として実装されることが多いのです。
そこで、開発者はアプリケーション開発の早い段階でスケーラビリティを考慮に入れざるをえなくな
り、複数のプロセスやマシンで共有できないリソースにアプリケーションが依存しないよう注意するこ
とになります。実際、アプリケーションのスケーリングにとっての絶対必要条件は、各インスタンスが
共通の情報を共有できないリソース(通常はメモリやディスクといったハードウェア)に保存する必要
がないことなのです。たとえば、ウェブサーバでは、セッションデータをメモリやディスクに保存する
ことは、スケーリングの際に障害とな
る行為です。それに対し、共有データベースを使えば、各インス
タンスがどこにあっても同じセッション情報にアクセスできることが確実です。
それでは
Node
アプリケーションをスケーリングするためのもっとも基本的な仕組みであるモジュー
ル
cluster
を紹介しましょう。
10.2.1
モジュール
cluster
Node
では、アプリケーションの負荷を単一のコンピュータで実行されている複数のインスタンスに
分散させるもっとも単純なパターンは、コアライブラリの一部になっているモジュール
cluster
を使
うことです ...