ITとかCockatielとか

技術のこととか。飼鳥(オカメインコ)のこととか。気になったこととか。基本的には備忘録。

DDD、ヘキサゴナルアーキテクチャ

はじめに

「DDD」、「ヘキサゴナルアーキテクチャ」や他の関連するアーキテクチャについて、理解しておく必要が出てきたので概要を整理しておきます。

DDDとは?

DDDを使うメリットは?

背景としてこれらを理解しておく必要がありそうだ。

f:id:sik_bug:20191214232851p:plain

https://little-hands.hatenablog.com/entry/2017/09/24/005903

適当な理解でかみ砕くと・・・

  • 適当にシステムを作ると複雑になってしまうので、君(業務担当)と僕(システム担当)が一緒になっていいものを作っていこう!(モチベーション)
  • そのためには、言葉(単語・用語)の理解を合わせておく必要があるよね。(開発思想)
  • さて、業務をモデリングしようか。。。おっとその前に対象領域をしっかり整理しておこう。メインはこれでサブはこれかな、となるとそれぞれの境界線はこの辺だね。(戦略的設計)
  • いよいよモデリングだ!・・・といっても各自バラバラでやっても仕方ないから、表現方法から合わせていこう。だいたいこんなパターンがありそうだね。(戦術的設計)

これに共感できるならメリットがあるということだ(断言)。

ヘキサゴナルアーキテクチャとは?

f:id:sik_bug:20191214232927p:plain

ヘキサゴナルアーキテクチャを使うメリットは?

  • 【前提】ドメイン(業務)と他の領域(ex.UI, DB)を比較すると、後者の方が変化しやすい(技術依存のため)。
  • 変化がしやすい領域(技術領域)上にドメインを乗せてしまうと、技術領域の変化によりドメインが影響を受けてしまう・・・これってよくないよね?
  • だったらドメインを最下層に配置することで、変化がしやすい領域(技術領域)の影響を受けないようにしようじゃないか!

これに共感できるならメリットがあるということだ(断言)。

参考:https://nrslib.com/hexagonal-architecture/

参考