Help us understand the problem. What is going on with this article?

ちょっとずつ読むドメイン駆動設計 第四部 戦略的設計 第十四章 モデルの整合性を維持する2 境界づけられたコンテキスト

More than 1 year has passed since last update.

これまでの十四章

第四部 戦略的設計 第一四章 モデルの整合性を維持する

境界づけられたコンテキスト

境界を定める

前回読んだように、システム全体で一つのモデルを持つことにはあまり得られるものはなく、コンテキストごとにモデルを持ち、何をどう統一し、何を統一しないかを決める方法が必要と書きました。

その境界をどうするか。それについてはほとんどの場合不明瞭とEvansは述べています。
それを明確するにはプロジェクトと最終成果物(コード・データベーススキーマ)の両方を見なければならないということです。

明示的な境界はチーム編成、アプリケーションに特有の部分が持つ用途、コードベースやデータベーススキーマなどの物理的な表現などの観点から設定すること。

境界内では、モデルを一貫性のあるものに保つことが求められます。

境界を定める効果

チームのメンバーは一貫性を持つものが何かが理解しやすくなり、他のコンテキストとどう関係づけるか明確な理解を共有できるようになります。

他のコンテキストは他のモデルが適用されますが、用語法・概念・ルール・ユビキタス言語が該当のコンテキストと異なります。なので、その区別が付くというのは大きな効果だと思います。

コンテキスト内での分派

サブシステムごとにチームが分かれていたり、ソースリポジトリが分かれていたりすれば、境界は引きやすいと思います。

難しいのは、同じチームの同じリポジトリのソースでも不明瞭な境界があるかもしれないというところ。サブシステムの分け方も間違っているかもしれない。
そこで、常に注意すべきは重複した概念偽同族語(false cognate)です。

  • 重複した概念・・・ 複数の要素が実は同じ概念を表現していること
  • 偽同族語・・・ 同じ用語を使って話しているつもりが実は別々のことであったということ

重複した概念では1つの修正で2箇所修正が必要になってくる。
偽同族語はコードに矛盾が生じ、データベースのデータにも矛盾が生じてくる。チーム内の会話も混乱する。

こうしたことに気がつくか気がつかないかがとても重要でとても難しい。
気がついたら、問題に対してどうするべきか。判断を下す必要が出てくる。

その問題の対処の仕方は明日引続き読んでいきます。

マイクロサービスでのコンテキスト境界

マイクロサービスでのサービス分割にコンテキスト境界の考え方が役に立つと言っているのが、実装ドメイン駆動設計のVaughn Vernon(InfoQ マイクロサービスとドメイン駆動設計に関するVaughn Vernon氏の意見)。
一つの境界づけられたコンテキスト毎に一つのサービスから始めることを推奨しています。

Evansも、最低でもサービスとコンテキストの一対一の関係が生まれると言っています。(InfoQ DDD、マイクロサービス、境界についてEric Evans氏が語る)

まあ、上記で見てきたとおり、その境界を定めるのが難しいのですが・・・

高いレベルから考えることができる優秀なエンジニアがシステム内でドメインと境界付けられたコンテキストを見つけることができる。

とEvansも言っていますね。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away