Home > Backend > CS > πŸ’Ύ [CS] 도메인(Domain)의 의미.

πŸ’Ύ [CS] 도메인(Domain)의 의미.
CS

πŸ’Ύ [CS] 도메인(Domain)의 의미.

  • 도메인(Domain) 은 μ†Œν”„νŠΈμ›¨μ–΄ κ°œλ°œμ—μ„œ νŠΉμ • 문제 μ˜μ—­ λ˜λŠ” λΉ„μ¦ˆλ‹ˆμŠ€ μ˜μ—­μ„ μ§€μΉ­ν•˜λŠ” μš©μ–΄μž…λ‹ˆλ‹€.
  • 도메인은 μ†Œν”„νŠΈμ›¨μ–΄ μ‹œμŠ€ν…œμ΄ ν•΄κ²°ν•˜κ³ μž ν•˜λŠ” λ¬Έμ œλ‚˜ μ œκ³΅ν•˜λŠ” μ„œλΉ„μŠ€μ™€ κ΄€λ ¨λœ νŠΉμ •ν•œ 지식, κ·œμΉ™, 절차 등을 ν¬ν•¨ν•œ λͺ¨λ“  것을 μ˜λ―Έν•©λ‹ˆλ‹€.

1️⃣ 도메인(Domain)의 의미.

  • 1. 문제 μ˜μ—­
    • 도메인은 νŠΉμ • λΉ„μ¦ˆλ‹ˆμŠ€λ‚˜ 문제 μ˜μ—­μ„ λ‚˜νƒ€λ‚΄λ©°, 이 μ˜μ—­μ€ μ†Œν”„νŠΈμ›¨μ–΄κ°€ ν•΄κ²°ν•˜λ €κ³  ν•˜λŠ” μ‹€μ œ μ„Έκ³„μ˜ λ¬Έμ œμ™€ μ§μ ‘μ μœΌλ‘œ κ΄€λ ¨λ©λ‹ˆλ‹€.
      • 예λ₯Ό λ“€μ–΄, 은행 업무, μ „μžμƒκ±°λž˜, 병원 관리, ꡐ윑 관리 μ‹œμŠ€ν…œ λ“± 각각의 도메인은 μ„œλ‘œ λ‹€λ₯Έ λ¬Έμ œμ™€ κ·œμΉ™μ„ 가지고 μžˆμŠ΅λ‹ˆλ‹€.
  • 2. 도메인 지식
    • λ„λ©”μΈμ—λŠ” ν•΄λ‹Ή 문제 μ˜μ—­μ— λŒ€ν•œ μ „λ¬Έ μ§€μ‹μ΄λ‚˜ κ·œμΉ™μ΄ ν¬ν•¨λ©λ‹ˆλ‹€.
      • 예λ₯Ό λ“€μ–΄, 금육 λ„λ©”μΈμ—μ„œλŠ” 이자 계산, λŒ€μΆœ κ·œμ •, κ³„μ’Œ 관리와 같은 νŠΉμ • 지식이 μ€‘μš”ν•©λ‹ˆλ‹€.
        • 이와 같은 도메인 지식을 λ°”νƒ•μœΌλ‘œ μ†Œν”„νŠΈμ›¨μ–΄μ˜ λΉ„μ¦ˆλ‹ˆμŠ€ 둜직이 μ •μ˜λ©λ‹ˆλ‹€.
  • 3. 도메인 λͺ¨λΈ
    • 도메인은 일반적으둜 β€œλ„λ©”μΈ λͺ¨λΈ(Domain Model)β€λ‘œ ν‘œν˜„λ©λ‹ˆλ‹€.
      • 도메인 λͺ¨λΈμ€ λ„λ©”μΈμ˜ κ°œλ…, 객체, μ—”ν‹°ν‹°, 관계, κ·œμΉ™ 등을 μΆ”μƒν™”ν•˜μ—¬ ν‘œν˜„ν•œ κ²ƒμž…λ‹ˆλ‹€.
        • 예λ₯Ό λ“€μ–΄, 은행 도메인 λͺ¨λΈμ—λŠ” 고객(Customer), κ³„μ’Œ(Account), 거래(Transaction) 같은 객체가 포함될 수 μžˆμŠ΅λ‹ˆλ‹€.
    • 도메인 λͺ¨λΈμ€ μ‹œμŠ€ν…œμ΄ ν•΄λ‹Ή λ„λ©”μΈμ˜ 문제λ₯Ό μ–΄λ–»κ²Œ 해결할지λ₯Ό μ •μ˜ν•˜λŠ”λ° μ€‘μš”ν•œ 역할을 ν•©λ‹ˆλ‹€.
  • 4. 도메인 μ „λ¬Έκ°€
    • 도메인 μ „λ¬Έκ°€(Domain Expert)λŠ” νŠΉμ • 도메인에 λŒ€ν•œ κΉŠμ€ 지식을 가진 μ‚¬λžŒμ„ μ˜λ―Έν•©λ‹ˆλ‹€.
      • 이듀은 λΉ„μ¦ˆλ‹ˆμŠ€ 핡심 μš”κ΅¬ 사항과 κ·œμΉ™μ„ μ •μ˜ν•˜λ©°, κ°œλ°œμžμ™€ ν˜‘λ ₯ν•˜μ—¬ 도메인 λͺ¨λΈμ„ μ„€κ³„ν•˜λŠ”λ° μ€‘μš”ν•œ 역할을 ν•©λ‹ˆλ‹€.

