0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MSAにおけるサービスの分解とサブドメインパターン

Posted at

MSAにおけるサービスの分解とサブドメインパターン

1. MSAにおける分離/分解の意味

  • 定義:「Business Capability(ビジネス能力)を持つ方向でサービスを定義すること」
  • 方法:ビジネスの動作から問題領域(ドメイン)を導き出し、各領域で集中すべき部分をサブドメイン(Sub-Domain)として識別し、サービス化する

2. サブドメインを基準としたサービスの分解(DDDより)

ビジネスの動作をもとにサブドメインを定義し、それに基づいてサービスを分解する

例:注文サービス(顧客視点)

  • 注文受付サービス:注文を「正確に」受け付けることに集中
  • 注文決済サービス:受けた注文の決済を「適切に」処理することに集中
  • 注文時の推薦サービス:注文プロセスの中で「適切な」方法で追加商品購入を促すことに集中

3. ドメイン駆動設計(DDD, Domain-Driven Design)

ドメインモデルの定義と役割

  • ドメインモデル:ビジネス要件を満たすために、コア概念やルールを表現するオブジェクトの関係
  • ドメインモデルの例
    • 「注文サービス」(顧客視点)
    • 「配達サービス」(会社視点)
    • 「飲食管理サービス」(飲食店視点)

ドメインモデリングの目的

単にドメインを識別するのではなく、ドメイン間のコア概念やルールを表現し、適切に分離できるようにすること

コア概念

  • エンティティ(Entity):1つのオブジェクト、データのまとまり(例:注文、商品)
  • アグリゲート(Aggregate):データ変更の単位として扱う関連エンティティのまとまり
  • アグリゲートルート(Aggregate Root):アグリゲートの中で中心となるエンティティ

4. Bounded Contextとサブドメインパターン

Bounded Contextの基本原則

  • 各ドメインは互いに排他的な問題を解決する必要がある
  • Bounded Contextを明確に定義し、ドメイン間の境界を設定する

サブドメインパターンを活用したサービスの識別

  • Bounded Contextを持つサブドメインを各サービスとして識別
  • 各アグリゲートが独立したBounded Contextを持てるように分離
  • サービス分解:
    サブドメインパターンを使用すると、各ドメインを独立したサービスとして分割して管理でき、これによりMSAでの柔軟性と拡張性を確保できます。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?