μλΉμ€μ μ μ
μΌμ μνμμ λ§νλ βμλΉμ€(service)βλ λ³΄ν΅ νλμ λμμ΄ λ€λ₯Έ λμμκ² λ¬΄μΈκ°λ₯Ό ν΄μ£Όλ κ²μ μλ―Ένλ€. μ¬κΈ°μ μλΉμ€λ₯Ό μ 곡νλ λμμ βμλΈ(serve)λ₯Ό νλ μβλΌ νμ¬ βμλ²(server)βλΌκ³ νκ³ μλΉμ€λ₯Ό μ 곡 λ°λ λμμ μλμ΄λΌ νμ¬ βν΄λΌμ΄μΈνΈ(client)βλΌκ³ λΆλ₯Έλ€. κ·Έλ¦¬κ³ μ΄ κ°λ
μ νλ‘κ·Έλλ°μμλ κ·Έλλ‘ μ¬μ©λλ€.
κ·Έλ°λ° λ¬Έμ λ β무μΈκ°λ₯Ό ν΄μ€λ€βλΌλ κ°λ
μ΄ μλ ν¬κ΄μ μ΄λ€λ³΄λ μλΉμ€λΌλ λ¨μ΄κ° μ¬κΈ°μ κΈ°μμ λ€ μ°μ¬μ νλ‘κ·Έλλ° λ΄μμ μ νν μλΉμ€μ κ°λ
μ μ νκ³ κ²½κ³λ₯Ό λλκΈ°κ° μ΄λ ΅λ€.
κ·Έλμ λλ©μΈ μ£Όλ μ€κ³μμλ μλΉμ€λ₯Ό ν¬κ² λλ‘ λλ μ μ μνλλ° νλλ λλ©μΈμ μν μλΉμ€μΈ λλ©μΈ μλΉμ€κ³ λ€λ₯Έ νλλ μ΄μ©μμ λͺ©μ μ λΆμνλ νλ‘κ·Έλ¨μ λ§νλ βμ ν리μΌμ΄μ
βμ μν μλΉμ€, μ¦ μ ν리μΌμ΄μ
μλΉμ€λ€.
μ¬κΈ°μλ λ¨Όμ λλ©μΈ μλΉμ€μ λν κ°λ
λΆν° 곡λΆν΄λ³΄λλ‘ νλ€.
λλ©μΈ μλΉμ€
μμ μλΉμ€λ β무μΈκ°λ₯Ό νλ κ²βμ΄λΌκ³ μ μνλλ°, μλΉμ€ κ°μ²΄λ κ³§ κ·Έ 무μΈκ°λ₯Ό νλ νλ μ체λ₯Ό κ°μ²΄λ‘ ννν κ²μ΄λΌκ³ λ³Ό μ μλ€.
κ·Έλ°λ° μ μ΄μ κ°μ²΄λ μμ±κ°κ³Ό νλμ κ°λλ€. κ° κ°μ²΄λ μν°ν° κ°μ λλ©μΈ κ°μ²΄μ νλμ μ μν μ μλλ° κ΅³μ΄ μλΉμ€ κ°μ²΄κ° νμν μ΄μ λ 무μμΌκΉ?
κ·Έ μ΄μ λ μμ€ν
μ κ° κ°μ²΄λ μν°ν°λ‘ ꡬννκΈ° λΆμμ°μ€λ¬μ΄ νλλ€μ΄ μ‘΄μ¬νκΈ° λλ¬Έμ΄λ€. μ΄λ° λΆμμ°μ€λ¬μμ ν΄κ²°ν΄μ£Όλ κ²μ΄ λλ©μΈ μλΉμ€λ€.
κ° κ°μ²΄λ μν°ν°μ μ μνκΈ° μ΄μν νλ
βλλ©μΈ μ£Όλ μ€κ³ μ² μ μ
λ¬Έβμμλ μ€λ³΅κ²μ¬λ₯Ό μμλ‘ λ λ€.
User λΌλ μν°ν°κ° μμ λ, μλ‘μ΄ User κ°μ²΄λ₯Ό λ§λλ κ³Όμ μμ κ°μ²΄ λμΌμ±μ μ μ§νκ³ κ°μ²΄ κ° κ΅¬λ³μ μν΄μλ μ΄λ―Έ λμΌν User κ°μ²΄κ° μ‘΄μ¬νλμ§ νμΈνκΈ° μν΄ id μ€λ³΅κ²μ¬κ° νμνλ€.
μ΄λ idμ μ€λ³΅μ¬λΆλ₯Ό κ²μ¬νλ νλμ User μν°ν°μ μ μνκ² λ κ²½μ° Userκ° μ€μ€λ‘ μ€λ³΅μΈμ§ μλμ§λ₯Ό κ²μ¦ν΄μ κ²°κ³Όλ₯Ό λ°νν΄μΌ νλ€. λΆκ°λ₯ν κ²μ μλμ§λ§ νμκ°μ
κ³Όμ μμ κ³ κ°μκ² βλΉμ μ κΈ°μ‘΄ κ³ κ°μ
λκΉ?βλ₯Ό λ¬Όμ΄λ³΄λ©΄ κ³ κ°μ΄ μ€μ€λ‘ μ 체 νμ 리μ€νΈλ₯Ό 보면μ λ΅μ μ°ΎμμΌ νκ² λκ±°λ, λλ΅μ ν΄λ κ·Έκ² μ°ΈμΈμ§ κ±°μ§μΈμ§ μμ€ν
μ μ μ μλ€.
κ·Έλ¦¬κ³ μ΄λ° μ μ idμ μμ± κ°μΌλ‘ UserId λΌλ κ° κ°μ²΄λ₯Ό μ μνλ€ ν΄λ λ§μ°¬κ°μ§λ€. UserId κ° κ°μ²΄μ μ€λ³΅μ¬λΆλ₯Ό κ²μ¬νλ νλμ μ μνλ €λ©΄ UserId κ°μ²΄λ§λ€ μ 체 νμ id 리μ€νΈλ₯Ό μμ±μΌλ‘ κ°λλ‘ νκ±°λ UserIdκ° λ€λ₯Έ μ΄λκ°μ μ μ₯λμ΄ μλ id 리μ€νΈ μ§μ μ‘°ννκ² ν΄μΌνλ€.
μ΄λ° λΆμμ°μ€λ¬μλ€μ΄ UserService λΌλ λλ©μΈ μλΉμ€ κ°μ²΄λ₯Ό μ μνκ³ UserServiceμ νλμΌλ‘ μ€λ³΅κ²μ¬λ₯Ό λΆμ¬ν¨μΌλ‘μ¨ ν΄κ²°ν μ μλ€.
λλ©μΈ μλΉμ€λ λ¨μ©νκΈ° μ½λ€
μ€μν κ²μ λλ©μΈ μλΉμ€λ κ° κ°μ²΄λ μν°ν°μ μ μνκΈ° λΆμμ°μ€λ¬μ΄ νλλ€μ μ²λ¦¬νλ λͺ©μ μΌλ‘λ§ μ¬μ©λμ΄μΌ νλ€λ κ²μ΄λ€.
μμΉ«νλ©΄ κ° κ°μ²΄λ μν°ν°μ μ μλμ΄μΌ ν νλμ λͺ¨λ λλ©μΈ μλΉμ€λ‘ λ§λ€μ΄λ²λ¦΄ μλ μλλ°, μ½λ μμΌλ‘λ λ¬Έμ κ° μμ΄λ³΄μ΄μ§λ§ μ μ κ° κ°μ²΄λ μν°ν°μ μμ΄μΌ ν νλ μ 보λ€μ΄ ννΈν λμ΄ μ½λλ₯Ό μ½κ³ λλ©μΈ κ·μΉμ λ°κ²¬νκΈ° μ΄λ ΅κ² λ μ μλ€.
μ΄λ κ² λλ©΄ λλ©μΈ κ°μ²΄κ° μλ ν¬ν¨νμ΄μΌ ν μ§μμ΄λ μ²λ¦¬ λ΄μ©μ λͺ¨λ μλΉμ€ κ°μ²΄μκ² λΉΌμκΈ°κ² λλλ° μ΄μ²λΌ μ 곡ν μ λ³΄κ° μλ λλ©μΈ κ°μ²΄λ₯Ό λΉν λλ©μΈ λͺ¨λΈ(anemic domain model)μ΄λΌκ³ νλ€.
λΉν λλ©μΈ λͺ¨λΈμ λ°μ΄ν°μ νμλ₯Ό ν¨κ» λͺ¨μ λλλ€λ κ°μ²΄ μ§ν₯ μ€κ³μ κΈ°λ³ΈμμΉκ³Ό μ§μμ λ¬ΈμννκΈ° μν λλ©μΈ μ£Όλ μ€κ³μ λͺ©μ κ³Ό μ λ°λ λλ€.
Β
+ κ·Έλ¬λ©΄ λ¨μ©μ μ΄λ»κ² νΌν κ²μΈκ°?
μ±
μμλ βλλ©μΈ μλΉμ€λ₯Ό μ¬μ©νλ κ²μ κ°λ₯ν ν νΌνλΌβκ³ νλ€. μ΅λν κ° κ°μ²΄λ μν°ν°μ νλμ μ μνκ³ λΆμμ°μ€λ¬μμ ν΄κ²°νλ λͺ©μ μΌλ‘λ§ μ¬μ©νλΌλ κΈ°μ€μ μ μν΄μ£ΌκΈ΄ νμ§λ§ μ½μΌλ©΄μ μ¬μ ν λ§μ°ν κ°μ΄ λ€μλ€.
μ μ¦μΌμ΄μ€λ₯Ό 보면μ κ°μΈμ μΌλ‘ μκ°ν κ²μ μΌλ¨ μ€κ³ λ¨κ³μμλ 미리 λλ©μΈ μλΉμ€λ₯Ό ꡬμν΄λμ§ μλ κ²μ΄ μ’κ² λ€λ κ²μ΄μλ€. μ μ¦μΌμ΄μ€ μκ°μμλ λλ©μΈ μλΉμ€μ ꡬνμ μμ
μμμ λ§μ§λ§μ λ±μ₯νλλ°, μ§μ μ μΌλ‘ μ΄λ»κ² νλΌκ³ κΈλ‘ ννλμ΄ μμ§λ μμμ§λ§ μ΅λν λλ©μΈ λͺ¨λΈ λ΄μ νλμ μ μνλ λ°©μμΌλ‘ μ°μ ꡬνμ νλ€κ° λΆμμ°μ€λ¬μμ΄ λ°κ²¬λμμ λμμμΌ λλ©μΈ μλΉμ€λ₯Ό λΆλ¦¬ν΄λ΄λ κ²μ΄ λ¨μ©μ νΌν λ°©λ²μ΄λ μκ°μ΄ λ€μλ€.
Β