TL;DR

  • 長期予測の難しさ:一番始めに作られた物を運用し続けると、開発時には想像もしていなかった技術的進歩が数年間隔で起こる。
  • 銀の弾丸はないが:これらに対して、小さく前進的な後進が可能なアーキテクチャと開発時に重要視した特性を保つ仕組みが進化的アーキテクチャには重要。
  • また、アーキテクチャが技術・データ・セキュリティ・運用で多重な次元で構成され、コンウェイの法則から学び、チーム構造をアーキテクチャに合わせるために、仕事をどのように分割したり委譲するか注意する必要がある。

感想

 題名が全てを示しているとおり、この本は「技術的な潮流が大きく変わったときに、今動いているシステムをそのまま動かしつつ、進化させるにはどのようなアーキテクチャの特性や考えるべきポイント」を語っている。そして考える各トピックごとに章立てて、実際のケーススタディも交えて解説している。200pという短い本としては、コンパクトに重要な話は纏まっていて、実際にアーキテクチャを変更するときにどう考えれば良いか、思考をトレースできるようになっていると感じる。

 一方で、「適応度関数」という本書独自の考え方が書籍内を縦横無尽に走り回っている。  これは $f(x, y, z) = a(x) + b(y) + c(z) …$ のようにアーキテクチャ全体を一つの関数と見立て、小さな変更 $\Delta x, \Delta y,\Delta z$ が、長期的に見て $\lim_{t \rightarrow T} f(x+t\Delta x, y+t\Delta y, z+t\Delta z) \rightarrow Goal$ に近づいているのか判別する。言い換えると、現状一番重要だと思う変更と長期的な理想や目的が一致しているか、それを確認し、更新可能なツールとして提供し、使い方を教えている本と理解して読んだ。  これだけ書いて分かるとおり、何となく分かるけど、いざ関数はどう定義する、係数はどう決めれば良い、何を目標にするかなど、すぐに出せる値ではないと思う。ましてやこれらは時間経過によって変動する類いだ。単純に決めて終わりというものでもない。

 ここまで書くと、進化的アーキテクチャの難しさが少しは想像できるようになるのではないだろうか?

 この一種の抽象化は納得出来る部分はあり、厄介な一般化の問題からうまく逃れられている部分がある。一方で、具体的な目的や問題意識・知識がないと、ただの理想論やClean ArchitectureやDDDなどの二番煎じにしか読めないのではないか。また、適応度関数はケースごとに異なるため、しっかりと理解するにはひとつひとつ何を目的にし、今何を問題に感じ、どのように考えて、どう変更しようとしたのか、つぶさに追わないと不十分な理解しか出来ないと感じた(必要に駆られて読んだわけではないので、これが知識として活かせるのか怪しく感じた)

 まあ、モノレポからマイクロサービスへの移行とかリファクタリングなどで考えると、補完する読むものも多いので(この本が補完的な気がするけど)、学びたいテーマさえ決めればある程度分かる部分はあるのではないかな?

 あと、上記の通り一般化しているので、この場合はこうすれば良いというHow toではないので、明確な答えを求めている人には合わないと思う。

結論

おすすめ度 ☆3

ちょっと本のテーマが他と被っていたり、ページ数も少ないので情報が足りない点が、特筆して読むべきとは言えない。だけど、アーキテクチャを勉強しているなら読むのはあり。