"「実践ドメイン駆動設計」から学ぶDDDの実装入門" 4章感想 (全14章)
"「実践ドメイン駆動設計」から学ぶDDDの実装入門"
「実践ドメイン駆動設計」から学ぶDDDの実装入門 (CodeZine Digital First)
- 作者: 青木淳夫,山田祥寛
- 出版社/メーカー: 翔泳社
- 発売日: 2019/05/31
- メディア: オンデマンド (ペーパーバック)
- この商品を含むブログを見る
良い所
(。・_・。)
アーキテクチャの概要がいっぱい。スンナリ頭に入ってくれば君はアーキテクト!?
共通概念の言語化による共有という観点でココらへんの用語を適切に使えればコミュニケーションが簡便になると思われる。
悪い所
- ESB (Enterprise Service Bus) が何なのか皆目見当がつかなかった (自分の事前知識不足)。 次のリンクをググって理解した。 https://arch.simplicable.com/arch/new/10-soa-design-patterns-every-architect-should-know の4や https://www.ibm.com/developerworks/jp/webservices/library/ws-universalports-esb/index.html 言語化すると次のようになる。
4.11 DDDにおけるCQRSでの流れ
に具体例がほぼないので一読ではよくわからない。例を上げるなら;
気になった所
- 専門用語が一気に出てくるため、よくわからなければ理解を深めるためにググる方が良い。
学んだ事
- SOA (Service Oriented Architecture) は8つの設計原則をもつサービスのアーキテクチャ。
- 昔ながら3層(UI -> Web-Server -> DB-Server) もレイヤ化アーキテクチャの一種。
- DIP (Dipendency Inversion Principle) によりドメイン層が依存されるだけの状態にする。これによりドメインの管理がしやすくなる。
- 「ヘキサゴナルアーキテクチャ」はドメインを中心にとらえ、外部接続インタフェースである「ポート」の部分を差し替え可能である「アダプタ」とする。
- CQRS (Command Query Responsibility Segregation) とは Command実行とQuery実行は別々の処理として分離しなければならないということ。
Command ::= *void* modify(...)
Query ::= *ImmutableType* get(...)
- DDDの観点では「結果整合性」が許容される場合は使用することで複雑性を排除する。
- システムが複数ある場合、イベントを扱うことで複数のシステム間の結合を疎にできる。
- IDDDではイベント駆動のアーキテクチャとして次の3つを紹介している;
- 「パイプ&フィルター」: UNIX コマンドに当てはめるとよい。パイプで分離することにより、再利用性やチューニングをしやすくできる。
- 「長期プロセス(Long-Running processes)」:「並列でパイプラインを実行できる。」 とあるが主目的は、ユーザーからのレスポンスを待つ幾つかのストーリーが逐次実行されて初めて目的が達成されるという意味での正に「長期プロセス」のことである。 ref. https://www.slideshare.net/BerndRuecker/long-running-processes-in-ddd https://github.com/berndruecker/flowing-retail
- 「イベントソーシング」: パターンの一つ。発生したすべてのイベントを「イベントストア」に記録する。「イベントストア」としてはKafka辺りで実現できそう。
分からないこと
知らない概念が多かったので時間がかかった。この後は暫く簡易な概念が続くはず、、、