[TECH] ν΄λ¦°μν€ν μ²λ₯Ό ν₯ν΄μ π¨
[ν°λ] ν°λ ν΄λ¦°μν€ν μ²λ₯Ό ν₯ν΄μ π¨
μλ
νμΈμ ν°νμ μλλ‘μ΄λ κ°λ°μ μ μ±νμ
λλ€πππππ
μ λ²μ λ§μλλ¦° λμμΈ ν¨ν΄μ μ΄μ΄μ Clean Architectureμ λν μ€λͺ μ μ΄μ΄κ°λ € ν©λλ€!
μ μ΄λ κ² λ€λ€ ν΄λ¦° μν€ν μ²λ₯Ό λμ νλ € νλ κ±ΈκΉμ??
μ΄ μ΄μ μ λν΄ μκ°νκΈ°μν΄μλ λ¨Όμ μκ°ν΄λ³΄μμΌ ν λ¬Έμ κ° μμ΅λλ€.
π©π» κΈ°λ₯ VS ꡬ쑰 ?
μ±μ λ³Ό λ κΈ°λ₯μ΄ μ€μνλ€κ³ μκ°νμλμ? μλλ©΄ κ΅¬μ‘°κ° μ€μνλ€κ³ μκ°νμλμ?
κΈ°λ₯μ μ±μ κ°μΉλ₯Ό λ§λ€μ΄ λΈλ€λ μ μμ κΈ°λ₯μ΄ λ μ€μνλ€κ³ μκ°νλ μ¬λμ΄ μκ³
κΈ°λ₯κ³Ό μΆκ°μ μμ μ μ©μ΄νκ² νλ κ΅¬μ‘°κ° λ μ€μνλ€κ³ μκ°νλ μ¬λμ΄ μμ κ²μ λλ€.
μ¬μ€ μ λ μλ κΈ°λ₯νμμ΅λλ€...
μΌλ¨ κΈ°λ₯μ΄ μμ΄μΌ μ±μ κ°μΉκ° μκΈ°κΈ° λλ¬Έμ κΈ°λ₯μ΄ μλ§μΈλ° κ΅¬μ‘°κ° μλ²½ν΄λ κ·Έκ² λ¬΄μ¨ μμ©μ΄μΌ π€·π»βλΌκ³ μκ°νλ μ¬λμ΄μμ΅λλ€.
κ·Έλ¬λκΉ ν°λμ 리ν©ν λ§ νκΈ° μ κΉμ§ λ§μ΄μ£ ...
.
.
μ λ ν°λμ 리ν©ν°λ§ νλ©° 'μννΈμ¨μ΄ λΉμ©'μ λν μκ°μ λ κΉκ² νκ² λμμ΅λλ€.
μννΈμ¨μ΄ λΉμ©μμ κ°λ° λ¨κ³λ³΄λ¨ μ μ§λ³΄μμμ λΉμ©μ΄ λ λ§μ΄ λ€μ΄κ°λ€λ μ¬μ€μ λ€μ΄λ³΄μ ¨μ κ²μ΄λΌ μκ°ν©λλ€.
μ λ μ€μ ν°λμ 릴리μ¦νλ©° μμν μ€μλ₯Ό λ°©μ§ν μ μλ μ λ ν μ€νΈμ κ΄μ¬μ κ°μ§κ² λμμ΅λλ€.
μ λν μ€νΈμμ΄ νλνλ λ€μ κΈ°λ₯μ κ°λ°νλ€ λ³΄λ μꡬμ¬νμ λμΉλ κ²°κ³Όλ₯Ό λ§λ€μ΄λκΈ° λλ¬Έμ λλ€.
μ λ μ΄λ° Testable νκ³ μ μ§λ³΄μμ λ ν° λΉμ©μ λ€μ΄λ μ μ 보μνκΈ° μν΄ μ’μ ꡬ쑰λ₯Ό λ§λλ λ°©λ²μ λν κ³ μ°°μ νκΈ° μμνμ΅λλ€.
π©π» μ’μ ꡬ쑰 ?
μ’μ ꡬ쑰? μ’μ κ΅¬μ‘°κ° λμΌ..?
μΌλ°μ μΌλ‘ μ’μ ꡬ쑰λ₯Ό λ§λ€κΈ° μν΄μλ λ€μν ν¨λ¬λ€μ, μ€κ³μμΉ(SOLID), μμ§μμΉ λ±λ± λ€μν λ°©λ²μ΄ μμ κ²μ λλ€.
ν΄λ¦° μν€ν μ²λ μ΄λ€ μν©μμ λμ¨ κ²μΌκΉμ?
κΈ°μ‘΄ νλ‘μ νΈμμ DBλ₯Ό λ°κΎΈκΈ° μν΄μ μ 체 νλ‘μ νΈκ° μν₯λ°λ λ¬Έμ λ₯Ό λ°κ²¬νκ³ 'μμ‘΄μ± μμ 'μ΄λΌλ λλ©μΈ μ€μ¬μ ν΄λ¦° μν€ν μ²κ° λλλκΈ° μμνμ΅λλ€.
* Clean Architectureμ νΉμ§ : ν΅μ¬ κ·μΉμ λ΄κ³ μλ λλ©μΈμ΄ μ€μ¬μ΄λ©°, λλ©μΈμ΄ μΈλΆ μ¬νμ μμ‘΄νμ§ μλλ€.
κ·ΈλΌ ν΄λ¦° μν€ν μ²μ λν λ΄μ©μ λ μμλ³ΌκΉμ?
π©π» Clean Architecture μ€λͺ
ν΄λ¦° μν€ν μ²νλ©΄ ννλ€ λ³Ό μ μλ κ·Έλ¦Όμ΄μ£ ?
"Clean Architecture"λ μννΈμ¨μ΄ μ€κ³μ ν λ°©μμΌλ‘, μμ€ν μ μ μ§λ³΄μνκΈ° μ½κ³ , νμ₯μ±μ΄ λ°μ΄λλ©°, λ 립μ μΈ ν μ€νΈκ° κ°λ₯νλλ‘ μ€κ³νλ λ° μ΄μ μ λ§μΆ₯λλ€. μ΄ μν€ν μ²λ ν¬κ² λ€ κ°μ§ μ£Όμ κ³μΈ΅μΌλ‘ ꡬμ±λμ΄ μμ΅λλ€:
1. μν°ν° (Entities)
μ΄ κ³μΈ΅μ μ ν리μΌμ΄μ μ ν΅μ¬μ μ΄λ£¨λ λλ©μΈ κ°μ²΄λ€λ‘ ꡬμ±λ©λλ€. μν°ν°λ€μ λΉμ¦λμ€ λ‘μ§μ΄λ κ·μΉμ λ΄λΉνλ©°, μΈλΆ μμμλ λ 립μ μΌλ‘ μ΄μλ©λλ€. μ΄λ€μ μ ν리μΌμ΄μ μ κ°μ₯ μ€μ¬μ μΈ λΆλΆμΌλ‘, κ°μ₯ λμ μμ€μ μ μ± μ ꡬνν©λλ€.
2. μ μ¦ μΌμ΄μ€(Use cases)
μ΄ κ³μΈ΅μ νΉμ λΉμ¦λμ€ λ‘μ§μ λ΄λΉν©λλ€. μ¬κΈ°μλ λ°μ΄ν°μ μ μ₯μ΄λ μ¬μ©μ μΈν°νμ΄μ€(UI)μ κ°μ μΈλΆ μμλ€μ λν κ΄μ¬μ ν¬ν¨λμ§ μμ΅λλ€. λμ , μ΄ κ³μΈ΅μ μ£Όλ‘ μν°ν°λ₯Ό μ¬μ©νμ¬ νΉμ λΉμ¦λμ€ λ‘μ§μ μννκ³ , κ²°κ³Όλ₯Ό λ°νν©λλ€.
3. μΈν°νμ΄μ€ μ΄λν° (Interface Adapter)
μ΄ κ³μΈ΅μ μ ν리μΌμ΄μ λ΄λΆμ λ°μ΄ν°μ μΈλΆ μΈκ³(μ: λ°μ΄ν°λ² μ΄μ€, μΉ, UI) κ°μ ν΅μ μ λ΄λΉν©λλ€. λ°μ΄ν°λ₯Ό μ ν리μΌμ΄μ μ μ ν©ν ννλ‘ λ³ννκ±°λ, λ°λλ‘ μΈλΆμ μ ν©ν ννλ‘ λ³ννλ μν μ ν©λλ€. μ΄ κ³μΈ΅μ μΈλΆ μΈκ³μ λ΄λΆ λ‘μ§ κ°μ κ΅λ μν μ ν©λλ€.
4. μΈλΆμμ: νλ μμν¬μ λλΌμ΄λ² (Frameworks & Drivers)
μ΄ κ³μΈ΅μ νΉμ νλ μμν¬λ κΈ°μ μ μμ‘΄νλ λΆλΆμ μλ―Έν©λλ€. μ΄λ€μ μ ν리μΌμ΄μ μ κ°μ₯ λ°κΉ₯μͺ½ λΆλΆμ ꡬμ±νλ©°, λ°μ΄ν°λ² μ΄μ€, μΉ νλ μμν¬, κΈ°ν μΈλΆ μΈν°νμ΄μ€μμ ν΅μ μ λ΄λΉν©λλ€.
ν΄λ¦° μν€ν μ²μ μ΄λ¬ν layerλ κΈ°μ€μ΄ μ λ§€ν΄ λΉμ·ν νΉμ§μ κ°μ§ ν₯μ¬κ³ λ μν€ν μ²λ₯Ό ν΅νμ¬ λ λ§μ λ΄μ©μ μ΄ν΄λ³Ό μ μμ΅λλ€.
π©π» Hexagonal Architecture μ€λͺ
ν₯μ¬κ³ λ μν€ν μ²λ μννΈμ¨μ΄ μ€κ³μμ μ¬μ©λλ ν¨ν΄μΌλ‘, ν΄λ¦° μν€ν μ²μ μ μ¬ν μμΉμ λ°λ₯΄μ§λ§ λͺ κ°μ§ μ£Όμ μ°¨μ΄μ μ΄ μμ΅λλ€. ν₯μ¬κ³ λ μν€ν μ²λ "Ports and Adapters" ν¨ν΄μΌλ‘λ μλ €μ Έ μμΌλ©°, μ΄λ μ ν리μΌμ΄μ μ ν΅μ¬ λ‘μ§μ μΈλΆ μμλ‘λΆν° 격리μν€λ λ° μ΄μ μ λ§μΆ₯λλ€. μ£Όμ κ΅¬μ± μμλ λ€μκ³Ό κ°μ΅λλ€.
- ν΅μ¬ λ‘μ§ (Core Logic): μ ν리μΌμ΄μ μ λΉμ¦λμ€ λ‘μ§μ ν¬ν¨ν©λλ€. μ΄ λ‘μ§μ μ ν리μΌμ΄μ μ κ°μ₯ μ€μ¬μ μΈ λΆλΆμΌλ‘, λ³κ²½μ΄ νμνμ§ μμ μμ μ μΈ μ½λλ‘ κ΅¬μ±λ©λλ€.
- ν¬νΈ (Ports): ν΅μ¬ λ‘μ§κ³Ό μΈλΆ μμ(μ: μ¬μ©μ μΈν°νμ΄μ€, λ°μ΄ν°λ² μ΄μ€) κ°μ μΈν°νμ΄μ€λ₯Ό μ 곡ν©λλ€. μ΄ ν¬νΈλ ν΅μ¬ λ‘μ§μ μΈλΆ μΈκ³λ‘λΆν° 격리μν€κ³ , μΈλΆ μμκ° ν΅μ¬ λ‘μ§κ³Ό ν΅μ ν μ μκ² ν©λλ€.
- μ΄λν° (Adapters): μ€μ μΈλΆ μμ(μ: μΉ μλ², λ°μ΄ν°λ² μ΄μ€)μ ν΅μ¬ λ‘μ§ μ¬μ΄μ μ°κ²° μν μ ν©λλ€. μ΄λν°λ ν¬νΈλ₯Ό ν΅ν΄ ν΅μ¬ λ‘μ§κ³Ό ν΅μ νλ©°, μΈλΆ μμμμ λ°μ΄ν° λ³νμ λ΄λΉν©λλ€.
π©π» ν°λμ λͺ©ν
κ·Έλμ ν°λ νλ‘μ νΈλ λ€μκ³Ό κ°μ μν€ν μ²λ₯Ό λ°λ₯΄λ €κ³ ν©λλ€.
λ¬Όλ‘ ν΄λ¦° μν€ν μ²λ₯Ό 무쑰건 λ°λ₯΄λΌλ λ§μμ λ리λ κ² μλλ©° μ½λμ μμ΄ λ§μμ§κ³ ν¨ν€μ§λ λ§μμ§κ³ 볡μ‘λκ° λμμ§λ λ± λ€μν λ¨μ λ€λ μ‘΄μ¬ν©λλ€. κ·Έλ¬λ―λ‘ λ€λ€ λ³ΈμΈμ νλ‘μ νΈμ λ§λ μν€ν μ²λ₯Ό μ νν΄μ κ°λ°νμκΈΈ λ°λλλ€ :)
μλμ λ§ν¬λ μ κ° ν΄λ¦° μν€ν μ²λ₯Ό 곡λΆνλ©° κ°μ₯ λ§μ λμμ΄ λμλ μ°μν ν ν¬μ 10λΆ λ°ν¬ν‘μ λλ€.
[10λΆ ν μ½ν‘] λλ, λ€μ¦μ ν΄λ¦° μν€ν μ²
https://www.youtube.com/watch?v=Ql7CoQminoM&t=948s
ν΄λ¦° μν€ν μ²λ₯Ό ν₯ν΄ μ΄μ¬ν 리ν©ν λ§ νκ³ μλ ν°λμ κΈ°λν΄ μ£ΌμΈμ!!
λ€μ κΈλ κΈ°λ λΆνλλ¦¬κ² μ΅λλ€:)π€
κ°μ¬ν©λλ€!!
β¬οΈ μ§κΈ κ΅¬κΈ νλ μ΄ μ€ν μ΄μμ ν°λ λ€μ΄ λ°κΈ°
https://play.google.com/store/apps/details?id=com.team7.tikkle&hl=ko-KR

π© Contact : wjdcogus6@gmail.com
π² SNS : https://www.instagram.com/chaeehyuny/