第16章 独立性
優れたアーキテクチャは以下のことをサポートする
- システムのユースケース
- アーキテクチャがシステムの意図をサポートしなければならない
- 優れたユースケースは、システムの構造が何かはっきり見えるようになる
- システムの運用
- システムの開発
- 利害関係の多い組織では、開発中にチームがお互いに干渉しないようにそれぞれのチームが独立されるアーキテクチャをシステムに持たせる必要がある
- システムのデプロイ
- 目指すべきは、即時デプロイ
レイヤの切り離し
システムの水平レイヤーごとに分離される
レイヤー例: UI,アプリケーション特有のビジネスルール,アプリケーションに依存しないビジネスルール,DB
ユースケースの分離
ユースケースは、システムの水平レイヤーを薄く垂直に分離したもの
システムを水平レイヤーに分離するとき、同時にそれらを薄く垂直に分離すべき
切り離し方式
ユースケースの切り離しは運用にも適応できる
運用で活用するには、適切な方式が必要になる
コンポーネントが別のサーバーで実行するには、何かの通信手段でやり取りをさせるしかない
このようなコンポーネントを「サービス」や「マイクロサービス」と呼んでいる
重複
重複したコードを削除・排除することになる
しかし一見重複していると見ても、それは偽物の重複もしくは、偶然の重複になっている場合ある
この場合後から気づいても分離するのが大変
切り離し方式
どのレベルで切りなすのか
以下のレベルで切り離しが可能
- ソースコード
- バイナリコード
- 実行単位
どのレベルで切り離すはかは、プロジェクトの初期段階ではわからない
プロジェクトが進んでいくとともに変わっていく可能性もある
感想
重複の項目でこれを思い出した
安易にユーザーだと思って共有すると痛い目を見るよという
https://twitter.com/MinoDriven/status/1380773721032433674