Layered Architecture
Last updated
Last updated
layered architecture - ๊ด์ฌ์ฌ์ ๋ถ๋ฆฌ์ ๋ฐ๋ผ ์์คํ ์ ์ ์ฌํ ์ฑ ์์ ์ง๋ layer๋ก ๋ถ๋ฆฌํ๊ณ , ๊ฐ๊ฐ์ ๋ ์ด์ด๊ฐ ํ์ ๋ ์ด์ด์๋ง ์์กดํ๋๋ก ๊ตฌ์ฑํ๋ ์ํคํ ์ณ ํจํด
presentation ๋ ์ด์ด
HTTP ์์ฒญ ํ๋ผ๋ฏธํฐ, Body๋ฅผ validation, ์ฌ์ฉ์์ ์์ฒญ์ ์์, ์๋ต์ ๋ฐํํจ
(์ถ๊ฐ) ํจ์(์ฐ์ฐ) ๋ ๋ฒจ์์์ด ๋ช ๋ น๊ณผ ์กฐํ์ ์ฑ ์์ ๋ถ๋ฆฌํ๋ CQS(command query seperation)์ ์ ์ฉํด์ ์ฌ์ฉ์์ ์์ฒญ์ ๋ช ์์ ์ผ๋ก ๋ช ๋ น๊ณผ ์กฐํ๋ก ๋ถ๋ฆฌํด์ ๊ฐ๋ฐํ ์ ์์
application ๋ ์ด์ด
ํ๋ฆ ์ ์ด ๋ชฉ์ , AOP๋ฅผ ์ฌ์ฉํ ์ข ์ &ํก์ ๊ด์ฌ์ฌ์ ๋ถ๋ฆฌ, ๋๋ฉ์ธ ๋ชจ๋ธ ๋์ , ๋จ์ผ ์ฑ ์์ ์ง๋๋ ์ฌ๋ฌ๊ฐ์ ์๋น์ค๋ก ๋ถํดํ๊ณ ์ญํ ์ ์์
๋จ์ผ ๊ฐ์ฒด ์๋น์ค๋ฅผ ๋ง๋ค์์ ๋ ๋จ์ โ ํ๋ ์ญํ ์ด ๋๋ฌด ๋ง์์ ๋ณต์ก๋ ์ฆ๊ฐ. ์ฐ๊ด์ฑ์ด ์ ์ ๊ฐ์ฒด๊ฐ ์๋น์ค ๊ฐ์ฒด์ ๋ฐ์งํ๊ฒ ๋๋ฉด ์์กดํ๋ ๊ฐ์ฒด๊ฐ ๋ง์์ง๊ณ , ๊ทธ๋ฌ๋ฉด ๋ณ๊ฒฝ์ ์ทจ์ฝํ ์ฝ๋๊ฐ ๋จ
domain ๋ ์ด์ด
CQS ์์น์ ๋ฐ๋ผ ๋ช ๋ น ์ฑ ์๊ณผ ์กฐํ ์ฑ ์์ ๋ถ๋ฆฌ
DIP์ ๋ฐ๋ผ ๋๋ฉ์ธ ๋ ์ด์ด์์๋ ๊ณ ์์ค์ ๋น์ง๋์ค ๋ก์ง์ ํด๊ฒฐํด์ผ๋๊ณ , ์ ์์ค์ ๊ธฐ์ ๊ตฌํ, ์ธ๋ถ ์ธํ๋ผ์ ์์กดํ์ง ์๋๋ก ๊ตฌ์ฑํด์ผ๋จ
๋๋ฉ์ธ ๋ ์ด์ด๋ ์ถ์์ ์ด์ฌ์ผ๋๊ณ , ๋ค๋ฅธ ์ธ๋ถ ์์กด์ฑ์ ์ฐธ์กฐํ์ง ์์์ผ๋จ
infrastructure ๋ ์ด์ด
Data access ๊ธฐ์ , IoC ์ปจํ ์ด๋, ๊ทธ ์ธ ๊ธฐ์ ์ ์ธ ์์ ์ ์ํํ๋ ๋ชจ๋ ๊ฐ์ฒด๋ฅผ ํฌํจ
Spring IoC ํ๊ฒฝ ๊ตฌ์ฑ
Session, JWT ๋ณด์ ๊ธฐ๋ฅ
Data Access(Hibernate๋ MyBatis, JDBC)
๋ฉ์ธ์ง ํ(Rabbit MQ, Kafka)
๋ฉ์ผ(JavaMail)