『ソフトウェアアーキテクチャの基礎』
Mark Richards / Neal Ford による、ソフトウェアアーキテクチャを「工芸」から「工学」へ近づけることを目指した教科書。クラスタ内でも飛び抜けて詳細に読み込まれた一冊で、本書を起点に software-architecture-characteristics と architecture-styles-comparison を派生させている。
中心的な主張
- アーキテクチャは「システムの構造」「アーキテクチャ特性(-ility)」「アーキテクチャ決定」「設計指針」の4要素からなる。
- 第一法則: ソフトウェアアーキテクチャはトレードオフが全てだ。
- 第二法則: 「どうやって」よりも「なぜ」のほうが大切。
- アーキテクチャは未知の未知を抱えるため必然的に iterative になり、アジャイル と相性が良い。BDUF(先読みしすぎた設計)は失敗する。
アーキテクトの役割
- アーキテクチャ決定を下し、継続的に分析し統制する。技術の「幅」(詳しくはないが知っているもの)を重視。
- アンチパターン: 専門性の陳腐化を招く「氷漬け原始人」、コア所有権を握ってボトルネックになる「ボトルネックの罠」、現場無視の「象牙の塔のアーキテクト」。
モジュール性とコンポーネント
- 凝集度・結合度(遠心性結合)、抽象度、コナーセンスでモジュール性を計測する。
- アーキテクチャ量子: 独立してデプロイ可能で高凝集・同期的コナーセンスを持つ単位。境界づけられたコンテキスト に沿って分離する。
- マイクロサービス や イベント駆動 への橋渡しとなる。
アーキテクチャ決定とソフトスキル
- ADR(Architecture Decision Record)でタイトル/ステータス/コンテキスト/決定/影響を残す。資産防御・グラウンドホッグデー・メール駆動などのアンチパターンを避ける。
- 交渉・図解・チーム形成(エラスティックリーダーシップ)まで扱う。
関連: book-ddia / _moc-book-notes