2️⃣ λ„λ©”μΈμ˜ μ€‘μš”μ„±

  • 도메인은 μ†Œν”„νŠΈμ›¨μ–΄ 개발의 초기 λ‹¨κ³„μ—μ„œ 맀우 μ€‘μš”ν•©λ‹ˆλ‹€.
    • μ‹œμŠ€ν…œμ΄ ν•΄κ²°ν•΄μ•Ό ν•˜λŠ” 문제λ₯Ό λͺ…ν™•νžˆ μ •μ˜ν•˜κ³ , λΉ„μ¦ˆλ‹ˆμŠ€ μš”κ΅¬ 사항을 λ°˜μ˜ν•œ 도메인 λͺ¨λΈμ„ μ„€κ³„ν•˜λŠ” 것이 μ‹œμŠ€ν…œμ˜ 성곡적인 κ΅¬ν˜„μ— ν•„μˆ˜μ μž…λ‹ˆλ‹€.
  • 도메인 지식을 μ œλŒ€λ‘œ λ°˜μ˜ν•˜μ§€ λͺ»ν•˜λ©΄, μ‹œμŠ€ν…œμ΄ μ‹€μ œ λΉ„μ¦ˆλ‹ˆμŠ€ 문제λ₯Ό ν•΄κ²°ν•˜λŠ” 데 μ‹€νŒ¨ν•  수 있으며, μ΄λŠ” ν”„λ‘œμ νŠΈ μ‹€νŒ¨λ‘œ μ΄μ–΄μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€.
    • λ”°λΌμ„œ κ°œλ°œμžλŠ” 도메인 전문가와 κΈ΄λ°€ν•˜κ²Œ ν˜‘λ ₯ν•˜μ—¬ 도메인을 μ •ν™•νžˆ μ΄ν•΄ν•˜κ³ , 이λ₯Ό μ½”λ“œλ‘œ ν‘œν˜„ν•˜λŠ” 것이 μ€‘μš”ν•©λ‹ˆλ‹€.

3️⃣ 도메인 주도 섀계(Domain-Driven Design, DDD)

  • 도메인과 κ΄€λ ¨λœ μ€‘μš”ν•œ μ†Œν”„νŠΈμ›¨μ–΄ 섀계 접근법 쀑 ν•˜λ‚˜λŠ” 도메인 주도 섀계(Domain-Driven Design, DDD) μž…λ‹ˆλ‹€.
  • DDDλŠ” 도메인 λͺ¨λΈμ„ μ€‘μ‹¬μœΌλ‘œ μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό μ„€κ³„ν•˜λŠ” λ°©λ²•λ‘ μœΌλ‘œ, λ„λ©”μΈμ˜ κ°œλ…κ³Ό κ·œμΉ™μ„ μ½”λ“œμ— 직접 λ°˜μ˜ν•˜μ—¬ μ†Œν”„νŠΈμ›¨μ–΄μ˜ λ³΅μž‘μ„±μ„ κ΄€λ¦¬ν•˜κ³ , λ„λ©”μΈμ˜ 변화에 μ‰½κ²Œ 적응할 수 μžˆλ„λ‘ λ•μŠ΅λ‹ˆλ‹€.

μ˜ˆμ‹œ

  • 예λ₯Ό λ“€μ–΄, μ „μžμƒκ±°λž˜ 도메인 을 생각해보면, 이 λ„λ©”μΈμ—λŠ” λ‹€μŒκ³Ό 같은 μš”μ†Œλ“€μ΄ 포함될 수 μžˆμŠ΅λ‹ˆλ‹€.
    • 고객(Customer) : μƒν’ˆμ„ κ΅¬λ§€ν•˜λŠ” μ‚¬λžŒ.
    • μƒν’ˆ(Product) : 고객이 ꡬ맀할 수 μžˆλŠ” μ•„μ΄ν…œ.
    • μ£Όλ¬Έ(Order) : 고객이 μƒν’ˆμ„ ꡬ맀할 λ•Œ μƒμ„±λ˜λŠ” 거래 기둝.
    • 결제(Payment) : 주문에 λŒ€ν•œ λŒ€κΈˆ μ§€λΆˆ.

μ΄λŸ¬ν•œ μš”μ†Œλ“€κ³Ό κ·Έλ“€ κ°„μ˜ 관계가 도메인을 κ΅¬μ„±ν•˜λ©°, μ†Œν”„νŠΈμ›¨μ–΄ μ‹œμŠ€ν…œμ€ μ΄λŸ¬ν•œ λ„λ©”μΈμ˜ κ°œλ…μ„ λ°”νƒ•μœΌλ‘œ λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ κ΅¬ν˜„ν•˜κ²Œ λ©λ‹ˆλ‹€.

4️⃣ κ²°λ‘ 

  • 도메인은 μ†Œν”„νŠΈμ›¨μ–΄κ°€ λ‹€λ£¨λŠ” 문제의 λ²”μœ„μ™€ κ΄€λ ¨λœ κ°œλ…, κ·œμΉ™, 객체듀을 λ‚˜νƒ€λ‚΄λ©°, 이λ₯Ό μ •ν™•νžˆ μ΄ν•΄ν•˜κ³  λͺ¨λΈλ§ν•˜λŠ” 것이 성곡적인 μ†Œν”„νŠΈμ›¨μ–΄ 개발의 ν•΅μ‹¬μž…λ‹ˆλ‹€.
  • 도메인 이해λ₯Ό λ°”νƒ•μœΌλ‘œ μ μ ˆν•œ λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ κ΅¬ν˜„ν•˜λŠ” 것이 μ†Œν”„νŠΈμ›¨μ–΄μ˜ λͺ©ν‘œλ₯Ό λ‹¬μ„±ν•˜λŠ” 데 맀우 μ€‘μš”ν•©λ‹ˆλ‹€.