続き。
Chapter 3 A Functional Architecture
この章からドメインをソフトウェアアーキテクチャに変換していくところに入る。その前にソフトウェアアーキテクチャ自身もドメインだよねと、用語を定義するためにC4モデルを導入する。C4モデルの自分の理解としてはこんな感じ。
本の例だと、境界付けられたコンテキストとして今着目しているOrder-Taking ContextをDeployableなContainerとして話を進めている。*1境界付けられたコンテキスト間のやり取りにDTOやキューを導入したり、またコンテキスト間の決め事に三パターンあげている。
- Shared Kernel
- Customer/Supplier (Downstream contextが基準作って、upstreamがそれに乗っ取る)
- Conformist (Upstream contextが提供しているものに、downstreamが合わせる)
このコンテキスト間の決め事はエリック・エヴァンスのドメイン駆動設計にも書かれてるが、この本のまとめが端的なので読みやすいかもしれない。外部システムとのやりとりには腐敗防止層もでてくる。ここまではよくあるDDDだが、52ページの"Avoid Domain Events within a Bounded Context"でFunctionalなデザインについて述べられる。さらにはオニオンアーキテクチャまで発展するのだが、この辺り伝統的なレイヤー化アーキテクチャとの比較になっているので、Clean Architecture 達人に学ぶソフトウェアの構造と設計 (アスキードワンゴ)とか読んでると納得度は高そうに思える。
次の章からF#を使ったFunctionalなアプローチが始まるようなので、楽しみにしておこう。
ひとまずこの辺まで。
Domain Modeling Made Functional: Tackle Software Complexity with Domain-Driven Design and F#
- 作者: Scott Wlaschin
- 出版社/メーカー: Pragmatic Bookshelf
- 発売日: 2018/02/04
- メディア: ペーパーバック
- この商品を含むブログを見る
- 作者: Scott Wlaschin
- 出版社/メーカー: Pragmatic Bookshelf
- 発売日: 2018/02/27
- メディア: Kindle版
- この商品を含むブログを見る
*1:前の章でマイクロサービスはちょっと……みたいな論調だったけど、ちょっとそれっぽい気もする。もっと筆者が想定しているよりも粒度が細かいのだろうか?