- ๋ฌธ์ ์ธ์: ๋ํ์ ๋๋ ์ทจ์ ์ค๋น์๋ค์ด ๊ฐ์ ๋ณธ์ธ์ ์ง๋ฌด ๋ถ์ผ ์ ๋ฌธ ์ด๋ ฅ์ ๋ง๋ค์ด๊ฐ๋ ๊ฒ์ ์ด๋ ค์์ด ๋ง์.
- ๋ฌธ์ ์์ธ: ์ทจ์ ์ ์ค๋นํ๋ ๋ํ์๋ค์ ํ์ ์์ ํ๋ก์ ํธ๊ฐ ์ด๋ป๊ฒ ์งํ๋๋์ง ์๊ธฐ ์ด๋ ต๊ธฐ ๋๋ฌธ์ด๋ผ ํ๋จ.
- ํด๊ฒฐ ๋ฐฉ์ ์ ์: ํ๋ก์ ํธ ์ด์๊ณผ์ ์ Template์ผ๋ก ์ ๊ณตํ๊ณ , ํ๋ก์ ํธ ์๋ฃ ์, ๋ฌธ์๋ก ์ ์ฅํ์ฌ ์ด๋ ฅ์ ํ์ฉํ ์ ์๋๋ก ํ๋ ์๋น์ค๋ฅผ ์ ๊ณต
์ทจ์ค์ ๋ฐ ๋ํ์ ๊ฐ๋ฐ์๋ค์ ์ํ ํ๋ก์ ํธ ๊ด๋ฆฌ ๋ฐ ๋ฌธ์(WBS, ์๊ตฌ์ฌํญ ๋ช ์ธ์, ํ ์ด๋ธ ์ ์์ ๋ฑ) ์์ฑ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ํ๋ซํผ
- ์ด๊ธฐ ํ๋ก์ ํธ ์งํ ์ ํ์ํ ๋ฌธ์ ์์ฑ์ ์ํ ํ ํ๋ฆฟ ์ ๊ณตํ์ฌ ํ๋ก์ ํธ ์์์ ์ฉ์ดํ๊ฒ ํจ
- ํ๋ก์ ํธ ๊ด๋ฆฌ ๊ธฐ๋ฅ๊ณผ ํ ํ์ ๊ธฐ๋ฅ์ ๊ฒฐํฉํ์ฌ ํจ์จ์ ์ธ ํ๋ก์ ํธ ์งํ์ ์ง์ํจ
- ํ์ฅ ๋๋ ํ๋ก์ ํธ ๊ฐ์ค์๊ฐ ํ๋ก์ ํธ ์์ฑ
- ํ๋ก์ ํธ ๋ด ์ฐธ์ฌ ํ์ ์ด๋
- ํ๋ก์ ํธ๋ก ์ฐธ์ฌํ๋ ํ์์ ์ต์ด์ ๊ด๋ฆฌ์ ๊ถํ์ด ์์(๊ด๋ฆฌ์๊ฐ ๊ถํ ์ค์ ๊ฐ๋ฅ)
- ํ๋ก์ ํธ ํ์ Template ์ฌ์ฉ์ ํตํด ํ๋ก์ ํธ ์งํ
- ํ์ฅ ์์ ๊ธฐ๋ฅ: RESUME, ์ปค๋ฎค๋ํฐ, ๋ฉํ ๋ฉํฐ
- ๋ฌธ์ ์์ฑ ํ ํ๋ฆฟ ์ ๊ณต: WBS, ์๊ตฌ์ฌํญ ๋ช ์ธ์, ํ ์ด๋ธ ์ ์์ ๋ฑ ๋ค์ํ ๋ฌธ์ ํ ํ๋ฆฟ ์ ๊ณต
- ํ์ ๊ธฐ๋ฅ ๋ฐ ํ๋ก์ ํธ ๊ด๋ฆฌ: ํ์ ์ด๋, ํ์ผ ๊ณต์ ๋ฑ์ ํตํ ํ ํ์ ์ง์
- ์ทจ์ค์ ๋ฐ ๋ํ์ ๊ฐ๋ฐ์๋ค์ด ํ๋ก์ ํธ๋ฅผ ์์ํ ๋ ์ด๋ค ๋ฌธ์๋ฅผ ์์ฑํด์ผ ํ ์ง์ ๋ํ ๋ถ์์ ํด์ํ์ฌ ํ๋ก์ ํธ ์์์ ์ฝ๊ฒ ํ ์ ์์
- ํ ํ์ ๊ณผ ํ๋ก์ ํธ ๊ด๋ฆฌ๊ฐ ํ๋ฐ ๋ฌถ์ธ ์๋น์ค๋ก, ๊ฐ๋ฐ ๋ฅ๋ ฅ๋ฟ๋ง ์๋๋ผ ํ๋ก์ ํธ ๊ด๋ฆฌ ๋ฐ ํ์ ๋ฅ๋ ฅ๋ ํจ๊ป ๊ฐํํ ์ ์์
- ๊ฐ๋ฐ์๋ก์์ ๊ฒฝ๋ ฅ ๊ตฌ์ถ ๋ฐ ์ทจ์ ์ค๋น๋ฅผ ์ํ ํฌํธํด๋ฆฌ์ค ๊ฐํ์ ๋์์ ์ค ๊ฒ์ผ๋ก ๊ธฐ๋๋จ
- ํ๋ก์ ํธ ๊ด๋ฆฌ
- ํ์์ ํ๋ก์ ํธ๋ฅผ ์ถ๊ฐ, ์์ , ์ญ์ ํ ์ ์์
- ํ๋ก์ ํธ ์กฐํ
- ํ์์ ๊ณต๊ฐ๋ ํ๋ก์ ํธ๋ฅผ ์กฐํ ํ ์ ์์
- ์ฐธ์ฌํ ํ๋ก์ ํธ ์กฐํ
- ํ์์ ์์ ์ด ์ฐธ์ฌํ ํ๋ก์ ํธ ์ ๋ณด๋ฅผ ์กฐํ ํ ์ ์์
- ํ๋ก์ ํธ ์ฐธ์ฌ ๋ฉค๋ฒ ์ ๋ณด ์กฐํ
- ํ์์ ํ๋ก์ ํธ ์ฐธ์ฌ ๋ฉค๋ฒ ์ ๋ณด๋ฅผ ์กฐํ ํ ์ ์์
-
ํ ์คํธ์ผ์ด์ค ๊ด๋ฆฌ ํ์์ ํ ์คํธ์ผ์ด์ค๋ฅผ ์ถ๊ฐ, ์์ , ์์ ๋ณ๊ฒฝ, ์ญ์ ํ ์ ์์
-
ํ ์คํธ์ผ์ด์ค ์กฐํ ํ์์ ํ ์คํธ์ผ์ด์ค๋ฅผ ์กฐํํ ์ ์์
-
ํ ์คํธ์ผ์ด์ค ๊ฒฐ๊ณผ ์กฐํ ํ์์ ํ ์คํธ์ผ์ด์ค ๊ฒฐ๊ณผ๋ณ๋ก ์กฐํํ ์ ์์
-
์๊ตฌ์ฌํญ ๋ช ์ธ์ ๊ด๋ฆฌ ํ์์ ์๊ตฌ์ฌํญ ๋ช ์ธ์๋ฅผ ์ถ๊ฐ, ์์ , ์์ ๋ณ๊ฒฝ, ์ญ์ ํ ์ ์์
-
์๊ตฌ์ฌํญ ๋ช ์ธ์ ์กฐํ ํ์์ ์๊ตฌ์ฌํญ ๋ช ์ธ์๋ฅผ ์กฐํํ ์ ์์
- ์ด์ ๋ด๋น์ ์กฐํ ํ์์ ํด๋น ์ด์์ ํจ๊ป ๋ด๋น์์ ์ ๋ณด๋ฅผ ์กฐํํ ์ ์์
gateway ๋ฐ eureka ์๋ฒ ์ฌ์ฉ
Mybatis, Spring data jpa ์ฌ์ฉ
MSA - feign client
์๊ตฌ์ฌํญ ์กฐํ - ํ๋ก์ ํธ ID/separate๊ณผ ํ๋ก์ ํธ ID/์๊ตฌ์ฌํญ ๋ฒํธ์ ํ๋ก์ ํธ ID
ํ ์คํธ์ผ์ด์ค ์กฐํ - ํ๋ก์ ํธ ID/separate๊ณผ ํ๋ก์ ํธ ID/๊ฒฐ๊ณผ์ ํ๋ก์ ํธ ID/ํ ์คํธ์ผ์ด์ค ๋ฒํธ์ ํ๋ก์ ํธ ID
feign client -> put delete mapping์๋ ์ ์ฉ
๐๊ณฝ์ค๊ฒฝ
์ด๋ฒ ํ๋ก์ ํธ์์๋ MyBatis, JPA, REST API ๋ฑ ๋ค์ํ ๋ฐฑ์๋ ๊ธฐ์ ์ ์ ์ฉํ๊ณ ์ตํ๋ ๋ฐ์ ์ฃผ๋ ฅํ์ต๋๋ค. ํนํ, ํ๋ก ํธ์๋ ์์ด๋ ๋ชจ๋ ๊ณ์ฐ์ด ๋ฐฑ์๋์์ ์ด๋ฃจ์ด์ง๋๋ก ํ๋ ๊ฒ์ด ์ฃผ์ ๋ชฉํ์๊ธฐ ๋๋ฌธ์, ์ด๋ฅผ ์คํํ๊ธฐ ์ํด CRUD ๊ธฐ๋ฅ๋ค์ ๊ตฌํํ๋ ๋ฐ์ ์ง์คํ์ต๋๋ค. ์ด๋ ์กฐํ๋ MyBatis๋ก, ์ถ๊ฐ, ์์ , ์ญ์ ๋ JPA๋ก ๊ตฌํํ๋ ๋ฐฉ์์ ์ ํํ์ต๋๋ค. ๋ํ, ์ด๋ฒ ํ๋ก์ ํธ์์๋ ์ฒ์๋ถํฐ ๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ(DDD)์ ๋ฐฉ๋ฒ ์ค ์ด๋ฒคํธ์คํ ๋ฐ๊ณผ ์ปจํ
์คํธ ๋งคํ์ ํ์ฉํ์ฌ ๋๋ฉ์ธ์ ์๋ ๋ฐฉ์์ ์๊ฐํํ๊ณ , ๊ฐ ๋๋ฉ์ธ ๊ฐ์ ๊ฒฝ๊ณ๋ฅผ ๋ช
ํํ๊ฒ ์ ์ํ์ต๋๋ค. ์ด๋ฅผ ํตํด ์๋ก ๋ค๋ฅธ ๋๋ฉ์ธ ๊ฐ์ ์ํธ์์ฉ์ ํจ์จ์ ์ผ๋ก ์ด๋ฃจ์ด์ง๋๋ก ์ค๊ณํ์ต๋๋ค.
๊ฐ์ ์๋น์ค๋ฅผ ๊ตฌํํ๋ ๊ฒ์ด๋ผ๋ ๊ฐ ํ์์ด ๊ฐ์ง๊ณ ์๋ ํฐ ๊ทธ๋ฆผ์ด๋ ์ค๊ณ๋ ๋ค๋ฅผ ์ ์์์ ๊นจ๋ฌ์์ต๋๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ ๊ฐ ์ปจํ
์คํธ์ ๊ฒฝ๊ณ๋ฅผ ๋ช
ํํ ์ ์ํ๊ณ ์ดํดํ๋ ๊ฒ์ด ์ค์ํ๋ค๋ ๊ฒ์ ์๊ฒ ๋์๊ณ , ์ด๋ฅผ ์ํด์๋ ํ ๊ฐ์ ์์ฌ์ํต์ด ๋งค์ฐ ์ค์ํ๋ค๋ ๊ฒ์ ์ธ์ํ์ต๋๋ค. ํ๋ก์ ํธ์ ๋ชจ๋๊ฐ ๋์ผํ ๋น์ ์ ๊ณต์ ํ๊ณ ๊ทธ์ ๋ง์ถฐ ์งํํ๊ธฐ ์ํด์๋ ์์ฌ์ํต์ด ํ์คํ ์ด๋ฃจ์ด์ ธ์ผ ํฉ๋๋ค. ์ธ์์ด ๋ง์์ง์๋ก ์ด๋ฅผ ๋์ฑ ํ์คํ ํด์ผ ํ๋ค๋ ์๊ฐ์ด ๋ค์์ต๋๋ค.
์ด๋ฒ ํ๋ก์ ํธ์์๋ ๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ(DDD)๋ฅผ ์์์ผ๋ก ํ์๋ค๊ณผ์ ์ํต์ด ๋งค์ฐ ์ค์ํ๋ค๋ ๊ฒ์ ๊นจ๋ซ๊ฒ ๋์์ต๋๋ค. ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๊ณผ์ ์์๋ ๊พธ์คํ ์๊ฒฌ ๊ณต์ ์ ์๋ฌธ ํด๊ฒฐ์ ์ํ ์๊ฐ์ ํ์๋ค๊ณผ ์์ฃผ ๊ฐ์ก์ต๋๋ค. ๋ํ, ๊ฐ์๊ฐ ๋งก์ ๊ธฐ๋ฅ์ ๊ตฌํํ ๋๋ ์ปจ๋ฒค์
์ ๋ช
ํํ ์ ์ํ์ง ์์ผ๋ฉด ํ๋ก์ ํธ๊ฐ ํผ๋์ค๋ฌ์์ง ์ ์๋ค๋ ์ ์ ์ธ์ํ์ต๋๋ค. ์ด๋ฅผ ํตํด ํ์ ๊ฐ์ ์ฝ๋๋ฅผ ์ดํดํ๊ธฐ ์ํด์๋ ๋ช
ํํ ๋ฉ์๋ ๋ช
๊ณผ ์ฃผ์, ๊ทธ๋ฆฌ๊ณ ์ผ๊ด๋ ์ปจ๋ฒค์
์ ์ ์ฉํ๋ ๊ฒ์ด ์ค์ํ๋ค๋ ๊ฒ์ ๊นจ๋ฌ์์ต๋๋ค. ์ด๋ฅผ ๋ฐํ์ผ๋ก ๊ณ์ํด์ ์ฝ๋ ํ์ง์ ํฅ์์ํค๊ณ ๋ฐ์ ์ํฌ ๊ณํ์
๋๋ค.
์ด๋ฒ ํ๋ก์ ํธ๋ฅผ ํตํด ๋ฐฐ์ด ๊ฒ๋ค์ ๋จ์ํ ์ฌ๊ธฐ์ ๋ง๋ฌด๋ฆฌํ์ง ์๊ณ , ์์ผ๋ก๋ ๋ฐ์ ์์ผ ๋๊ฐ๋ ค๊ณ ํฉ๋๋ค. ํ๋ก ํธ์๋๊น์ง ์ ์ฉํ์ฌ ํ๋ก์ ํธ๋ฅผ ์ค์ ์๋น์ค ์์ค๊น์ง ๋ฐ์ ์ํค๊ณ ์ ํฉ๋๋ค.
๐ธ์ด๊ธฐ์ฐ
์ด๋ฒ ํ๋ก์ ํธ์์ ๊ธฐํํ ์๋น์ค๋ฅผ ๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ๋ฐฉ์์ผ๋ก ์์
ํ ์ ์์๋ค. ๊ทธ ๊ณผ์ ์์ ๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ๊ฐ ์ด๊ธฐ ๊ตฌ์กฐ ์ค๊ณ์ ํ์์ ์ด๋ผ๋ ์๊ฐ์ ํ๊ฒ ๋์๋ค. ์ถ์์ ์ธ ์ค๊ณ ํํ๊ฐ ์๋ ๊ตฌ์ฒด์ ์ธ ๊ธฐ๋ฅ ๋๋ฉ์ธ ๋จ์๋ก ๊ตฌ๋ถํ์ฌ ๋ช
ํํ๊ฒ ํ์ธํ ์ ์๋ค๋ ์ ์์ ๊ทธ๋ ๊ฒ ์๊ฐํ๊ฒ ๋ ๊ฒ ๊ฐ๋ค.
์ดํ ๊ธฐ๋ฅ์ ๊ตฌํํด๋๊ฐ๋ ๊ณผ์ ์์ ์์คํ
์ค๊ณ ๋ฐฉ์์ ๋ํ ๊ณ ๋ฏผ๋ ํ ์ ์์๋ค.
๋ชจ๋๋ฆฌ๋ ํํ๋ก ์์ํ ํ๋ก์ ํธ๋ ์ถํ ํ์ฅํ ๊ธฐ๋ฅ๋ค์ ์๊ฐํ์ฌ โMSAโ ์ค๊ณ ๋ฐฉ์์ผ๋ก ์งํํ์๋ค.
์ฒ์์๋ โMSAโ๋ ๊ฒ์ด ๊ทธ์ ๊ธฐ๋ฅ๋จ์๋ก ๋๋๊ณ ๊ฐ ๊ธฐ๋ฅ๋ง๋ค ๋
๋ฆฝ์ฑ์ ์ฃผ๋ ๊ฒ์ ๋ชฉ์ ์ ๋๋ค๊ณ ์๊ฐํ๋ค.
๊ทธ๋ฌ๋ ๋ง์ด ๋๋๋ฉด ๋๋์๋ก ํ ๋จ์ ์ธ๋ ฅ์ ํฌํจํ ์ธํ๋ผ๊ฐ ์ถ๊ฐ ๋์ด์ผ ํจ์ ์๊ฒ๋์๊ณ , ๋ฐ๋ณต์ ์ผ๋ก ์์ฃผ ์ฐ์ด๋ ๊ธฐ๋ฅ ๋๋ ์ง์์ ์ผ๋ก ์ด์๊ฐ ์ฆ์ ๊ธฐ๋ฅ๋ค์ ๋ํด โMSAโ๋ฅผ ์ ์ฉํ๋๊ฒ์ด โ๋ง์ดํฌ๋ก ์๋น์ค ์ํคํ
์ฒโ๋ฅผ ์ ์ฌ์ฉํ๋ ๋ฒ์ด๋ผ ์๊ฐํ๊ฒ๋์๋ค.
ํด๋น ํ๋ก์ ํธ๋ ์ง๊ธ ๋์ด ์๋ ์ค์ ์๋น์ค๋ฅผ ํ ์ ์๋ ๋จ๊ณ๊น์ง ๊ฐ๋ฐ์ ์งํ ํ ์์ ์ด๋ค.
๊ณผ์ ์์ Code ๋ฆฌํฉํ ๋ง, Github ์ฌ์ฉ์ ์ปจ๋ฒค์
ํต์ผ ๋ฑ์ ์งํํ๋ฉฐ ๋ ๋ฐ์ ์ํค๊ณ ์ ํ๋ค.
๐ฐ์ด์์
์คํ๋ง๋ถํธ์ MSA๋ฅผ ์ ์ฉํ ํ๋ก์ ํธ๋ ์ฒ์ ๊ฒฝํํด๋ณด๋ ๊ฒ์ด์๋๋ฐ ์ด ํ๋ก์ ํธ๋ฅผ ํตํด์ ์ปจํธ๋กค๋ฌ์ ์๋น์ค๋ผ๋ฆฌ์ ์ ๋ฌ DTO, Entity, VO๊ฐ ์ด๋ป๊ฒ ๊ตฌ๋ถ๋๋์ง ์๊ฒ ๋์๋ค. ๋ํ rest api ๋ฐฉ์์ ์ฌ์ฉํ์ฌ ๋์ค์ ์ด๋ค ํ๋ก ํธ์๋์๋ ํต์ ํ ์ ์๊ฒ ๋ง๋ค์๋ค. Feign Client๋ฅผ ์ฌ์ฉํ์ฌ MSA๋ก ๋๋์ด์ง ์๋ฒ๋ผ๋ฆฌ ์ํตํ ์ ์๋ค. ์ถํ ํ๋ก์ ํธ ๊ธฐ๊ฐ ๋์ ์ถ๊ฐ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ณ html๊น์ง ์ ์ฉํ์ฌ ๋ฐ์ ์ํฌ ์์ ์ด๋ค. ์ด ํ๋ก์ ํธ๋ฅผ ํตํด ๋ฐฐ์ด ๊ฒ์ ๋ณต์ตํ๊ณ ์ ์ฉํ ์ ์์ด ์ ์ตํ ์๊ฐ์ด์๋ค.
๐บ์์์ฌ
์ด๋ฒ ํ๋ก์ ํธ๋ฅผ ํ๋ฉฐ ์ด์ ์ ๋ฐฐ์ด ์คํ๋ง ๋ถํธ์ REST API, MSA์ MyBatis, JPA ๋ฑ์ ์ง์ ์ ์ฉ์ํค๊ณ ๋ณต์ตํ๋ฉฐ ๊ฐ๋
์ ๋ค์ ์ก๋ ์๊ฐ์ด ๋์์ต๋๋ค.
ํนํ Spring Security์ ๋ํ ๋ถ์กฑํจ๊ณผ ํ์์ฑ์ ์ ์คํ ๋๋ผ๊ฒ ๋์์ต๋๋ค. ๋จ์ํ ๋ค๋ฅธ ์ฌ๋์ ์ฝ๋๋ง์ ์ฐธ์กฐํด ๊ตฌํํ๋ ค ํ๋ ๊ฐ๋
๊ณผ ์ดํด๊ฐ ๋ถ์กฑํ์ฌ ๋ก๊ทธ์ธ ๊ธฐ๋ฅ ๊ตฌํ์ ๋๋ฌด ๋ง์ ์๊ฐ์ด ์์๋์์ต๋๋ค. ์ด์ ์ ์ ๊ฐ ๊ตฌํํ๋ NodeJS ์๋ฒ์๋ ๋ค๋ฅด๊ฒ Spring Security๊ฐ ๋ง์ ์์
์ ๋์ ํด์ฃผ๊ณ ์ ๋ ๊ทธ ์์
์ ๋ํด ํ์ํ ์ค์ ๋ค์ ํด์ค์ผ ํฉ๋๋ค. ํ์ง๋ง ๊ตฌ๋ ์๋ฆฌ์ ์ดํด๊ฐ ์์ผ๋ ํ์ฉ์ ์ฌ์ค์ ๋ถ๊ฐ๋ฅ์ ๊ฐ๊น์ ์ต๋๋ค. ์์ง ์ต์ข
ํ๋ก์ ํธ๊ฐ ์งํ์ค์ธ ๋งํผ ๊ฐ๋
์ ํ์คํ ์ก๊ณ ๊ตฌํ์ ๋ค์ด๊ฐ์ผํ ํ์์ฑ์ ๋๊ผ์ต๋๋ค.
๋ ๋ฒ์งธ, ๊ณต์ ๋ฌธ์๋ฅผ ์ ๋
ํ๋ ๊ฒ์ ํ์์ฑ์ ๋๊ผ์ต๋๋ค. ์ด๋ ์ ์ ์ธ๊ธํ๋ฐ์ ๊ฐ์ด ๊ฐ๋
์ ๊ณต๊ณ ํ ํ๊ธฐ ์ํด์์
๋๋ค. ์งํ์ฒ ์ ํ ๋, ์๊ธฐ ์ , ์ฌ๋ ์๊ฐ ๋ฑ ์ฌ์ ์์ ๋ ์กฐ๊ธ์ฉ์ด๋ผ๋ ๊ณ์ ์ ๊ฐ ํ์ฉํ๋, ํ์ฉํ๊ณ ์ถ์ ๊ฒ์ ๋ํด ๊ธฐ์ด๋ถํฐ ํผํผํ ํ๋ ์๊ฐ์ ๊ฐ์ง ๊ฒ์
๋๋ค.
์ธ ๋ฒ์งธ๋ก, ๊ธฐ๋ฅ ์ฐ์ ์ฃผ์์ ๋ํ ๊นจ๋ฌ์์ด ์์์ต๋๋ค. ๊ตฌํํ ๋น์ Spring Security๊ฐ ์ ๊ณตํ๋ ๋ก๊ทธ์ธ ์ฐฝ์ด ๋จ์ง ์์์ต๋๋ค. ์ ๋ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ฒ ๋ค๊ณ ๋ง์ ์๊ฐ์ ํ ์ ํ๋๋ผ ์ ์ ๊ตฌํํด์ผํ ๊ธฐ๋ฅ๋ค์ ์ฐจ์ผํผ์ผ ๋ฏธ๋ค์ ธ๋ง ๊ฐ์ต๋๋ค. ์ด์ ๋ง์ ์คํธ๋ ์ค๋ฅผ ๋ฐ์ ์์ ์ ํ ์ํฉ์ ํด๋น ๊ธฐ๋ฅ์ ์ค์์น ์๋ค๋ ์กฐ์ธ์ ์ป์๊ณ , RESTํ ์๋ฒ๋ฅผ ๊ตฌ์ถํ ์์ ์ด๋ฏ๋ก ํด๋น ๊ธฐ๋ฅ ๋ํ ํ์ฉํ์ง ์์ ๊ฒ์ด๋ ์ ์ ๊นจ๋ฌ์์ต๋๋ค. ์ด๋ฏธ ํฌ์คํธ๋งจ์ ํ์ฉํ์ ๋ ๊ตฌํํ ๊ธฐ๋ฅ์ด ์๋๋๋ฏ๋ก ๋๊ธธ ์ ์์์ด์ผ ํ์ต๋๋ค. ์์ผ๋ก์ ๊ฐ๋ฐ ์ธ์๋์ ํ์ฌ ์ค์ํ๊ณ ์ฐ์ ์ ์ธ ๊ธฐ๋ฅ๋ค์ ๋ช
ํํ ํ๊ณ ์๊ฐ ๋ถ๋ฐฐ๋ฅผ ํ๊ธฐ ์ํด ๋
ธ๋ ฅํ ๊ฒ์
๋๋ค.
๋ฐฐ์ฐ๊ธฐ๋ ๋ง์ด ๋ฐฐ์ ์ง๋ง ์์ฌ์ด ์ ๋ ๋ง์ ์๊ฐ์ด์์ต๋๋ค. ํ์ง๋ง ์ด๋ฐ ์ ์ ์ง๊ธ ๋ฐฐ์ธ ์ ์๊ฒ ๋์ด ํ๋ณตํ์ต๋๋ค. ์ด๋ฒ์ ๋ฐฐ์์ ์ ๊ฐ ๊ฐ๋ฐ์๊ฐ ๋๋ ๊ธธ์ ์ข์ ์๋ถ์ด ๋ ๊ฒ์
๋๋ค.
๋ฌด์๋ณด๋ค ํ์๋ค์ ์ค์์ฑ๊ณผ ๊ฐ์ฌํจ์ ๋ฐฐ์ ์ต๋๋ค. ํ์๋ค์ด ์๊ธฐ์ ์ฃผ์ ์์ง๋ง ์๋๋ค๋ฉด ๋๋๋๋ผ๋, ์กฐ๊ธ์ฉ์ด๋ผ๋ ์์ผ๋ก ๋์๊ฐ ์ ์์๊ณ ๊ธฐ๊ฐ ๋์ ์ ๊ฐ ๋ฒํธ ์ ์๋ ์ด์ ์ด๊ธฐ๋ ํฉ๋๋ค. ์ด์ ๊ฐ์ฌํจ์ ์์ง ์๊ณ ์ ๋ํ ํ์๋ค์ด ์์งํ ์ ์๋ ์ฌ๋์ด ๋๊ธฐ ์ํด ๋
ธ๋ ฅํ ๊ฒ์
๋๋ค.
๐ถ์ ์ฐ์ง
์ ํฌ ํ๋ก์ ํธ๋ฅผ ํตํด ์งง์ ๊ธฐ๊ฐ ๋์ ๋ง์ ๊ฒ์ ๋ฐฐ์ ์ต๋๋ค. ์คํ๋ง ๋ถํธ, MyBatis, Spring Data JPA, ๊ทธ๋ฆฌ๊ณ REST API ๋ฑ ์์
์๊ฐ์ ๋ฐฐ์ ๋ ๋ด์ฉ์ ์ค์ ๋ก ํ์ฉํด ๋ณด๋ ๊ฒฝํ์ด์์ต๋๋ค. ์ด๋ฅผ ํตํด ๊ธฐ์ด๋ฅผ ์ข ๋ ํํํ๊ฒ ๋ค์ง ์ ์์์ต๋๋ค. ๋ํ, ์ด๋ฒ ํ๋ก์ ํธ์์ ์ฒ์์ผ๋ก DDD ์ค๊ณ๋ฅผ ๋์
ํ์ฌ ๋๋ฉ์ธ์ ์ค๊ณํ๊ณ , MSA๋ฅผ ์ ์ฉํ์ฌ feign client, ์ ๋ ์นด ์๋ฒ, ํด๋ผ์ด์ธํธ, ๊ทธ๋ฆฌ๊ณ ๊ฒ์ดํธ์จ์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋ ๊ฒฝํ๋ ํ์ต๋๋ค.
ํ์
์ ์ํด git๊ณผ GitHub์ ์ฌ์ฉํ๋ฉด์, ์ด๋ฅผ ํตํด ๋ค๋ฅธ ํ์๋ค์ ์ฝ๋๋ฅผ ๋ณด๊ณ ๋ฐฐ์ธ ์ ์์์ต๋๋ค. ๋ค๋ฅธ ํ์๋ค์ ์ฝ๋๋ฅผ ๋ณด๋ฉด์ '์, ์ด๋ฐ ๋ฐฉ์์ผ๋ก๋ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๊ตฌ๋'๋ผ๋ ์๊ฐ์ด ๋ค์์ต๋๋ค. ํ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ๋ฐฐ์ด ๊ฒ์ ํ์ฉํ๊ณ , ๋ค๋ฅธ ์ฝ๋๋ ๋ณด๋ฉฐ ์ฝ๋๋ฅผ ์ฝ๋ ๋ฅ๋ ฅ์ด ๋์ด๋ ๊ฒ์ ๋๋ ์ ์์์ต๋๋ค. ์์ผ๋ก ๋ ์ฑ์ฅํ์ฌ ๋ ๋์ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๊ธฐ ์ํด ๋
ธ๋ ฅํ๊ฒ ์ต๋๋ค.