π£ μν©
3κ³μΈ΅ μν€ν μ³.. λ§λ§ λ€μ΄μλλ°,
λλμ΄ μ΄λΆλΆμ λν΄ μκ²λμ΄ μ 리νλ€.
π€ 3κ³μΈ΅ μν€ν μ³
1. mvc ν¨ν΄
2. ν΄λ¦° μν€ν μ³ ν¨ν΄
3. λ§μ΄ν¬λ‘ μλΉμ€ μν€ν μ³ ν¨ν΄
4. κ³μΈ΅ν μν€ν μ³ ν¨ν΄
μΌλ¨ μ΄μ λλ‘ κ°λ΅ν μ΄ν΄λ³΄κ³ , κ·Έμ€μμ κ³μΈ΅ν μν€ν μ³ ν¨ν΄μ λν΄ μμΈν μμ보μ.
π MVC ν¨ν΄
- μννΈμ¨μ΄ λμμΈ ν¨ν΄ μ€ νλ
- λͺ¨λΈ: λ°μ΄ν°λ² μ΄μ€μ λΉμ§λμ€ λ‘μ§
- λ·° : μ¬μ©μ μΈν°νμ΄μ€ UI λ΄λΉ
- 컨νΈλ‘€λ¬ : ν΄λΌμ΄μΈνΈμ μμ²μ λͺ¨λΈκ³Ό λ·°λ‘ μ λ¬ν΄ μ£Όλ μν .
- 컨νΈλ‘€λ¬λ μ¬μ©μμ μμ²μ ν΄μνκ³ κ·Έμ λ°λ₯Έ νλμ κ²°μ νλ μν μ μν
- 컨νΈλ‘€λ¬λ λͺ¨λΈκ³Ό λ·° μ¬μ΄ μ€κ° 맀κ°μ²΄ μν
- μμ μ νλ‘ νΈμ λ°±μ΄ νλμ νμΌμμ κ΄λ¦¬λλ λ λμ΄.
- λ°±μλ μν€νμ³ μ΄κΈ΄ νμ§λ§ λ°±λ§ μλκ±° μλ.
π· ν΄λ¦° μν€ν μ³ ν¨ν΄( the clean Architecture)
- μμ‘΄μ±μ΄ μΈλΆμμ λ΄λΆλ‘ νλ¬κ°λ€.
- μ΅μ’ ν΅μ¬
- λ‘μ§μ μ μΌ μμͺ½μ.
- ν΄λΌμ΄μΈνΈμ μμ² μ²λ¦¬, λ°μ΄ν°λ² μ΄μ€ μ‘°μ, μΈλΆ μμ€ν κ³Όμ ν΅μ μ μΈλΆ κ³μΈ΅μμ μ²λ¦¬
- μννΈμ¨μ΄μ μ μ§λ³΄μμ±κ³Ό νμ₯μ±μ ν₯μμν€λ κ²μ΄ μ£Όμ λͺ©ν
- κ³μΈ΅ν μν€ν μ³ μ¬μ©νλ©΄μ λ§λ λ¬Έμ λ€μ ν΄λ¦° μν€ν μ³ ν¨ν΄μΌλ‘ μ’μμ§ μ μλ€κ³ νλ€.
ν΄λ¦° μν€ν μ³ ν¨ν΄κ³Ό, κ³μΈ΅ν μν€ν μ³ ν¨ν΄μ μ°¨μ΄μ .
ν΄λ¦° μν€ν
μ³ ν¨ν΄
> κ³ μμ€ λͺ¨λμ΄ μ μμ€ λͺ¨λμ μμ‘΄νμ§ μκ³ , λλ€ μΆμνμ μμ‘΄νλλ‘ μ₯λ €
> μΈλΆλ‘λΆν° λ΄λΆλ‘μ μμ‘΄μ± μ΅μν. μΈλΆ μμμ λ
립μ λ΄λΆ ꡬ쑰λ₯Ό λ§λλλ° μ΄μ .
> λ΄λΆμμμ μΈλΆμμ μ¬μ΄μ κ²½κ³λ₯Ό κ΄λ¦¬. μΈν°νμ΄μ€λ₯Ό ν΅ν΄ λΆλ¦¬.
> μ¦ μΈλΆ μμμ λ³νμ λ λ―Όκ°ν λ΄λΆκ΅¬μ‘° λ§λ λ€.
> κ²½κ³λ₯Ό λͺ
νν.
> μΈλΆλ³νκ° λ΄λΆκ΅¬μ‘°μ λ―ΈμΉλ μν₯μ μ΅μν.
κ³μΈ΅ν μν€ν
μ³ ν¨ν΄
> λͺ¨λν λκ³ , λΆλ¦¬λ μμ€ν
μ λ§λλλ° μ€μ .
> κ·Έλ¬λ κ³ μμ€ λͺ¨λμ΄ μ μμ€ λͺ¨λμ μμ‘΄νμ§ μκ³ , λλ€ μΆμνμ μμ‘΄νλλ‘ μ₯λ € νμ§ μμ.
> μμ°¨μ μμ‘΄κ΄κ³. μκ³μΈ΅μ΄ λ°λ‘ μλ κ³μΈ΅μ μμ‘΄. κ·Έλ¬λ μλ‘λ μμ‘΄νμ§ μλλ‘.
> κ° κ³μΈ΅μ΄ νΉμ ν μν κ³Ό μ±
μμ κ°μ§.
> κ³μΈ΅κ°μ μνΈ μμ‘΄μ±μ λͺ
ννκ² μ€μ νλλ° μ΄μ μ λ§μΆ€.
> μΈλΆ λ³νμ λ΄λΆμ λ³νκ° μ νλλ κ²½ν₯ μμ.
π£ λ§μ΄ν¬λ‘ μλΉμ€ μν€ν μ³ ν¨ν΄ (Microservices Architecture Pattern)
- MSA λΌκ³ λ λΆλ¦Ό.
- μκ³ λ 립μ μΈ μλΉμ€λ‘ λΆν. κ° μλΉμ€λ νΉμ λΉμ§λμ€ κΈ°λ₯ λ΄λΉ, λ 립μ λ°°ν¬ νμ₯ κ΄λ¦¬..
- μμ€ν μ μκ³ , λ 립μ μΌλ‘ λ°°ν¬ κ°λ₯ν μλΉμ€λ‘ λΆν νλ ν¨ν΄
- μνΈ μμ‘΄μ± μ΅μν.
- κ° μλΉμ€λ€μ΄ λ€λ₯Έ μΈμ΄λ₯Ό μ¬μ©ν΄λ μκ΄ μμ.
- κ° μλΉμ€κ° μλ‘ λ€λ₯Έ λ°μ΄ν°λ² μ΄μ€λ₯Ό μ νν΄λ μκ΄ μμ.
- μλΉμ€κ° λ 립μ μΌλ‘ μ νν μ΅μ μ κΈ°μ μ μ¬μ©ν μ μλλ‘ νλ€.
- νλμ μμ€ν μμ λ€μν μΈμ΄μ νλ μμν¬λ₯Ό λμ ν μ μλ ν¨ν΄
- λΉλν μλΉμ€λ₯Ό μκ² μκ² μ μ§νκΈ°μ μμ£Ό μ’μ ν¨ν΄μ.
- μλΉμ€ κ°μ ν΅μ μ API λλ μ΄λ²€νΈ κΈ°λ° μν€ν μ²(EDA, Event Driven Architecture)λ₯Ό ν΅ν΄ ν΅μ .
- μ΄λ€ μΈμ΄λ₯Ό μ¬μ©νλ κ°κ° μλΉμ€ λ§λ€ μκ² μκ² κ΅¬νλλ μ₯μ μ΄ μμ.
π κ³μΈ΅ν μν€ν μ² ν¨ν΄(Layered Architectur Pattern)
- νμ¬ κ°μ₯ λ리 μ±νλκ³ μλ μν€ν μ² ν¨ν΄.
- λ¨μνλ©΄μ λμ€μ , λΉμ©λ μ κ² λ€μ΄μ νμ€ μν€ν μ³ λΌκ³ ν μ μμ.
- μ΄λ€ μΈμ΄λ₯Ό μ°λ, μ΄λ€ νλ μ μν¬λ₯Ό μ¬μ©νλ μ΄ ν¨ν΄μ μ¬μ©νλ©΄, ν΄λΉ μ½λκ° λλ΅μ μΌλ‘ μ΄λ€ μν μ νλμ§ μΈμ§ν μ μκ² λ¨.
- κ³μΈ΅νμ ν΅μ¬ __ κ° κ³μΈ΅μ΄ λμ μμ§λλ₯Ό κ°μ§λ©΄μ, λ€λ₯Έ κ³μΈ΅κ³Όλ κ²°ν©λλ₯Ό μ΅μν νλ κ².
- κ° κ³μΈ΅μ λͺ ννκ² λΆλ¦¬ν΄ μ μ§ν¨.
- κ° κ³μΈ΅μ΄ μμ μ λ°λ‘ μλ κ³μΈ΅μλ§ μμ‘΄νκ² λ§λλκ² λͺ©νμ.
- κ° κ³μΈ΅μ λ°λ‘ μλ κ³μΈ΅κ³Όλ§ μνΈμμ© νλ©°, μ κ³μΈ΅μλ§ μλΉμ€ μ 곡.
- μμκ³μΈ΅μ νμκ³μΈ΅ μ¬μ© κ°λ₯
- νμκ³μΈ΅μ μμ μ΄ μ΄λ€ μμ κ³μΈ΅μ μνλμ§ μ νμ μμ΄ λ 립μ μΌλ‘ λμν μ μμ΄μΌ νλ€.
- μ΄λ° λΆλ¦¬ ꡬ쑰λ μμ€ν μ λ λͺ¨λν νκ³ ,
- λ³κ²½μ¬ν λ°μμ, μν₯μ μ΅μν ν΄ μ μ§λ³΄μμ νμ₯μ±μ λμΈλ€.
- μλ κ³μΈ΅μλ μμ‘΄νλ©°, μλ‘λ μμ‘΄ νμ§ μλλ€. μ¦ μμ°¨μ μμ‘΄μ± κ΄κ³.
- κ° κ³μΈ΅μ΄ νΉμ ν μν κ³Ό μ± μμ κ°μ§λλ‘ ν¨.
- κ° κ³μΈ΅λ³λ‘ λ¨μ ν μ€νΈλ₯Ό μμ±ν μ μμ΄ ν μ€νΈ μ½λλ₯Ό μ’λ μ©μ΄νκ² κ΅¬μ± κ°λ₯.
1. ννκ³μΈ΅ Presentation Layer __ 컨νΈλ‘€λ¬
- μ¬μ©μ μΈν°νμ΄μ€ UIλ₯Ό μ²λ¦¬.
- μ¬μ©μμ μμ€ν κ° μνΈμμ© λ΄λΉ.
- μΉ λΈλΌμ°μ λ μ±μ UI λΆλΆμ΄ μ¬κΈ°μ ν΄λΉ
- μ λ ₯μ λ°μλ€μ΄κ³ , μ 보λ₯Ό νμνλ μν .
- μμ² μμ ν κ²°κ³Ό λ°ννλ μν μ.
- ν΄λΌμ΄μΈνΈμ μλ²κ° κ°μ₯ μ²μ λ§λκ² λλ λΆλΆ
- λΌμ°ν°λ μ¬κΈ°μ ν΄λΉνλ€ λ³Ό μ μλ€.
- λΌμ°ν°λ μ£Όλ‘ νν κ³μΈ΅(Presentation Layer)μ μνλ©°, ν΄λΌμ΄μΈνΈμ μμ²μ λ°μλ€μ΄κ³ μμ²λ URL λ° HTTP λ©μλμ λ°λΌ μ μ ν 컨νΈλ‘€λ¬λ‘ λΌμ°ν νλ μν μ μνν©λλ€. λΌμ°ν°λ μμ²μ λ°μλ€μ¬ μ΄λ₯Ό ν΄λΉνλ 컨νΈλ‘€λ¬λ‘ μ λ¬νμ¬ λΉμ¦λμ€ λ‘μ§μ΄ μ€νλλλ‘ νλ©°, κ·Έ κ²°κ³Όλ₯Ό ν΄λΌμ΄μΈνΈμκ² λ°νν©λλ€.
- νμ κ³μΈ΅μ λ΄λΆκ΅¬μ‘°μ λν΄ μ κ²½μ°μ§ μλλ€.
- μΈλΆμ 곡κ°λ λ©μλλ₯Ό νΈμΆνκΈ°λ§ νλ©΄ λ¨.
- μ΄κ² κ°λ₯ν μ΄μ λ μΆμνμ νΉμ± λλΆ.
- μλΉμ€ κ³μΈ΅μΌλ‘ μ λ¬λ§ νλ©΄ λ¨.
- μλΉμ€ κ³μΈ΅μ΄ μ΄λ€ λ΄λΆκ΅¬μ‘°λ‘ λΉμ§λμ€ λ‘μ§μ μννλμ§λ 컨νΈλ‘€λ¬ κ³μΈ΅μκ² μ€μνμ§ μμ
- νμκ³μΈ΅μΈ μλΉμ€ κ³μΈ΅, μ μ₯μ κ³μΈ΅μμ λ°μνλ μμΈλ₯Ό μ²λ¦¬.
- ν΄λΌμ΄μΈνΈκ° μ λ¬ν λ°μ΄ν°μ λν μ ν¨μ± κ²μ¦ κΈ°λ₯ μν.
- μμ² μ²λ¦¬ν μλ²μμ μ²λ¦¬λ κ²°κ³Όλ₯Ό λ°νν¨.
2. μλΉμ€ κ³μΈ΅ Business Layer __ μλΉμ€
- Application Layer(μμ©κ³μΈ΅) κ³Ό , Domain Layer(λλ©μΈ κ³μΈ΅)μ ν¬κ΄νκ±°λ λ¨μΌν νλ μ©μ΄λ‘ Business Layerκ° μ¬μ©
- ν΅μ¬ λ‘μ§μ΄ μμ±λλ λΆλΆ
- νμκ°μ λ° λ‘κ·ΈμΈμ μλ‘ λ€μλ©΄ μ¬μ©μ μΈμ¦λ±
- μλΉμ€ κ³μΈ΅ ν΅μ¬ λΉμ§λμ€λ‘μ§, μ λ ¬, λ°μ λ°μ΄ν° κ°κ³΅ν΄μ μ€μν μ λ³΄λ ΈμΆ μλλλ‘ νλκ²λ λΉμ§λμ€ λ‘μ§ μ€ νλ.
- λΉμ§λμ€ μμκ³Ό κ΄λ ¨λ λͺ¨λ λ‘μ§κ³Ό νλ‘μΈμ€λ₯Ό λ΄λΉνλ€.
- νλ μ ν μ΄μ κ³μΈ΅κ³Ό λ°μ΄ν° μμΈμ€ κ³μΈ΅ μ¬μ΄μ μ€κ°λ€λ¦¬ μν μ΄λ©°, μλ‘ λ€λ₯Έ λ κ³μΈ΅μ΄ μ§μ ν΅μ νμ§ μλλ‘ λ§λ€μ΄ μ€λ€.
- κ·Όλ° μ΄ν리μΌμ΄μ μ κ·λͺ¨κ° 컀μ§μλ‘ μλΉμ€ κ³μΈ΅μ μν κ³Ό μ½λμ 볡μ‘μ±λ μ μ λ 컀μ§κ² λλ€. μλΉμ€ κ³μΈ΅μ΄ μ μ λΉλν΄ μ§ μ μμ.!
- μλΉμ€ κ³μΈ΅μ μ₯μ
- μ¬μ©μ μ μ¦μΌμ΄μ€μ μν¬νλ‘μ°λ₯Ό λͺ νν μ΄ν΄νκ³ , μ΄ν΄ν μ μλλ‘ λμμ€.
- μ¦ κ²μκΈ μμ±λΆλΆμ μ½λλ₯Ό λ³΄λ €λ©΄ ν΄λμ€λ§ 보면 λ¨.
- λν λΉμ§λμ€ λ‘μ§μ΄ api λ€μ μ¨κ²¨μ Έ μμμΌλ‘ μλΉμ€ κ³μΈ΅μ μ½λ μμ λ‘κ² μμ νκ±°λ 리νν°λ§ κ°λ₯.__ λΉμ§λμ€ λ‘μ§ μ°ΎκΈ° μ½κ³ , μμ λ κ°νΈνλ€λ λ§μ.
- νμκ³μΈ΅μ μ μ₯μν¨ν΄ (Repository Pattern)λ° κ°μ§ μ μ₯μ(Fake Repository)μ μ‘°ν©νλ©΄, λμ μμ€μ ν μ€νΈλ₯Ό μμ±ν μ μλ€.
- μλΉμ€ κ³μΈ΅μ λ¨μ .
- μλΉμ€ κ³μΈ΅ λν λ€λ₯Έ μΆμν κ³μΈ΅μμΌλ‘ μλͺ» μ¬μ©νλ©΄ μ½λμ 볡μ‘μ±μ μ¦κ°μν¬ μ μλ€
- λ©μλλͺ λͺ ννκ² μμ±ν΄μΌν¨.
- ν μλΉμ€ κ³μΈ΅μ΄ λ€λ₯Έ μλΉμ€ κ³μΈ΅μ μμ‘΄νλ κ²½μ° μμ‘΄μ± κ΄λ¦¬κ° 볡μ‘ν΄ μ§λ€.
- μμ‘΄μ± κ΄λ¦¬μ λν λΆλΆ κ³ λ―Ό
- ν μλΉμ€ κ³μΈ΅μ λ무 λ§μ κΈ°λ₯μ λ£μΌλ©΄, λΉμ½ν λλ©μΈ λͺ¨λκ³Ό κ°μ μν° ν¨ν΄μ΄ μκΈΈ μ μλ€.
- κ³Όνμ§ μκ³ μ μ§ μκ² μ½λ ꡬννκΈ°
μ’λ λ₯νκ² λ€μ΄κ° 보μ.
μμ©κ³μΈ΅ κ³Ό , λλ©μΈ κ³μΈ΅μ λν΄ μ΄ν΄λ³΄μ.
- μμ©κ³μΈ΅ (Application Layer) _ uiμ λλ©μΈκ³μΈ΅ μ¬μ΄μ 맀κ°μ²΄ _
- μ¬μ©μ μΈν°νμ΄μ€ UIμ λλ©μΈ κ³μΈ΅ μ¬μ΄μ 맀κ°μ²΄ μν μ νλ€.
- μ¦ μ¬μ©μ μΈν°νμ΄μ€ UIμ λ°μ΄ν°λ² μ΄μ€ λλ μΈλΆ μμ€ν μ¬μ΄μ μ€κ°κ³μΈ΅μΌλ‘ λμ.
- μ¬μ©μ μμ² λ°μλ€μ΄κ³ , ν΄λΉ μμ²μ μ²λ¦¬νκΈ° μν λλ©μΈ κ°μ²΄λ μλΉμ€ νΈμΆνλ μν .
- κ·Έλ¦¬κ³ κ·Έ κ²°κ³Όλ₯Ό μ¬μ©μμκ² νμνλ μν μ νλ€.
- λΉμ§λμ€ κ·μΉκ³Ό κ΄λ ¨λ κΈ°λ₯λ€μ μ 곡νλ©°, μ¬μ©μ μ λ ₯μ λ°λΌ μ μ ν λλ©μΈ λ‘μ§μ νΈμΆνκ±°λ μ μ΄.
- λλ©μΈ κ³μΈ΅ ( Domain Layer)
- λΉμ§λμ€μ ν΅μ¬ κ°λ μ΄ μ μλλ€.
- λΉμ§λμ€ λ‘μ§ μ€ν, μνμ μ§, λΉμ§λμ€ μꡬμ¬ν μΆ©μ‘±μ μν λ‘μ§ κ΅¬ν.
- μ£Όλ¬Έ, κ³ κ°, μ ν κ°μ ν΅μ¬ λλ©μΈ κ°μ²΄λ₯Ό λ€λ£¨λ©°, μνΈμμ© μ μ.
- λ°μ΄ν° μμΈμ€ κ³μΈ΅(Persistence Layer) λ₯Ό ν΅ν΄ λ°μ΄ν°λ² μ΄μ€μ μ κ·ΌνκΈ° λλ¬Έμ μ§μ μ μΌλ‘ λ°μ΄ν°λ² μ΄μ€μ μμ‘΄νμ§ μλλ€.
- λν λλ©μΈ κ³μΈ΅ ν μ€νΈ μμ, λ°μ΄ν°λ² μ΄μ€μ μ§μ μμ‘΄νμ§ μκ³ , κ°μ§ λ°μ΄ν°λ λͺ©μ λ°μ΄ν°λ₯Ό μ¬μ©ν΄ ν μ€νΈ νκΈ° μ¬μμ§λ€.
λΉμ§λμ€ λ‘μ§μ΄λ
- μννΈμ¨μ΄κ° λΉμ§λμ€ μꡬμ¬νμ μΆ©μ‘±νκΈ° μν΄ μννλ κ³μ°, κ·μΉ, νλ‘μΈμ€λ± μΆμμ λΆλΆ μλ―Έ
- 1. κ·μΉ λ° μ‘°κ±΄. : νΉμ μ‘°κ±°μ λ°λΌ μμ€ν
μ΄λ»κ² λμν μ§ μ λν κ·μΉ.
> μλ₯Όλ€λ©΄, ꡬ맀 μ£Όλ¬Έμ΄ νΉμ κ°κ²© μ΄μμ΄λ©΄, ν μΈμ μ μ©νλ κ·μΉ λ±μ΄ μκ² λ€. - 2. μ°μ° λ° κ³μ°. : λ°μ΄ν°λ μ
λ ₯μ κΈ°μ΄ν΄ κ°μ κ³μ°νκ±°λ μ²λ¦¬νλ λ‘μ§ μ μ.
> μλ₯Όλ€μ΄ μΌνμΉ΄νΈμμ μ΄ μ£Όλ¬Έκ°κ²©μ κ³μ°νλ κ²μ΄ μ¬κΈ°μ ν΄λΉ - 3. μμΈ μ²λ¦¬. : μμνμ§ λͺ»ν μν©μ λλΉν΄μ μμΈλ₯Ό μ²λ¦¬νλ κ·μΉ μ μνλ€.
> μ£Όλ¬Έ μ²λ¦¬μ€ μ¬κ³ λΆμ‘±μ΄λ κ²°μ μ€λ₯ κ°μ μν©μ λ€λ£¨λ λ‘μ§μ΄ μ΄μ ν΄λΉ.μννΈμ¨μ΄κ° λΉμ§λμ€ μꡬμ¬νμ μΆ©μ‘±νκΈ° μν΄ μννλ κ³μ°, κ·μΉ, νλ‘μΈμ€λ± μΆμμ λΆλΆ μλ―Έ
- 1. κ·μΉ λ° μ‘°κ±΄. : νΉμ μ‘°κ±°μ λ°λΌ μμ€ν
μ΄λ»κ² λμν μ§ μ λν κ·μΉ.
3. μ μ₯μ κ³μΈ΅ Persistence Layer (λ°μ΄ν° μμΈμ€ κ³μΈ΅)
- μμμ± κ³μΈ΅, μ μ₯μ κ³μΈ΅
- λ°μ΄ν°λ² μ΄μ€λ μΈλΆ μμ€ν κ³Όμ μνΈμμ© λ΄λΉ.
- λ°μ΄ν° μꡬ μ μ₯ λ° κ²μ μ²λ¦¬
- λ°μ΄ν° λ² μ΄μ€μ μλ λ΄μ©μ μ κ·ΌνκΈ° μν΄ db λ©μλλ₯Ό μ¬μ©νλ λΆλΆ.
- μ μ₯μ κ³μΈ΅ : λ°μ΄ν° μ κ·Όκ³Ό κ΄λ ¨λ μΈλΆμ¬νμ μ¨κΈ°λ λμμ, λ©λͺ¨λ¦¬ μμ λ°μ΄ν°κ° μ‘΄μ¬νλ κ²μ²λΌ κ°μ νμ¬ μ½λλ₯Ό ꡬννλ€.
- μ μ₯μ κ³μΈ΅μ λμ νλ©΄, λ°μ΄ν° μ μ₯ λ°©λ²μ λμ± μ½κ² λ³κ²½ κ°λ₯νλ©°, ν μ€νΈ μ½λ μμ±μ κ°μ§ μ μ₯μ(Mock Repository) λ₯Ό μ 곡νκΈ° λ μ¬μμ§λ€. μλ§ κ°μλΌμ°λ©΄ λλκΉ.
- μ΄ν리μΌμ΄μ μ λ€λ₯Έ κ³μΈ΅μ μ μ₯μμ μΈλΆ ꡬνλ°©μμ λν΄ μμ§ λͺ»νλλΌλ ν΄λΉ κΈ°λ₯μ μ¬μ© ν μ μλ€. μ¦ μ μ₯μ κ³μΈ΅μ λ³κ²½ μ¬νμ΄ λ€λ₯Έ κ³μΈ΅μ μν₯μ μ£Όμ§ μλλ€.
- μ΄κ±΄ κ°μ²΄μ§ν₯μ κ°λ μ€ μΆμνμ κ΄λ ¨μ΄ μλ€.
- λν μ μ₯μ κ³μΈ΅μ λ°μ΄ν° μ μ₯μλ₯Ό κ°λ¨ν μΆμν νκ². μ΄ κ³μΈ΅μ ν΅ν΄ λͺ¨λΈ κ³μΈ΅κ³Ό λ°μ΄ν° κ³μΈ΅μ λͺ νν λΆλ¦¬ν μ μλ€.
- μ μ₯μ κ³μΈ΅μ μ₯μ
- λ°μ΄ν° λͺ¨λΈκ³Ό λ°μ΄ν° μ²λ¦¬ μΈνλΌμ λν μ¬νμ λΆλ¦¬.
- λ°λΌμ λ¨μ ν
μ€λ₯Ό μν κ°μ§ μ μ₯μ(Mock Repository)λ₯Ό μ½κ² λ§λ€κΈ° κ°λ₯
- λλ©μΈ λͺ¨λΈ 미리 μμ±, μ²λ¦¬ν΄μΌ ν λΉμ§λμ€ λ¬Έμ μ λ μ μ§μ€ν μ μμ.
- κ²μ²΄λ₯Ό ν
μ΄λΈμ 맀ννλ κ³Όμ μ μνλλλ‘ μ μ΄ν μ μμ΄μ db μ€ν€λ§λ₯Ό λ¨μν ν μ μλ€.
- μ μ₯μ κ³μΈ΅μ ORMμ μ¬μ©νλ©΄ μ΄λ€κ±Έ μ¬μ©νλ λ€λ₯Έ λ°μ΄ν° λ² μ΄μ€λ‘ μ½κ² μ ν κ°λ₯νλ€.
- μ μ₯μ κ³μΈ΅μ λ¨μ .
- μ μ₯μ κ³μΈ΅μ΄ μλλΌλ ORM μ λͺ¨λΈκ³Ό μ μ₯μμ κ²°ν©λλ₯Ό μΆ©λΆν μν μν€κΈ° κ°λ₯.
- ormμ΄ μλ λμλ λλΆλΆ μ½λκ° raw queryλ‘ μμ±λμκΈ° λλ¬Έ.
- orm 맀νμ μλμΌλ‘ νλ €λ©΄ κ°λ° μ½μ€νΈ λ μλͺ¨λ¨.
μ€νλ₯΄ν μΈ‘μμ μ 곡ν κ°μμλ£μ μ΄λ° κΈμ΄ μμλλ°, μ λ¦¬κ° μ λμ΄ κ°μ Έμλ€.
μ΄ν΄νκΈ° μ’λ μ¬μ λ€.
κ³μΈ΅νμ ν΅μ¬μ κ° κ³μΈ΅μ΄ λμ μμ§λ(Cohesion)λ₯Ό κ°μ§λ©΄μ, λ€λ₯Έ κ³μΈ΅κ³Όλ κ²°ν©λ(Coupling)λ₯Ό μ΅μν νλ κ²μ λλ€. μ¬κΈ°μ μμ κ³μΈ΅μ νμ κ³μΈ΅μ μ¬μ©ν μ μμ§λ§, νμ κ³μΈ΅μ μμ μ΄ μ΄λ€ μμ κ³μΈ΅μ μνλμ§ μ νμμμ΄, λ 립μ μΌλ‘ λμν μ μμ΄μΌν©λλ€.
μλ₯Ό λ€μ΄, λ°μ΄ν° μμΈμ€ κ³μΈ΅ (Data Access Layer)μ λΉμ¦λμ€ λ‘μ§ κ³μΈ΅ (Business Logic Layer)μ μ΄λ€ μ½λλ€μ΄ μλμ§ μ μ μ‘°μ°¨ μκ³ , μ¬μ©νλ©΄ μλλ€λ κ±°κ² μ£ ?
μΌλ°μ μΌλ‘ κ³μΈ΅ν μν€ν μ² ν¨ν΄μ κ²½μ° κ·λͺ¨κ° μμ μ΄ν리μΌμ΄μ μ κ²½μ° 3κ°μ κ³μΈ΅, ν¬κ³ 볡μ‘ν κ²½μ°λ κ·Έ μ΄μμ κ³μΈ΅μΌλ‘ ꡬμ±λ©λλ€.
3-Layered Architectureμμλ μλμ νλ‘μ°.
1οΈβ£ ν΄λΌμ΄μΈνΈ(Client) μ΄ν리μΌμ΄μ
μ μμ²(Request)μ 보λ
λλ€.
2οΈβ£ μμ²(Request)μ URLμ μλ§μ 컨νΈλ‘€λ¬(Controller)κ° μμ λ°μ΅λλ€.
3οΈβ£ 컨νΈλ‘€λ¬(Controller)μμ²μ μ²λ¦¬νκΈ° μν΄ μλΉμ€(Service) νΈμΆν©λλ€.
4οΈβ£ μλΉμ€(Service)λ νμν λ°μ΄ν°λ₯Ό κ°μ Έμ€κΈ° μν΄ μ μ₯μ(Repository)μκ² λ°μ΄ν°λ₯Ό μμ²ν©λλ€
5οΈβ£ μλΉμ€(Service)λ μ μ₯μ(Repository)μμ κ°μ Έμ¨ λ°μ΄ν°λ₯Ό κ°κ³΅νμ¬ μ»¨νΈλ‘€λ¬(Controller)μκ² λ°μ΄ν°λ₯Ό μ λ¬ν©λλ€.
6οΈβ£ 컨νΈλ‘€λ¬(Controller)λ μλΉμ€(Service)μ κ²°κ³Όλ¬Ό(Response)μ ν΄λΌμ΄μΈνΈ(Client)μκ² μ λ¬ν΄μ€λλ€.
'TIL' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
23/12/05 TIL __ μ ν΄λ¦¬λ νΈμ λ² (1) | 2023.12.05 |
---|---|
23/12/04 TIL __ ν μ€νΈ μ½λ(Jest) (0) | 2023.12.04 |
23/12/02 TIL __ νΈλμμ 3. 격리 μμ€κ³Ό ν리μ¦λ§μμμ μ¬μ©. (1) | 2023.12.02 |
23/12/01 TIL __ νΈλμμ 2. LOCKS (0) | 2023.12.01 |
23/11/30 TIL __ prisma μμ ν μ΄λΈ μ‘°μΈνκΈ° (0) | 2023.12.01 |