λ°˜μ‘ν˜•
μ„€λͺ…

β€£ 포트 μ•€ μ–΄λŒ‘ν„° μ•„ν‚€ν…μ²˜μ„ 이용
β€£ μ™ΈλΆ€μ˜μ—­ & λ‚΄λΆ€μ˜μ—­ 을 λ‚˜λˆ  κ³ μˆ˜μ€€μ˜ λ‚΄λΆ€ μ˜μ—­μ΄ μ™ΈλΆ€ μ˜μ—­μ— μ˜μ‘΄ν•˜μ§€ μ•Šλ„λ‘ ν•˜λŠ”κ²ƒμ΄λ‹€!
β€£ μœ μ§€λ³΄μˆ˜, μœ μ—°μ„±, ν™•μž₯성에 μ’‹μŒ.
β€£ λ³΅μž‘ν• μˆ˜λ‘ 빛을 λ°œν•˜μ§€λ§Œ, λ‹¨μˆœν•˜λ‹€λ©΄ 경우 μ΄λ ‡κ²ŒκΉŒμ§€ ꡬ성할 ν•„μš”λŠ” μ—†μŒ!

πŸ”Έ μ™ΈλΆ€μ˜μ—­
• λΉ„μ§€λ‹ˆμŠ€ 처리 κ²°κ³Ό 리턴 (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) 
μ½”λ“œμƒμ˜ μ–΄λ–€ μ˜μ‘΄μ„±μ΄λ“  κ·Έ λ°©ν–₯을 λ°”κΏ€ 수 μžˆλ‹€.

 

ꡬ쑰

https://engineering-skcc.github.io/microservice%20inner%20achitecture/inner-architecture-2/

 

https://github.com/wikibook/clean-architecture


🌱 
μΈλ°”μš΄λ“œ 포트
β–ͺ︎ μΈλ°”μš΄λ“œ μ–΄λŒ‘ν„°κ°€ 호좜(μ‚¬μš©ν•¨)

🌱 μ•„μ›ƒλ°”μš΄λ“œ 포트
β–ͺ︎ μ•„μ›ƒλ°”μš΄λ“œ μ–΄λŒ‘ν„°κ°€ μ•„μ›ƒλ°”μš΄λ“œ ν¬νŠΈμ— μ˜μ‘΄ν•˜μ—¬ κ΅¬ν˜„
(=μ•„μ›ƒλ°”μš΄λ“œ ν¬νŠΈκ°€ μ•„μ›ƒλ°”μš΄λ“œ μ–΄λŒ‘ν„° κ΅¬ν˜„μ²΄ 호좜)

🌱 μΈλ°”μš΄λ“œ μ–΄λŒ‘ν„°
β–ͺ︎ μ™ΈλΆ€μš”μ²­ 처리 (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

+ Recent posts