E Tech.

アーキテクチャ用語の勉強1

はじめに

興味があったのでこちらのFindyのイベントに参加した。お話を聞く中で、名前だけ知っていたり、初めて聞いた単語があったので調べる。
ふわっとした印象でもいいのでとりあえず知っておきたい。

DDD関連

腐敗防止層

何となくわかる。ドメインモデルのシステムと、外部システムとのやり取りの間に挟む層で、ドメインモデルへの影響を抑えるためのものという理解。
似たような概念は他にもありそう、特にDDDの文脈で使われるのかもしれない。
参考:
Anti-corruption layer pattern
腐敗防止層(ACL:Anti Corruption Layer)とは

ユビキタス言語

開発者とドメインエキスパートとの間で共通した意味で使用される言語のこと。表記ゆれが防げたり、コミュニケーションのコストが下がったり、などのメリットがある。業務知識が複雑になればなるほど効果を発揮しそう。日本語、英語の対応もしっかりと定めれば、グローバル企業でも役に立ちそう。あとは、ソースコードにgrepかけるような各種調査の時も抜けや漏れが少なくなりそうだと思った。
参考:
「ユビキタス言語」とは? - ドメイン駆動設計の用語の理解を試みる
ユビキタス言語策定したらビジネス理解がめっちゃ捗った話
ユビキタス言語とは

アーキテクチャ関連

CQRSパターン

アーキテクチャぽくて面白いと感じた。データの書き込みで利用するモデルと、読み取りで利用するモデルを分けて、DBも読み取り用と書き込み用で分ける設計のこと。
参考:
CQRS パターン
CQRS設計パターンをモダナイズする

Mediatorパターン

オブジェクト同士の結合度を下げるためのデザインパターン。各オブジェクトは、mediatorインターフェースを介して相互に通信しあう。結合度を下げるために間に何かを挟むという発想は分かりやすい。
参考:
Mediator
FacadeとMediatorは似ている?~デザインパターンのとらえ方~
Mediator パターン (オブジェクト同士が互いに参照し合うことがないように, 仲介役となるオブジェクトを介して制御を行う方法を提供する)

SAGAパターン

マイクロサービスでは通常各マイクロサービスに専用データベースが割り振られる。分散したデータ間の一貫性を保つための、一連のトランザクションのこと。ロールバックのやり方が通常とは異なる。また、DB全体でACIDの原則を保つために、各マイクロサービス同士でトランザクションを管理させるか、コントーローラーを別で用意して管理するかの違いがある。複雑…
参考:
Saga 分散トランザクション パターン
Sagaパターンについて