
358
10
章 スケーラビリティとアーキテクチャ
次に今作成したクライアントアプリケーションを実行します。
$ node client
それぞれのリクエストが違うサーバに送信されていることがわかりますから、専用のリバースプロキ
シなしで負荷分散ができるようになったことが確認できます。
先に作成したラッパーを改良する方法には、サービスレジストリを直接クライアントに組
み込んでサーバのリストを動的に取得する方法もあります(サンプルコードに含まれてい
ます)。
10.3
複雑なアプリケーションの分解
この章ではここまで主にスケールキューブの
x
軸に関して改良をしてきました。アプリケーションの
負荷を分散するのにもっとも容易ですぐ効果が出る方法であるほか、可用性も向上することを見まし
た。この節ではスケールキューブの
y
軸に注目し、アプリケーションを機能とサービスにより「分解」す
ることでスケーリングします。この技法を使うことでアプリケーションのキャパシティがスケーリング
されるばかりでなく、(より大きな意味をもつ)複雑さを減ずることもできます。
10.3.1
モノリシックなアーキテクチャ
「モノリシック」という言葉からはモジュール化されていないシステム、つまりアプリケーションのす
べてのサービスが関
連し合い、ほとんど分けられなくなっている状態を思い浮かべるかもしれません。
しかし、常にそうとは限りません。モノリシックなシステムでも、高度にモジュール化されていて、内
部のコンポーネントが十分に分離されていることがよくあ