まえがき
今回はスケーラビリティと結合度の関係性について考える。
一般的にこれらの間には、逆相関関係 トレードオフ関係がある傾向にある。
その理由を図解を通して考えていく。
密結合な場合
簡単のために2つのコンポーネントが密にべったりと結合した場合を考えよう。
![スクリーンショット (429).png (41.8 kB)](https://qiita-user-contents.imgix.net/https%3A%2F%2Fimg.esa.io%2Fuploads%2Fproduction%2Fattachments%2F5827%2F2024%2F03%2F01%2F135213%2Faa014cb0-6cd1-4431-83a1-ba9dd33f38bc.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=01bf3ae1e35f2ed27ead536e0dbf58fe)
この場合、赤い領域の方だけをスケールアップするには、ブルーの方も自ずとスケールアップしないといけないことは容易に想像がつく。
同様に、スケールダウンする際にも同じである。
べったりとくっついた状態では、どちらかだけを拡大したり縮小したりは難しい。
疎結合な場合
では、結合が疎な場合にはどうであろうか?
結合が疎とは、下図のようにくっついていない状態のことを指す。
![スクリーンショット (439).png (71.6 kB)](https://qiita-user-contents.imgix.net/https%3A%2F%2Fimg.esa.io%2Fuploads%2Fproduction%2Fattachments%2F5827%2F2024%2F03%2F01%2F135213%2F9aac31bc-91bf-4430-bd57-1e0ca0da7c8d.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=0aa0c0ad7c3cb1967eac4de593f487b7)
この状態で、ブルーの方をスケールアップしようとしたら、赤い方は影響受けるだろうか?
もちろんくっついていないのだから、影響を受けずにいられる。
スケールダウンの場合にも同様である。
赤い方のみをスケールダウンさせたいって時には、密な結合の場合には
ブルーの方も一緒にスケールダウンさせなくてはならないが、
疎結合な場合にはブルーの方は影響を受けずに赤い方のみスケールダウンが可能である。
![スクリーンショット (440).png (63.9 kB)](https://qiita-user-contents.imgix.net/https%3A%2F%2Fimg.esa.io%2Fuploads%2Fproduction%2Fattachments%2F5827%2F2024%2F03%2F01%2F135213%2Fc21d7f4e-de3f-4926-b544-1ed28231b460.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=6693275f044895e75e3d9a275235d36a)
以上のことから、一部の設計パターンを除いて
スケーラビリティと結合度はトレードオフ関係にあるといえる。
これは是非とも常識にしておきたい品質特性同士の関係性である。