DDD

ドメインレイヤの実装をサブドメインごとに管理する

自分は以下の書籍で各レイヤ構造に対する実装を Go で解説しているが、 書籍を書いてからも異なるパターンを色々と試行錯誤していた。 pospome.booth.pm 書籍内ではユーティリティ系の実装を配置するパッケージとして "コアレイヤ" というレイヤの話があるが…

プロダクトオーナーを経験してドメインを理解する感覚が身についたかもしれないという話

DDD

現在自分は会社の仕事で認証基盤とマイクロサービス向けのアプリケーションプラットフォームを構築していて、 役割としてはテックリードとプロダクトオーナーを兼任している。 自分が開発、運用するシステムは主に社内のエンジニア向けの仕組みなので、 問題…

DDDとコードとしての正しさ

DDD

ドメイン駆動設計 #1 Advent Calendar 2018の14日目を担当する@pospomeです。今回はDDDとコードとしての正しさについて書いてみようと思います。 DDDは設計手法である コードとしての正しさ コードとしての正しさを見失う ユースケースの日本語を"そのまま"…

goddd とは何か?

これは Go Advent Calendar 2017 その2 6日目の記事です。 https://qiita.com/advent-calendar/2017/go2みなさん、こんにちは。 pospome です。 普段は GAE/Go でサーバサイドの開発をしています。twitter では 実装パターン, DDD, golang, GCP についてつぶ…

golang のレイヤ構造において、他のコードに影響なくインフラレイヤのデータソース実装を差し替えることは可能か?

最近、golang のレイヤ構造において、他のコードに影響なくインフラレイヤのデータソース実装を差し替えることは可能か? という質問を受けた。回答時間が限られている中で質問を受けたので、 「現実的には難しい」という雑な回答しかできなかった。さすがに…

DDDにおいて、なぜ複数の集約にまたがってトランザクションをかけてはいけないのか(multiple aggregates in one transaction)

DDD

DDDでは 集約 = トランザクション境界 でなければならないので、 複数の集約をまたがるデータの永続化処理は結果整合性になる。なぜ集約をまたいでトランザクションをかけてはいけないのかというと、 集約で「データの一貫性の境界」を表現するため。 なので…

CQRSのコマンドで戻り値を取りたい場合はどうするのか(cqrs command return value)

----- 2016/10/23 追記 --------- コマンド操作が実行されると、 controller で アプリケーションサービスを呼び出す実装ではなく、 controller でコマンドを発行し、 bus で受信し、 saga で処理していくような実装を想定しています。詳しくは .NET本 を見…

DDDと高負荷サービス(というか I/Oアクセス)は相性が悪いのか?

DDD

DDDはActiveRecordパターンのように1つのモデルが1つのテーブルと紐づくとは限らない。具体例を出すと、 DBにUserテーブルがあるからといってUserモデルを作るとは限らない。ログインユーザーを表現するLoginUserモデルと ユーザーのプロフィールを表現するU…

DDD における不要な getter/setter を実装するべきではないという件についての挫折と感想

DDD

別にDDDにかぎらず、 不要な getter/setter を実装しない方がいいというのはその通りなんだけど、 DBに紐づくモデルの getter に関してはそれができないケースがある。利用するORMによって、DBに紐づくモデルに規約が定められている場合は無理。 例えば、ク…

DDDの仕様パターン

DDD

-----------追記------------- 仕様パターンについては以下の書籍で可能な限り詳しく解説しています。 興味あれば読んでみてください。 pospome.booth.pm -----------追記おわり------------- エリック・エヴァンスのDDD本では「仕様パターン」という実装パ…

DDDのコンテキストはDDDに関わらず、全ての開発に使えるのでは?

DDD

DDDの重要な概念の1つに「コンテキスト」がある。 これはDDDに関わらず、複雑なアプリケーション開発に利用できるのでは?個人的にコンテキストを利用することで「クラスの責務」をシチュエーションごとに定義しやすくなるというのが 面白い点だった。一般的…

DDDにおけるDBアクセス回数とドメインモデル表現のトレードオフについて

DDD

DDDでは「適切なドメインモデリング」が重要になってくる。このモデリングには明確な答えがなかったりするので、 自分が(チームが)適切だと思ったモデリングで進めていくと思うんだけど、 DBアクセスを伴う仕様では上手く表現できないケースが有る。具体的…

DDDにおいてリポジトリとDBのトランザクションは切り離せないのか?

DDD

DDDではリポジトリに対してDIPを利用し、インターフェースと実装を切り離す傾向にある。これはいわゆる「抽象に依存せよ」ってやつなので、 DDDというよりは既存のプログラミングテクニックになる。で、これを実現するためにリポジトリを以下のようにインタ…