μ€λͺ
β£ ν¬νΈ μ€ μ΄λν° μν€ν
μ²μ μ΄μ©
β£ μΈλΆμμ & λ΄λΆμμ μ λλ κ³ μμ€μ λ΄λΆ μμμ΄ μΈλΆ μμμ μμ‘΄νμ§ μλλ‘ νλκ²μ΄λ€!
β£ μ μ§λ³΄μ, μ μ°μ±, νμ₯μ±μ μ’μ.
⣠볡μ‘ν μλ‘ λΉμ λ°νμ§λ§, λ¨μνλ€λ©΄ κ²½μ° μ΄λ κ²κΉμ§ ꡬμ±ν νμλ μμ!
πΈ μΈλΆμμ
• λΉμ§λμ€ μ²λ¦¬ κ²°κ³Ό λ¦¬ν΄ (REST API λ°ν)
• μΈλ°μ΄λ μ΄λν°, μμλ°μ΄λ μ΄λν°λ‘ ꡬμ±
πΈ λ΄λΆμμ
• μμ λΉμ§λμ€ λ‘μ§ κ΅¬μ±
• μΈλΆμμκ³Ό μ°κ³λλ ν¬νΈλ₯Ό κ°μ§κ³ μμ
• μΈλ°μ΄λ ν¬νΈ, μμλ°μ΄λ ν¬νΈλ‘ ꡬμ±
• POJO μ‘΄μ¬
β£ μμλ°μ΄λ μ΄λν°κ° μμλ°μ΄λ ν¬νΈμ μμ‘΄ν΄μ ꡬνλ¨
β£ μ΄ν리μΌμ΄μ
μ΄λ μ΄λν°κ° λ³κ²½ λμ΄λ λλ©μΈμ μν₯μ λ°μ§μμ
β£ ν΄λ¦° μν€ν
μ²μλ μ μ¬
β£ SOLIDμ λ¨μΌμ±
μμμΉ(Single Reason to Change Principle, SRP), μμ‘΄μ±μμ μμΉ(Dependency Inversion Principle, DIP) μ μ΄μ©
β» ν¬νΈ μ€ μ΄λν° μν€ν μ²
μΈν°νμ΄μ€λ κΈ°λ° μμμ λ³κ²½μ μν₯μ λ°μ§ μλ ν΅μ¬ μ½λλ₯Ό λ§λ€κ³ μ΄λ₯Ό κ²¬κ³ νκ² κ΄λ¦¬νλκ²μ΄ λͺ©ν
μΈλΆμμκ³Ό λ΄λΆμμμ λΆλ¦¬ν¨
μμμ μ¬μ΄ input, ouput μ λ¬μ ν¬νΈ(=μΈν°νμ΄μ€) μ ν΅ν΄μλ§ ν¨.
β» λ¨μΌμ± μμμΉ(Single Reason to Change Principle, SRP)
νλμ μ»΄ν¬λνΈλ μ€λ‘μ§ ν κ°μ§ μΌλ§ ν΄μΌνκ³ , κ·Έκ²μ μ¬λ°λ₯΄κ² μνν΄μΌν¨!
= μ»΄ν¬λνΈ λ³κ²½ μ΄μ λ μ€μ§ νλλΏμ΄μ¬μΌν¨!!!
β» μμ‘΄μ±μμ μμΉ(Dependency Inversion Principle, DIP)
μ½λμμ μ΄λ€ μμ‘΄μ±μ΄λ κ·Έ λ°©ν₯μ λ°κΏ μ μλ€.
ꡬ쑰
π± μΈλ°μ΄λ ν¬νΈ
βͺοΈ μΈλ°μ΄λ μ΄λν°κ° νΈμΆ(μ¬μ©ν¨)
π± μμλ°μ΄λ ν¬νΈ
βͺοΈ μμλ°μ΄λ μ΄λν°κ° μμλ°μ΄λ ν¬νΈμ μμ‘΄νμ¬ κ΅¬ν
(=μμλ°μ΄λ ν¬νΈκ° μμλ°μ΄λ μ΄λν° κ΅¬ν체 νΈμΆ)
π± μΈλ°μ΄λ μ΄λν°
βͺοΈ μΈλΆμμ² μ²λ¦¬ (API μμ²/μλ΅ κ²°κ³Ό)
βͺοΈ μμλ°μ΄λ ν¬νΈ μΈν°νμ΄μ€λ₯Ό κ°μ Έλ€κ° μ¬μ©νμ¬ μ΄λν°λ₯Ό μμ±.
βͺοΈ μ€νλ§ MVC 컨νΈλ‘€λ¬, 컀맨λ νΈλ€λ¬, μ΄λ²€νΈ λ©μΈμ§ ꡬλ
νΈλ€λ¬ λ±.
π± μμλ°μ΄λ μ΄λν°
βͺοΈ λ΄λΆ λΉμ§λμ€ μμκ³Ό μΈλΆ μλΉμ€κ° λ°μ΄ν° κ΅ν
βͺοΈ λ°μ΄ν° μμΈμ€ μ²λ¦¬ (DAO), μ΄λ²€νΈ λ©μΈμ§ λ°μ, μΈλΆ μλΉμ€ νΈμΆ λ±
μ΄λ₯Ό μ¬μ©νκ³λ κ³κΈ° (κ³μΈ΅ν μν€ν μ²μ λ¨μ )
β£ κ³μΈ΅ν μν€ν
μ²λ λ°μ΄ν°λ² μ΄μ€ μ£Όλ μ€κ³λ₯Ό μ λν¨. (λλ©μΈμ μμ‘΄μ΄ μλ λ°μ΄ν°λ² μ΄μ€μ μμ‘΄) - λΉμ§λμ€ κ΄μ μΌλ‘λ λ³λ‘μ
β£ ORM νλ μμν¬μ κ²½μ° κ³μΈ΅ν μν€ν
μ²μ κ²°ν©νλ©΄ λΉμ¦λμ€ κ·μΉμ μμμ± κ΄μ κ³Ό μκ³ μΆμ μ νΉμ μ½κ² λ°μ.
β£ μμμ± μ½λκ° λλ©μΈμ½λμ λ
Ήμλ€λ©΄ λ§μλλ‘ λ°κΎΈκΈ°κ° μ½μ§ μκ² λ¨.
β£ μΉ κ³μΈ΅ ν
μ€νΈμ λλ©μΈ λ° μμμ± λ²μκΉμ§ λͺ¨νΉν΄μΌν¨. μκ°μμκ° λ§μμ§.
β£ κ·ΈμΈμλ ν
μ€νΈκ° μ΄λ ΅κ³ λμμμ
μ΄ μ΄λ €μ.
β£ μ μ§λ³΄μ μ¬μ΄! μννΈμ¨μ΄λ₯Ό λ§λ€νμμ±μ΄ μλ€.
μ°Έκ³
- λ§ν¬: https://engineering.linecorp.com/ko/blog/port-and-adapter-architecture/
- λ§ν¬: https://velog.io/@youngmin-mo/hexagonalarchitecture
- μΈνλ°κ°μ: https://www.inflearn.com/course/%EC%8B%A4%EB%AC%B4-msa-%EC%9D%B4%EC%95%BC%EA%B8%B0/dashboard
- μ± : λ§λ€λ©΄μ λ°°μ°λ ν΄λ¦° μν€ν μ²
'κ°λ° > etc' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
SSE (Server Sent Event) (1) | 2023.08.20 |
---|---|
Vault (1) | 2023.02.07 |
JWT (JSON WEB TOKEN) (0) | 2021.12.22 |
Rest API (0) | 2021.06.02 |
HTTPκ΄λ ¨ (https, spdy, ajax, websocket) (0) | 2018.12.09 |