πΎ [CS] λλ©μΈ(Domain)μ μλ―Έ.
- λλ©μΈ(Domain) μ μννΈμ¨μ΄ κ°λ°μμ νΉμ λ¬Έμ μμ λλ λΉμ¦λμ€ μμμ μ§μΉνλ μ©μ΄μ λλ€.
- λλ©μΈμ μννΈμ¨μ΄ μμ€ν μ΄ ν΄κ²°νκ³ μ νλ λ¬Έμ λ μ 곡νλ μλΉμ€μ κ΄λ ¨λ νΉμ ν μ§μ, κ·μΉ, μ μ°¨ λ±μ ν¬ν¨ν λͺ¨λ κ²μ μλ―Έν©λλ€.
1οΈβ£ λλ©μΈ(Domain)μ μλ―Έ.
-
1. λ¬Έμ μμ
- λλ©μΈμ νΉμ λΉμ¦λμ€λ λ¬Έμ μμμ λνλ΄λ©°, μ΄ μμμ μννΈμ¨μ΄κ° ν΄κ²°νλ €κ³ νλ μ€μ μΈκ³μ λ¬Έμ μ μ§μ μ μΌλ‘ κ΄λ ¨λ©λλ€.
- μλ₯Ό λ€μ΄, μν μ 무, μ μμκ±°λ, λ³μ κ΄λ¦¬, κ΅μ‘ κ΄λ¦¬ μμ€ν λ± κ°κ°μ λλ©μΈμ μλ‘ λ€λ₯Έ λ¬Έμ μ κ·μΉμ κ°μ§κ³ μμ΅λλ€.
- λλ©μΈμ νΉμ λΉμ¦λμ€λ λ¬Έμ μμμ λνλ΄λ©°, μ΄ μμμ μννΈμ¨μ΄κ° ν΄κ²°νλ €κ³ νλ μ€μ μΈκ³μ λ¬Έμ μ μ§μ μ μΌλ‘ κ΄λ ¨λ©λλ€.
-
2. λλ©μΈ μ§μ
- λλ©μΈμλ ν΄λΉ λ¬Έμ μμμ λν μ λ¬Έ μ§μμ΄λ κ·μΉμ΄ ν¬ν¨λ©λλ€.
- μλ₯Ό λ€μ΄, κΈμ΅ λλ©μΈμμλ μ΄μ κ³μ°, λμΆ κ·μ , κ³μ’ κ΄λ¦¬μ κ°μ νΉμ μ§μμ΄ μ€μν©λλ€.
- μ΄μ κ°μ λλ©μΈ μ§μμ λ°νμΌλ‘ μννΈμ¨μ΄μ λΉμ¦λμ€ λ‘μ§μ΄ μ μλ©λλ€.
- μλ₯Ό λ€μ΄, κΈμ΅ λλ©μΈμμλ μ΄μ κ³μ°, λμΆ κ·μ , κ³μ’ κ΄λ¦¬μ κ°μ νΉμ μ§μμ΄ μ€μν©λλ€.
- λλ©μΈμλ ν΄λΉ λ¬Έμ μμμ λν μ λ¬Έ μ§μμ΄λ κ·μΉμ΄ ν¬ν¨λ©λλ€.
-
3. λλ©μΈ λͺ¨λΈ
- λλ©μΈμ μΌλ°μ μΌλ‘ βλλ©μΈ λͺ¨λΈ(Domain Model)βλ‘ ννλ©λλ€.
- λλ©μΈ λͺ¨λΈμ λλ©μΈμ κ°λ
, κ°μ²΄, μν°ν°, κ΄κ³, κ·μΉ λ±μ μΆμννμ¬ ννν κ²μ
λλ€.
- μλ₯Ό λ€μ΄, μν λλ©μΈ λͺ¨λΈμλ κ³ κ°(Customer), κ³μ’(Account), κ±°λ(Transaction) κ°μ κ°μ²΄κ° ν¬ν¨λ μ μμ΅λλ€.
- λλ©μΈ λͺ¨λΈμ λλ©μΈμ κ°λ
, κ°μ²΄, μν°ν°, κ΄κ³, κ·μΉ λ±μ μΆμννμ¬ ννν κ²μ
λλ€.
- λλ©μΈ λͺ¨λΈμ μμ€ν μ΄ ν΄λΉ λλ©μΈμ λ¬Έμ λ₯Ό μ΄λ»κ² ν΄κ²°ν μ§λ₯Ό μ μνλλ° μ€μν μν μ ν©λλ€.
- λλ©μΈμ μΌλ°μ μΌλ‘ βλλ©μΈ λͺ¨λΈ(Domain Model)βλ‘ ννλ©λλ€.
-
4. λλ©μΈ μ λ¬Έκ°
- λλ©μΈ μ λ¬Έκ°(Domain Expert)λ νΉμ λλ©μΈμ λν κΉμ μ§μμ κ°μ§ μ¬λμ μλ―Έν©λλ€.
- μ΄λ€μ λΉμ¦λμ€ ν΅μ¬ μꡬ μ¬νκ³Ό κ·μΉμ μ μνλ©°, κ°λ°μμ νλ ₯νμ¬ λλ©μΈ λͺ¨λΈμ μ€κ³νλλ° μ€μν μν μ ν©λλ€.
- λλ©μΈ μ λ¬Έκ°(Domain Expert)λ νΉμ λλ©μΈμ λν κΉμ μ§μμ κ°μ§ μ¬λμ μλ―Έν©λλ€.
2οΈβ£ λλ©μΈμ μ€μμ±
- λλ©μΈμ μννΈμ¨μ΄ κ°λ°μ μ΄κΈ° λ¨κ³μμ λ§€μ° μ€μν©λλ€.
- μμ€ν μ΄ ν΄κ²°ν΄μΌ νλ λ¬Έμ λ₯Ό λͺ νν μ μνκ³ , λΉμ¦λμ€ μꡬ μ¬νμ λ°μν λλ©μΈ λͺ¨λΈμ μ€κ³νλ κ²μ΄ μμ€ν μ μ±κ³΅μ μΈ κ΅¬νμ νμμ μ λλ€.
- λλ©μΈ μ§μμ μ λλ‘ λ°μνμ§ λͺ»νλ©΄, μμ€ν
μ΄ μ€μ λΉμ¦λμ€ λ¬Έμ λ₯Ό ν΄κ²°νλ λ° μ€ν¨ν μ μμΌλ©°, μ΄λ νλ‘μ νΈ μ€ν¨λ‘ μ΄μ΄μ§ μ μμ΅λλ€.
- λ°λΌμ κ°λ°μλ λλ©μΈ μ λ¬Έκ°μ κΈ΄λ°νκ² νλ ₯νμ¬ λλ©μΈμ μ νν μ΄ν΄νκ³ , μ΄λ₯Ό μ½λλ‘ νννλ κ²μ΄ μ€μν©λλ€.
3οΈβ£ λλ©μΈ μ£Όλ μ€κ³(Domain-Driven Design, DDD)
- λλ©μΈκ³Ό κ΄λ ¨λ μ€μν μννΈμ¨μ΄ μ€κ³ μ κ·Όλ² μ€ νλλ λλ©μΈ μ£Όλ μ€κ³(Domain-Driven Design, DDD) μ λλ€.
- DDDλ λλ©μΈ λͺ¨λΈμ μ€μ¬μΌλ‘ μννΈμ¨μ΄λ₯Ό μ€κ³νλ λ°©λ²λ‘ μΌλ‘, λλ©μΈμ κ°λ κ³Ό κ·μΉμ μ½λμ μ§μ λ°μνμ¬ μννΈμ¨μ΄μ 볡μ‘μ±μ κ΄λ¦¬νκ³ , λλ©μΈμ λ³νμ μ½κ² μ μν μ μλλ‘ λμ΅λλ€.
μμ
- μλ₯Ό λ€μ΄, μ μμκ±°λ λλ©μΈ μ μκ°ν΄λ³΄λ©΄, μ΄ λλ©μΈμλ λ€μκ³Ό κ°μ μμλ€μ΄ ν¬ν¨λ μ μμ΅λλ€.
- κ³ κ°(Customer) : μνμ ꡬ맀νλ μ¬λ.
- μν(Product) : κ³ κ°μ΄ ꡬ맀ν μ μλ μμ΄ν .
- μ£Όλ¬Έ(Order) : κ³ κ°μ΄ μνμ ꡬ맀ν λ μμ±λλ κ±°λ κΈ°λ‘.
- κ²°μ (Payment) : μ£Όλ¬Έμ λν λκΈ μ§λΆ.
μ΄λ¬ν μμλ€κ³Ό κ·Έλ€ κ°μ κ΄κ³κ° λλ©μΈμ ꡬμ±νλ©°, μννΈμ¨μ΄ μμ€ν μ μ΄λ¬ν λλ©μΈμ κ°λ μ λ°νμΌλ‘ λΉμ¦λμ€ λ‘μ§μ ꡬννκ² λ©λλ€.
4οΈβ£ κ²°λ‘
- λλ©μΈμ μννΈμ¨μ΄κ° λ€λ£¨λ λ¬Έμ μ λ²μμ κ΄λ ¨λ κ°λ , κ·μΉ, κ°μ²΄λ€μ λνλ΄λ©°, μ΄λ₯Ό μ νν μ΄ν΄νκ³ λͺ¨λΈλ§νλ κ²μ΄ μ±κ³΅μ μΈ μννΈμ¨μ΄ κ°λ°μ ν΅μ¬μ λλ€.
- λλ©μΈ μ΄ν΄λ₯Ό λ°νμΌλ‘ μ μ ν λΉμ¦λμ€ λ‘μ§μ ꡬννλ κ²μ΄ μννΈμ¨μ΄μ λͺ©νλ₯Ό λ¬μ±νλ λ° λ§€μ° μ€μν©λλ€.