
360
10
章 スケーラビリティとアーキテクチャ
しやすくなっています。たとえば、製品が購入された場合を考えましょう。「チェックアウト」モジュー
ルは「製品」オブジェクトの在庫情報を更新しなければなりませんが、両方のモジュールが同じアプリ
ケーション内にあれば、開発者にとって該当する製品のオブジェクトの参照を取得し、在庫を直接更
新することが簡単にできすぎてしまうのです。モノリシックなアプリケーションでは、内部のモジュー
ルの間の結合度を低く保つというのは至難の技ですが、その理由にはモジュールの境界が必ずしも明
確でなかったり取り扱いがきちんと強制されていなかったりすることが含まれます。
アプリケーションの規模拡大にとって、しばしば「結合度の高さ」が障害となっており、複雑なため
にスケーリングができなくなることがあります。実際、依存グラフが複雑に絡みあっているということ
は、システムのすべての部分が関連するということです。アプリケーションは寿命が来るまで
保守が必
要となりますから、どのような変更をするときでも慎重に検討しなければならなくなります。すべての
コンポーネントが積み木のタワーのようなもので、ひとつを動かしたり除去したりするとタワー全体が
崩れてしまうかもしれないからです。その結果、プロジェクトが複雑になるに従って、それに対応する
ための慣例や開発プロセスを作成することになります。
10.3.2
マイクロサービスのアーキテクチャ
それではこれから大規模なアプリケーションを書く際にもっとも重要な
Node ...