Home Domain Driven
Post
Cancel

Domain Driven

๐Ÿƒ ๊ธฐ์กด์˜ ๊ฐœ๋ฐœ

  • ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์— ์ข…์†
  • ์ตœ์ดˆ ์„ค๊ณ„ ๋ฐ์ดํ„ฐ์˜ ๋ชจ๋ธ๋ง์˜ ๋ณ€๊ฒฝ๊ณผ ํ™•์žฅํ•˜๊ธฐ ์–ด๋ ค์›€
  • ๋ชจ๋ธ๋ง๊ณผ ์‹ค์ œ ๊ฐœ๋ฐœ์˜ ๋ถˆ์ผ์น˜ ๋ˆ„์ 


๐ŸŽจ Domain Driven Design

  • ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋Šฅ๊ณผ ๋ถ„๋ฆฌํ•ด์„œ ์‹๋ณ„ํ•˜์ง€ ์•Š๊ณ , ๋ณ„๋„์˜ ๋„๋ฉ”์ธ ๋ชจ๋ธ๋กœ ์ •์˜
  • ์šฉ์–ด ์‚ฌ์ „์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋„๋ฉ”์ธ ์„ค๊ณ„
  • ๋„๋ฉ”์ธ ๋ณ„๋กœ ์„ค๊ณ„์™€ ๊ตฌํ˜„ ๊ฐ€๋Šฅ

๐Ÿง ์šฉ์–ด ์‚ฌ์ „ (Ubiquitous Language)

์‚ฌ์šฉ์ž์™€ ์„ค๊ณ„์ž, ๊ตฌํ˜„์ž๊ฐ€ ๋ชจ๋‘ ์˜๋ฏธ์— ๋™์˜ํ•  ์ˆ˜ ์žˆ๋Š” ์šฉ์–ด์˜ ๋ชจ์Œ


โœจ Domain

  • ์†Œํ”„ํŠธ์›จ์–ด๋กœ ํ•ด๊ฒฐํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฌธ์ œ ์˜์—ญ
  • ๊ฐœ๋ฐœํ•˜๋ ค๋Š” ์„œ๋น„์Šค์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ์—ฐ๊ด€


โ“ Domain model

์š”๊ตฌ์‚ฌํ•ญ์œผ๋กœ๋ถ€ํ„ฐ Domain๊ณผ ์ดํ•˜ entity๋ฅผ ์ •์˜ํ•˜๊ณ  ๊ทธ ๊ด€๊ณ„๋ฅผ ๊ฒฝ๊ณ„์™€ ํ•จ๊ป˜ ์ถ”์ƒํ™”ํ•œ ๋ชจ์‹๋„


๐Ÿ“Š Domain-driven and Object-oriented Comperison

Object

  • ์ถ”์ƒํ™”ํ•˜๊ฑฐ๋‚˜ ๊ตฌ์ฒดํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€์ƒ
  • e.g. ์ƒํ’ˆ, ์ฃผ๋ฌธ, ์ฟ ํฐ

Domain

  • ์š”๊ตฌ์‚ฌํ•ญ์—์„œ ํ‘œํ˜„ํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ
  • e.g. Object + ์ฃผ๋ฌธํ•˜๋‹ค, ๊ฒฐ์ œํ•˜๋‹ค, ์ •์‚ฐํ•˜๋‹ค ๋“ฑ


๐Ÿ“Œ Domain Driven Design Step

  1. ์š”๊ตฌ์‚ฌํ•ญ ์ •๋ฆฌ
  2. ํ•ต์‹ฌ ๋„๋ฉ”์ธ ๋กœ์ง ํŒŒ์•…
  3. ์šฉ์–ด ์‚ฌ์ „ ์ •๋ฆฌ
  4. ๋„๋ฉ”์ธ์„ ์ž‘์€ ๋‹จ์œ„๋กœ ๋ถ„๋ฆฌ
  5. Bounded context ์„ค์ •ํ•˜๊ณ  ๊ด€๊ณ„ ์ •์˜
  6. ์„ธ๋ถ€ ๋™์ž‘ ์„ค๊ณ„
  7. Context ๋ณ„ bounds ์นจ๋ฒ” ์—ฌ๋ถ€ ํ™•์ธ
  8. ๋ณ€๊ฒฝ ์‚ฌํ•ญ ๋ฐœ์ƒ ์‹œ ๋ฐ˜๋ณต


๐Ÿ“‹ Domain Driven Design ๊ธฐ๋ณธ ์š”์†Œ

Domain model pattern

  • Entity
  • Value Object
  • Service
  • Aggregate
  • Repository

Bounded Context

  • ์„œ๋กœ ๋…๋ฆฝ์ ์ธ ์—…๋ฌด๋กœ ๋ถ„ํ• ๋  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋ธ ์˜์—ญ
  • MSA๋ฅผ ๋‚˜๋ˆ„๋А ๋‹จ์œ„๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ


๐ŸŽ„ Domain Driven Architecture

Client

  • Presentation layer์— HTTP Request ์ „๋‹ฌ

Presentation layer

  • Client์˜ ์š”์ฒญ์„ ๋ฐ›๊ณ  Application layer๋กœ ์ „๋‹ฌ๋ฐ›์€ ๊ฒฐ๊ณผ๋ฅผ client์—๊ฒŒ ์ „๋‹ฌ

Application layer

  • Client์—๊ฒŒ ์ œ๊ณตํ•  ๊ฒฐ๊ณผ๋ฅผ Domain layer์— ์š”์ฒญํ•˜์—ฌ ์กฐํ•ฉ

Domain layer

  • Domain model์„ ๊ตฌํ˜„
  • ํ•˜๋‚˜์˜ ๋Œ€ํ‘œ๋˜๋Š” ๋„๋ฉ”์ธ์ด ๋‹ค๋ฅธ ๋„๋ฉ”์ธ์˜ ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์กฐํ•ฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค๊ณ  ํ•œ๋‹ค.

Infrastructure layer

  • DB, ์™ธ๋ถ€ ์‹œ์Šคํ…œ ๋“ฑ ์—ฐ๋™ ์ฒ˜๋ฆฌ


This post is licensed under CC BY 4.0 by the author.

WebFlux

Micro Service Architecture