Plrecipe
๋ "๋๋ค"๋ฅผ ์๋ฏธํ๋ Play
์ "์๋ฆฌ๋ฒ"์ ์๋ฏธํ๋ Recipe
์ ํฉ์ฑ์ด๋ก, ์ฌ์ฉ์์๊ฒ ๋ค์ํ ๋๊ฑฐ๋ฆฌ๋ฅผ ์ ๊ณตํ๋ ์๋น์ค์
๋๋ค. ์ฌ์ฉ์๋ ์์์ , ์นดํ, ์ฐ์ฑ
, ์กํฐ๋นํฐ ๋ฑ์ ์กฐํฉํ์ฌ ์์ ๋ง์ ์ฝ์ค๋ฅผ ๋ง๋ค ์ ์์ผ๋ฉฐ, ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ฒ์๊ธ์ ์์ฑํ์ฌ ๋ค๋ฅธ ํ์๋ค๊ณผ ๊ณต์ ํ ์ ์์ต๋๋ค. ๋ํ ์ฌ์ฉ์๋ ๊ทธ๋ฃน์ ์์ฑํ์ฌ ํผ์ ๋๋ ์น๊ตฌ๋ค๊ณผ ํจ๊ป ๊ฒ์๋ฌผ์ ๊ณต์ ํ๊ณ ์ถ์ต์ ์์ ์ ์์ต๋๋ค.
ย ์ ํฌ ํ๋ก์ ํธ๋ 'ํ๋ ์ํผ'๋ผ๋ ์ด๋ฆ์ผ๋ก, JAVA Spring, MyBatis, JPA, ์ธ๋ถ API๋ฅผ ํ์ฉํ์ฌ ๋ฐฑ์๋๋ฅผ ๊ตฌํํ๊ณ , ํ๋ก ํธ์๋๊น์ง ๊ตฌํํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๊ณ ์์ต๋๋ค. ์ด ํ๋ก์ ํธ๋ ๊ตฌ์ฒด์ ์ด๊ณ ๊ธฐ๋ฅ์ ๊ณ ๋ํ๋ณด๋ค๋ ํ์ตํ ๋ด์ฉ์ ๊ธฐ๋ฐ์ผ๋ก ์ฃผ์ ๊ธฐ๋ฅ ์ค ๊ตฌํ ๊ฐ๋ฅํ ๊ธฐ๋ฅ์ ์ฐ์ ์ ์ผ๋ก ๊ตฌํํ์ฌ ์งํ๋์์ต๋๋ค.
ย 'ํ๋ ์ํผ'
์๋น์ค๋ ์ฌ์ฉ์๊ฐ ์ํ๋ ์ฅ์๋ฅผ ์กฐํฉํ์ฌ ์์ ๋ง์ ์ฝ์ค๋ฅผ ๋ง๋ค๊ณ , ์ด๋ฅผ ๊ฒ์๊ธ ํ์์ผ๋ก ๋ค๋ฅธ ์ฌ์ฉ์๋ค๊ณผ ๊ณต์ ํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ๋ํ, ์ฌ์ฉ์๋ค์ ํ์๋ผ๋ฆฌ ๋ชจ์ธ ๊ทธ๋ฃน ๋๋ ํผ์๋ง์ ๊ทธ๋ฃน์ ์์ฑํ์ฌ ์ถ์ต์ ์ ์ฅํ ์ ์์ต๋๋ค.
ย ์ด๋ฅผ ํตํด ์ฌ์ฉ์๋ค์ ์์ ์ ์ฌํ์ด๋ ์ทจํฅ์ ๋ง๋ ์ฅ์๋ค์ ์กฐํฉํ์ฌ ํน๋ณํ ์ฝ์ค๋ฅผ ๋ง๋ค๊ณ , ์ด๋ฅผ ๋ค๋ฅธ ์ฌ์ฉ์๋ค๊ณผ ๊ณต์ ํ๊ฑฐ๋ ์ถ์ต์ ๋จ๊ธฐ๋ ๋ฑ์ ํ๋์ ์ฆ๊ธธ ์ ์์ต๋๋ค. ํด๋น ํ๋ก์ ํธ๋ ๊ธฐ๋ฅ์ ํ์ฅ์ฑ์ ๊ณ ๋ คํ์ฌ ํ๋ก ํธ์๋๊น์ง ๊ตฌํํ์ฌ ์ฌ์ฉ์๋ค์ด ๋ณด๋ค ํธ๋ฆฌํ๊ฒ ์๋น์ค๋ฅผ ์ด์ฉํ ์ ์๋๋ก ํ ๊ฒ์
๋๋ค.
ย ์์ ์๋ฃ๋ 2021๋ ๊น์ง์ ์ฌํ์ ๋น์จ๊ณผ ๋ ์ ์์ค ์ด์ฉ๋ฅ ์ ๋ํ ํต๊ณ๋ฅผ ๋ณด์ฌ์ฃผ๊ณ ์์ต๋๋ค. ๊ทธ๋ํ๋ฅผ ํตํด ํ๋ฝํ๋ ๋ชจ์ต์ ํ์ธํ ์ ์๋๋ฐ, ์ด๋ COVID-19์ ์ํฅ์ผ๋ก ์ธํ ๊ฒ์ ๋๋ค. ์ด๋ก ์ธํด ์์ ๋ก์ด ์ฌํ์ด๋ ํ๋์ด ์ ํ๋์๊ณ , ์ด๋ ์ฌํ์ ๋น์จ๊ณผ ๋ ์ ์์ค ์ด์ฉ๋ฅ ์ ์ํฅ์ ์ฃผ์์ต๋๋ค.
ย ํ์ง๋ง ํ์ฌ COVID-19์ด ์ข ์๋๋ฉด์, ์ฌ๋๋ค์ ๊ทธ ๋์ ํ์ง ๋ชปํ ์ฌํ์ด๋ ๋ ์ ํ๋์ ์ฆ๊ธฐ๋ ค๋ ์์ง์์ด ๋ํ๋๊ณ ์์ต๋๋ค. ์ข ์๋ ์ง ์ฝ 1๋ ์ด ์ง๋ ์ง๊ธ, ๋ง์ ์ฌ๋๋ค์ด ์น๊ตฌ๋ค๊ณผ์ ์ถ์ต์ ์๊ฑฐ๋ ์คํธ๋ ์ค๋ฅผ ํด์ํ๊ณ ์ ํ๋ ์๊ตฌ๊ฐ ์ปค์ง๊ณ ์์ต๋๋ค.
ย ์ด๋ฌํ ๊ฒฝํฅ์ ํฅํ ์ฌํ ์ ๊ณ ๋ฐ ๋ ์ ์ฐ์ ์ ๊ธ์ ์ ์ธ ์ํฅ์ ๋ฏธ์น ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค. ์ข ์๋ COVID-19์ผ๋ก ์ธํ ์ ์ฝ์ด ํ๋ฆฌ๋ฉด์ ์ฌ๋๋ค์ ์ฌํ๊ณผ ๋ ์ ํ๋์ ๋ํ ์์๊ฐ ์ฆ๊ฐํ ๊ฒ์ผ๋ก ์์๋๋ฉฐ, ์ด๋ ๊ด๋ จ ์ฐ์ ์ ํ๋ณต๊ณผ ์ฑ์ฅ์ ๋๋ชจํ ๊ฒ์ผ๋ก ์ ๋ง๋ฉ๋๋ค.
ย ์๋๋ ์ด๋ฌํ ๊ฒฝํฅ์ ๋ณด์ฌ์ฃผ๋ ์๋ฃ ์์์
๋๋ค.
ย ์์ ๊ทธ๋ํ๋ 2021๋ ์ดํ๋ก ํด์ธ๋ก ์ถ๊ตญํ๋ ์ฌ๋๊ณผ ๊ตญ๋ด ์ฌํ ์ผ์๊ฐ ๋์ด๋๋ ์ฌํ์ ์๊ฐ ๋ค์ ์์นํ๋ ์ถ์ธ๋ฅผ ๋ณด์ฌ์ฃผ๊ณ ์์ต๋๋ค. ์ด๋ฌํ ๋ณํ๋ ์ฌํ ํ๊ฒฝ์ ์ ์ํ๋ฉฐ ์ฌํ์ ๋ค์ ์์ํ๋ ์ฌ๋๋ค์ ์๋ก์ด ์ฌํ์ง๋ฅผ ๊ณ ๋ฏผํ๊ฑฐ๋ ๋ค๋ฅธ ์ฌ๋์ ์ฌํ์ด๋ ๋๊ฑฐ๋ฆฌ์ ๋ํ ๊ถ๊ธ์ฆ์ ๊ฐ์ง ์ ์์ต๋๋ค.
ย ์ ํฌ ํ๋ก์ ํธ๋ ์ด๋ฌํ ์ฌ์ฉ์๋ค์ ๊ณ ๋ฏผ์ ํด์ํ๊ณ , ์ฌ์ฉ์์ ์ถ์ต์ ๊ณต์ ํ๊ณ ์ ์ฅํ๋ ๊ณต๊ฐ์ ์ ๊ณตํ๊ธฐ ์ํด ๊ธฐํ๋์์ต๋๋ค. ์ฌํ์ ๋๋ ๋์ด๋ฅผ ๊ณํํ๊ธฐ ์ ์๋ ๋๊ทผ๊ฑฐ๋ฆฌ๋ ๋ง์์ผ๋ก ์๋ก์ด ์ฌํ์ง๋ฅผ ๊ณ ๋ฏผํ๊ณ , ์ฌํ์ด๋ ์ฆ๊ฑฐ์ด ์๊ฐ์ ์ฌ์ด์ ๋จ๊ธฐ๋ฉฐ ์ฆ๊ธฐ๋ ๊ฒ์ ๋๊ณ ์ ํฉ๋๋ค.
ย ํ๋ก์ ํธ๋ฅผ ํตํด ์ฌ์ฉ์๋ค์ ์ฌํ์ด๋ ๋์ด๋ฅผ ์ฆ๊ธฐ๋ ๋์ ์ถ์ต์ ์ ์ฅํ๊ณ ๋๋๋ฉฐ, ๊ฐ์ธ์ ํ๋ณตํ ์๊ฐ์ ๋ ๋ฐฐ๋ก ๋๋ฆด ์ ์๋ ๊ฒฝํ์ ์ ๊ณต๋ฐ๊ฒ ๋ ๊ฒ์ ๋๋ค. ์ด๋ฅผ ํตํด ์ฌํ์ ๋ํ ์ฆ๊ฑฐ์์ ๋์ฑ ํ์๋กญ๊ฒ ๋๋ฆด ์ ์์ ๊ฒ์ผ๋ก ๊ธฐ๋๋ฉ๋๋ค.
1. ์ฝ์ค ์์ฑ :
ํ์์ ์์ ์ด ์ํ๋ ์ฅ์๋ค์ ์กฐํฉํ์ฌ ๋๊ฑฐ๋ฆฌ ์ฝ์ค๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
2. ๊ทธ๋ฃน :
ํ์์ ํจ๊ปํ๋ ๊ทธ๋ฃน์ ์์ฑํ์ฌ, ๊ทธ๋ฃน ๋ด์์ ์ฝ์ค๋ฅผ ๊ณต์ ํ๊ณ ์ ์ฅํ ์ ์์ต๋๋ค. ๋ํ, ๊ฐ์ธ ๊ทธ๋ฃน์ ์์ฑํ์ฌ ํผ์์๋ ์ฝ์ค๋ฅผ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
3. ๊ฒ์๊ธ :
ํ์์ ๊ฒ์๊ธ ํ์์ผ๋ก ์์ ์ ์ฝ์ค๋ฅผ ๋ค๋ฅธ ์ฌ์ฉ์์ ๊ณต์ ํ ์ ์์ผ๋ฉฐ, ๋ค๋ฅธ ์ฌ์ฉ์๊ฐ ์ฌ๋ฆฐ ์ฝ์ค๋ ์กฐํํ ์ ์์ต๋๋ค.
4. ํ๋ก์ฐ :
ํ์์ ๋ค๋ฅธ ํ์์ ํ๋ก์ฐํ์ฌ ๊ทธ ํ์์ด ์ฌ๋ฆฐ ๊ฒ์๊ธ์ ์กฐํํ๊ฑฐ๋ ๊ด๊ณ๋ฅผ ํ์ฑํ ์ ์์ต๋๋ค.
์ถ๊ฐ์ ์ธ ํ์ต ๋ด์ฉ ๋๋ ๊ด๋ จ ๊ธฐ์ ์ค๋ช WIKI ๋ฐ๋ก๊ฐ๊ธฐ
Plrecipe ์์ธ์ ์ฑ
-
๊ฒ์๊ธ
-
๊ฒ์๊ธ์๋ย (1๊ฐย ์ด์์ย ์ฅ์๋ฅผย ๋ด์)ย ์ฝ์ค๊ฐย ํ์๋กย ํฌํจ๋์ด์ผย ํ๋ค.
-
๊ฒ์๊ธย ๋ด์ฉ์ย 0๊ธ์ย ์ด์ย ์์ฑ๋์ด์ผย ํ๋ค.(๋ด์ฉย ํ์ย ์๋)
-
๊ฒ์๊ธย ์ด๋ฏธ์ง๋ย 0๊ฐย ์ด์ย ํฌํจ๋ ย ์ย ์๋ค.(์ด๋ฏธ์งย ํ์ย ์๋)
-
๊ฒ์๊ธ์ย ๊ณต๊ฐ/๋น๊ณต๊ฐย ์ค์ ์ดย ๊ฐ๋ฅํ๋ค.
- ๊ทธ๋ฃนย ๊ฒ์๋ฌผ์ย ๊ฒฝ์ฐ
- ๊ณต๊ฐย ->ย ๋ชจ๋ ย ์ฌ๋์๊ฒย ๊ณต๊ฐย ๋ฐย ๊ทธ๋ฃน์ย ์ถ๊ฐ
- ๋น๊ณต๊ฐย ->ย ๊ทธ๋ฃน์๊ฒ๋งย ๊ณต๊ฐ
- ๊ทธ๋ฃนย ๊ฒ์๋ฌผ์ย ๊ฒฝ์ฐ
-
๊ฒ์๊ธย ์์ ์ย ๊ฒ์๊ธ์ย ์์ฑํย ํ์/(๊ทธ๋ฃนย ๊ฒ์๋ฌผ์ย ๊ฒฝ์ฐ)๊ทธ๋ฃน์๋งย ๊ฐ๋ฅํ๋ค.
-
๊ฒ์๊ธย ์ญ์ ๋ย ๊ฒ์๊ธ์ย ์์ฑํย ํ์/(๊ทธ๋ฃนย ๊ฒ์๋ฌผ์ย ๊ฒฝ์ฐ)๊ทธ๋ฃน์/๊ด๋ฆฌ์๋งย ๊ฐ๋ฅํ๋ค.
-
๊ฒ์๊ธย ์ญ์ ์ย ๊ฒฝ์ฐย ์ค์ ย DB์์ย ์ญ์ ๋์งย ์๊ณ ย ์ญ์ ์ผ์๊ฐย ์ ๋ฐ์ดํธย ๋๋ค.
->ย ์ญ์ ์ผ์๊ฐย ์ ๋ฐ์ดํธย ๋ย ๊ฒ์๊ธ์ย ํ์ด์ง์์ย ๋ณด์ด์งย ์๋๋ค.
-
-
ํด์ํ๊ทธ
- ๊ฒ์๊ธ์๋ ํด์ํ๊ทธ๊ฐ 0๊ฐ ์ด์ ๋ฑ๋ก๋์ด์ผ ํ๋ค.(ํด์ํ๊ทธ ํ์ ์๋)
- ์ด๋ฏธ ์ ์ฅ๋ ํด์ํ๊ทธ ์ค ์ํ๋ ํ๊ทธ๊ฐ ์์ ๊ฒฝ์ฐ, ํ๊ทธ๋ฅผ ํ์์ด ์ง์ ๋ฑ๋กํ ์๋ ์๋ค.
- ๊ฒ์๊ธ์ ํด์ํ๊ทธ๋ 10๊ฐ๊น์ง ๋ฑ๋ก ๊ฐ๋ฅํ๋ค.
-
ํ์
- ํ์์ ID๋ ์ด๋ฉ์ผ ํ์์ผ๋ก ์ค๋ณต๋ ์ ์๋ค.
- ํ์์ ๋น๋ฐ๋ฒํธ๋ ์์ด์ ์ซ์๋ฅผ ๊ฐ์ด ์จ์ผ ํ๊ณ 15์๋ฅผ ๋๊ธธ ์ ์๋ค.
- ํ์์ ๋๋ค์์ ์ค๋ณต ๋ถ๊ฐ๋ฅํ๋ค.
- ํ์์ ๋๋ค์์ ๋ถ์ ์ ํ ๋๋ค์์ผ์ ์ ์ฌ๋ฅผ ๋ฐ์ ์ ์๋ค.
- ํ์๋ฑ๊ธ์ ์ผ๋ฐํ์๊ณผ ๊ด๋ฆฌ์๋ก ๊ตฌ๋ถ๋๋ค.
- ํ์์ํ๋ ํ์ฑํ/๋นํ์ฑํ(์์์ ์ง, ์๊ตฌ์ ์ง)๋ก ๊ตฌ๋ถ๋๋ค.
- ํ์์ํ๊ฐ ์์์ ์ง/๋นํ์ฑํ์ผ ๊ฒฝ์ฐ์๋ ์ผ๋ฐ์ ์ธ ๊ธฐ๋ฅ ์ฌ์ฉ์ด ์ ํ ๋๊ณ ๊ณ ๊ฐ์ผํฐ๋ง ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
- ํ์์ด ํํดํ ์์๋ ์ ๋ณด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋์ด ์๋ค.
- ์ ํ๋ฒํธ๋ ๋ฐ๋์ ๊ธฐ์ ํด์ผ ํ๋ค.
- ํ์์ ํ๋ก์ฐ, ํ๋ก์๋ฅผ ๊ฐ๋๋ค.
- ํ๋ก์๋ ํ๋ก์ฐ ํ๋ ๋์์ ๊ณต๊ฐ๋ ์ ๋ณด๋ฅผ ์ด๋ํ ์ ์๋ค(ํ์์ด ์ํ ๊ทธ๋ฃน, ํ์์ด ์์ฑํ ๊ฒ์๋ฌผ, ํ์ ๋๋ค์)
-
๊ทธ๋ฃน
- ๊ทธ๋ฃน์ ์ฒ์์ ์์ฑ๋ ๋ ๋ณธ์ธ๋ง ํฌํจ๋์ด ์๋(1์ธ) ๊ทธ๋ฃน์ด ์์ฑ๋๋ค. -๊ทธ๋ฃน์ ๋ค๋ฅธ ํ์์ ์ด๋ํ ์ ํ์ID๋ก ์ด๋ํ๋ค.
- ๊ทธ๋ฃน ์ด๋ฆ์ ๋ฐ๋ก ์ค์ ํ์ง ์์ ์ "(๊ทธ๋ฃน์ ์์ฑํ ํ์ ๋๋ค์)์ ๊ทธ๋ฃน"์ผ๋ก ํ์๋๋ค.
- ๊ทธ๋ฃน์ ๊ตฌ์ฑ์์ ์ด๋ ํ์ ๋ '์ด๋ ์๋ฝ' ํ์ ๊ทธ๋ฃน์ ํฌํจ๋๋ค.
- ํ์(๋ณธ์ธ)์ด ์ํ ๊ทธ๋ฃน์ ๊ณต๊ฐ/๋น๊ณต๊ฐ๋ก ์ฒ๋ฆฌํ ์ ์๋ค.
- ํ์(๋ณธ์ธ)์ ๊ทธ๋ฃน์ (์๋จ)๊ณ ์ ํ ์ ์๋ค.
- ๊ทธ๋ฃน์์ (๊ทธ๋ฃน ๋ด ๊ฒ์๊ธ ๋ฑ๋ก, ๋ณธ์ธ์ด ์ด ๊ฒ์๊ธ ์ญ์ , ๊ฒ์๊ธ ์์ (๋ณธ์ธ ํฌํจ ๊ทธ๋ฃน์), ๊ทธ๋ฃน ํํด, ๊ทธ๋ฃน ๋ด ๊ฒ์๊ธ ๋๊ธ ์์ฑ) ๊ถํ์ ๊ฐ๋๋ค.
- ๊ทธ๋ฃน์ฅ์ ๊ทธ๋ฃน์์ ๊ถํ์ ํฌํจํด ๊ทธ๋ฃน์ ์ถ๋ฐฉ, ๊ทธ๋ฃน ์ด๋ฆ ์์ , ๊ทธ๋ฃน์ ์ด๋ ๊ถํ, ๊ทธ๋ฃน ๊ณต๊ฐ ์ฌ๋ถ ๊ถํ, ๊ทธ๋ฃน์ฅ ์์์ ๊ฐ๋๋ค.
- ๊ทธ๋ฃน์ฅ์ด ๊ทธ๋ฃน์ ํํดํ ๊ฒฝ์ฐ ๋ ๋ฒ์งธ๋ก ๊ทธ๋ฃน์ ํฌํจ๋ ์ฌ๋์ด ๊ทธ๋ฃน์ฅ์ด ๋๋ค.
- ์ด๋ฏธ ์ด๋ํ ๊ทธ๋ฃน์์ด ์๋ฝ ๋๋ ๊ฑฐ์ ์ ํ๊ธฐ ์ (๋๊ธฐ ์ค)์ธ ๊ฒฝ์ฐ, ์ฌ์ด๋๊ฐ ๋ถ๊ฐ๋ฅํ๋ค.
-
์ฝ์ค
- ์ค๋ณต๋ ์ฅ์๋ ์ฝ์ค์ ๋ฑ๋กํ ์ ์์.
- ์ฝ์ค ๋ธ๋ญ์ ์ฅ์ ์นดํ ๊ณ ๋ฆฌ๋ณ๋ก ์๊น์ด ๋งค๊ฒจ์ง.
- ์ฝ์ค๋ ์๋จ๋ถํฐ ์์ด๊ณ ๊ฐ๋ ์ฅ์๋ ์ฌ ๋ฐฉ๋ฌธ ๋ถ๊ฐ๋ฅ
- ์ฅ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์กด์ฌํ์ง ์์ผ๋ฉด ์ฝ์ค ์์ฑํ๋ ๋์ค์ ์ฌ์ฉ์๊ฐ ์ฅ์ ๋ฑ๋ก ๊ฐ๋ฅ
- ์ฝ์ค ๋ง๋ค๊ณ ์ฌ์ฉ์๊ฐ ์ฝ์ค ์ด๋ฆ ๋ถ์ผ ์ ์์
-
์ฅ์
- ์ฅ์ ์นดํ ๊ณ ๋ฆฌ(์์์ , ์นดํ, ๋ฌธํ, ์กํฐ๋นํฐ, ์ฐ์ฑ , ๊ธฐํ)
- ์ธ๋ถ API์์ ๋ฐ์์จ ์ฅ์๋ฅผ ์ฌ์ฉ์๊ฐ ์ ์ ํ ์นดํ ๊ณ ๋ฆฌ๋ฅผ ๋ถ์ฌ ์ฅ์ ๋ฑ๋ก
- ์ฅ์ ๋ฑ๋ก์ ์นดํ ๊ณ ๋ฆฌ๋ฅผ ๋ฌด์กฐ๊ฑด ๋ถ์ฌ์ผ ํจ.
- ์ฅ์๋ฅผ ๋ฑ๋กํ๊ธฐ ์ ์ ๋์ผํ ์ฃผ์ ๋๋ ์ด๋ฆ์ผ๋ก ์ด๋ฏธ ๋ฑ๋ก๋์ด ์๋ ์ ๋ณด๋ฅผ ์ฌ์ฉ์์๊ฒ ํ๋ฒ ํ์ธ ์ํค๊ณ ๋ฑ๋กํ๋ ์ ์ฐจ๋ก ์งํ(๋์ผํ ์ฃผ์, ์ด๋ฆ์ด ์๋ ๊ฒฝ์ฐ ํ์ธํ์ง ์์)
- ์ฅ์ ๋ณ์ ์ ๋จ๊ธธ ๋ ๊ฐ๋จํ ํ ์ค ์ฝ๋ฉํธ ์์ฑ ๊ฐ๋ฅ (๋ณ์ ์ 1 ~ 5๊ฐ)
DDD ์ค๊ณ ๊ณผ์
- ์ ์ฑ
์ถ๊ฐ
- ๋ฉ๋ชจ ์ถ๊ฐ(๊ธฐ๋ฅ์ ์ ํํ ์ ์, ๊ณ ๋ํ ๊ฐ๋ฅ์ฑ)
- ๊ฒ์๊ธ / ๊ฒ์๊ธ(๋ถ๊ฐ๊ธฐ๋ฅ) / ๊ฒ์๊ธ ๋๊ธ / ์ฅ์ / ํ์ / ๊ทธ๋ฃน / ๊ณ์ ์ ๋ณด
- Domain์ผ๋ก ๋ถ๋ฆฌ
- Boundary(๊ฒฝ๊ณ): ๊ฐ ๋๋ฉ์ธ ๋ชจ๋ธ์ ๊ฒฝ๊ณ๋ฅผ ์ ์ํจ. ์ด๋ ๋ชจ๋ธ์ด ๊ด๋ฆฌํ๋ ๋ฐ์ดํฐ์ ๋น์ฆ๋์ค ๊ท์น์ ๋ํ๋.
- Relationships(๊ด๊ณ): ๋ค๋ฅธ ๋๋ฉ์ธ ๋ชจ๋ธ๊ณผ์ ๊ด๊ณ๋ฅผ ์ ์ํจ. ์ด๋ ๋ชจ๋ธ ๊ฐ์ ์ด๋ค ์ข
๋ฅ์ ํต์ ์ด ํ์ํ์ง๋ฅผ ๋ณด์ฌ์ค.
- Shared Kernel(๊ณต์ ์ปค๋): ๋ ๊ฐ ์ด์์ ๋๋ฉ์ธ ๋ชจ๋ธ ๊ฐ์ ๊ณต์ ๋๋ ๋ถ๋ถ์ ๋ํ๋. ์ด๋ ๊ฐ ๋ชจ๋ธ์ด ํน์ ๋น์ฆ๋์ค ๊ธฐ๋ฅ์ ์ํํ๋ ๋ฐ ํ์ํ ๊ณตํต ์์๋ฅผ ๋ํ๋.
- Customer/Supplier Relationships(๊ณ ๊ฐ/๊ณต๊ธ์ ๊ด๊ณ): ์๋ก ๋ค๋ฅธ ๋๋ฉ์ธ ๋ชจ๋ธ ๊ฐ์ ๋ฐ์ํ๋ ์์ฒญ๊ณผ ์๋ต์ ํ๋ฆ์ ๋ํ๋. ์ด๋ ์๋ก ๋ค๋ฅธ ๋ชจ๋ธ ๊ฐ์ ์ด๋ค ์ข
๋ฅ์ ํต์ ์ด ์ด๋ฃจ์ด์ง๋์ง๋ฅผ ๋ณด์ฌ์ค.
์์ 4๊ฐ์ง๋ฅผ ๊ณ ๋ คํด์ Context Mapping
* Context Map
- ํต์ฌ ๊ธฐ๋ฅ ์ฐ์ ๊ตฌํ
- Root๊ฐ 1:N, 1:1 ๊ด๊ณ ์ค์
DDL
CREATE TABLE `member_info` (
`member_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`member_email` VARCHAR(127) NOT NULL UNIQUE,
`password` VARCHAR(31) NOT NULL,
`member_name` VARCHAR(63) NOT NULL,
`member_nickname` VARCHAR(31) NOT NULL UNIQUE,
`member_number` VARCHAR(15) NOT NULL,
`join_date` VARCHAR(255) NOT NULL,
`withdrawal_date` VARCHAR(255) NULL,
`member_grade` ENUM('ROLL_MEMBER', 'ROLL_ADMIN') NOT NULL,
`member_status` CHAR(1) NOT NULL DEFAULT 'Y'
);
CREATE TABLE `post` (
`post_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`post_title` VARCHAR(255) NOT NULL,
`post_content` VARCHAR(255) NOT NULL,
`post_date` VARCHAR(255) NOT NULL,
`post_delete_date` VARCHAR(255) NULL,
`member_id` INT NOT NULL,
`course_id` INT NOT NULL,
`is_post_public` CHAR(1) NOT NULL DEFAULT 'Y',
`member_count` ENUM('ONE', 'TWO', 'MANY') NOT NULL,
`group_id` INT NULL
);
CREATE TABLE `plrecipe_group` (
`group_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`group_name` VARCHAR(255) NOT NULL,
`is_group_public` CHAR(1) NOT NULL DEFAULT 'Y',
`group_create_date` VARCHAR(255) NOT NULL,
`group_withdrawal_date` VARCHAR(255) NULL,
`group_comment` VARCHAR(255) NULL,
`group_status` CHAR(1) NOT NULL DEFAULT 'Y'
);
CREATE TABLE `follow_info` (
`follow_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`user_follow` INT NOT NULL,
`user_follower` INT NOT NULL,
UNIQUE KEY unique_follow_info(user_follow, user_follower)
);
CREATE TABLE `place_star` (
`star_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`star_point` INT NOT NULL,
`star_comment` VARCHAR(255) NULL,
`place_id` INT NOT NULL,
`member_id` INT NOT NULL,
UNIQUE KEY unique_place_star(place_id, member_id)
);
CREATE TABLE `place` (
`place_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`place_name` VARCHAR(127) NOT NULL,
`place_location` VARCHAR(255) NOT NULL,
`place_phone_num` VARCHAR(15) NULL,
`place_category_id` INT NOT NULL,
UNIQUE KEY unique_place (place_name, place_location)
);
CREATE TABLE `image` (
`image_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`image_location` VARCHAR(255) NOT NULL,
`image_name` VARCHAR(255) NOT NULL,
`post_id` INT NOT NULL,
`member_id` INT NOT NULL,
`group_id` INT NOT NULL,
`image_rename` VARCHAR(255) NULL
);
CREATE TABLE `course` (
`course_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`course_name` VARCHAR(127) NULL,
`member_id` INT NOT NULL
);
CREATE TABLE `group_member` (
`group_member_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`groupmember_sequence` INT NOT NULL,
`invite_state_id` ENUM('ACCEPT', 'WAITING', 'DENY') NOT NULL DEFAULT 'WAITING',
`group_id` INT NOT NULL,
`member_id` INT NOT NULL,
UNIQUE KEY unique_group_member (group_id, member_id)
);
CREATE TABLE `course_place` (
`place_course_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`place_id` INT NOT NULL,
`course_id` INT NOT NULL,
`place_sequence` INT NOT NULL
);
CREATE TABLE `place_category` (
`place_category_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`place_category_name` VARCHAR(63) NOT NULL
);
CREATE TABLE `hashtag` (
`hashtag_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`hashtag_title` VARCHAR(255) NOT NULL UNIQUE
);
CREATE TABLE `post_hashtag` (
`post_hashtag_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`hashtag_id` INT NOT NULL,
`post_id` INT NOT NULL,
UNIQUE KEY unique_post_hashtag (hashtag_id, post_id)
);
CREATE TABLE `post_like` (
`post_like_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`member_id` INT NOT NULL,
`post_id` INT NOT NULL
);
-- ALTER TABLE `member_info` ADD CONSTRAINT `PK_MEMBER_INFO` PRIMARY KEY (
-- `member_id`
-- );
ALTER TABLE `post` ADD CONSTRAINT `FK_plrecipe_group_TO_post_1` FOREIGN KEY (
`group_id`
)
REFERENCES `plrecipe_group` (
`group_id`
);
ALTER TABLE `post` ADD CONSTRAINT `FK_member_info_TO_post_1` FOREIGN KEY (
`member_id`
)
REFERENCES `member_info` (
`member_id`
);
ALTER TABLE `post` ADD CONSTRAINT `FK_course_TO_post_1` FOREIGN KEY (
`course_id`
)
REFERENCES `course` (
`course_id`
);
ALTER TABLE `follow_info` ADD CONSTRAINT `FK_member_info_TO_follow_info_1` FOREIGN KEY (
`user_follow`
)
REFERENCES `member_info` (
`member_id`
);
ALTER TABLE `follow_info` ADD CONSTRAINT `FK_member_info_TO_follow_info_2` FOREIGN KEY (
`user_follower`
)
REFERENCES `member_info` (
`member_id`
);
ALTER TABLE `place_star` ADD CONSTRAINT `FK_place_TO_place_star_1` FOREIGN KEY (
`place_id`
)
REFERENCES `place` (
`place_id`
);
ALTER TABLE `place_star` ADD CONSTRAINT `FK_member_info_TO_place_star_1` FOREIGN KEY (
`member_id`
)
REFERENCES `member_info` (
`member_id`
);
ALTER TABLE `place` ADD CONSTRAINT `FK_place_category_TO_place_1` FOREIGN KEY (
`place_category_id`
)
REFERENCES `place_category` (
`place_category_id`
);
ALTER TABLE `image` ADD CONSTRAINT `FK_post_TO_image_1` FOREIGN KEY (
`post_id`
)
REFERENCES `post` (
`post_id`
);
ALTER TABLE `image` ADD CONSTRAINT `FK_member_info_TO_image_1` FOREIGN KEY (
`member_id`
)
REFERENCES `member_info` (
`member_id`
);
ALTER TABLE `image` ADD CONSTRAINT `FK_plrecipe_group_TO_image_1` FOREIGN KEY (
`group_id`
)
REFERENCES `plrecipe_group` (
`group_id`
);
ALTER TABLE `course` ADD CONSTRAINT `FK_member_info_TO_course_1` FOREIGN KEY (
`member_id`
)
REFERENCES `member_info` (
`member_id`
);
ALTER TABLE `group_member` ADD CONSTRAINT `FK_plrecipe_group_TO_group_member_1` FOREIGN KEY (
`group_id`
)
REFERENCES `plrecipe_group` (
`group_id`
);
ALTER TABLE `group_member` ADD CONSTRAINT `FK_member_info_TO_group_member_1` FOREIGN KEY (
`member_id`
)
REFERENCES `member_info` (
`member_id`
);
ALTER TABLE `course_place` ADD CONSTRAINT `FK_place_TO_course_place_1` FOREIGN KEY (
`place_id`
)
REFERENCES `place` (
`place_id`
);
ALTER TABLE `course_place` ADD CONSTRAINT `FK_course_TO_course_place_1` FOREIGN KEY (
`course_id`
)
REFERENCES `course` (
`course_id`
);
ALTER TABLE `post_hashtag` ADD CONSTRAINT `FK_hashtag_TO_post_hashtag_1` FOREIGN KEY (
`hashtag_id`
)
REFERENCES `hashtag` (
`hashtag_id`
);
ALTER TABLE `post_hashtag` ADD CONSTRAINT `FK_post_TO_post_hashtag_1` FOREIGN KEY (
`post_id`
)
REFERENCES `post` (
`post_id`
);
ALTER TABLE `post_like` ADD CONSTRAINT `FK_member_info_TO_post_like_1` FOREIGN KEY (
`member_id`
)
REFERENCES `member_info` (
`member_id`
);
ALTER TABLE `post_like` ADD CONSTRAINT `FK_post_TO_post_like_1` FOREIGN KEY (
`post_id`
)
REFERENCES `post` (
`post_id`
);
- ์ ๋ ์นด ์๋ฒ์ ์ ๋ ์นด ํด๋ผ์ด์ธํธ๋ก ๊ตฌ์ฑ๋จ
- ์ ์ ๋ ๊ฒ์ดํธ์จ์ด๋ฅผ ํตํด ์ํ๋ ์๋น์ค์ ๋งค์นญ๋จ(Member, Group, Post, Place)
- ๋น๋ฐ๋ฒํธ ์ํธํ ๋ฐ ๋ก๊ทธ์ธ ์ธ์ฆ์ ๊ตฌํํจ(Spring Security 6 version ํ์ฉ)
- ๋ก๊ทธ์ธ ์, ํ ํฐ์ ๋ฐ๊ธ๋ฐ์ ์ดํ ์ธ์ฆ์ด ํ์ํ ์๋น์ค์ ์ ๊ทผ ๊ฐ๋ฅํจ(JWT(java web token) ํ์ฉ)
- ์ฅ์ ์๋น์ค๋ API๋ฅผ ํตํด ์ฅ์ ์ ๋ณด๋ฅผ ๋ฐ์์ด(์ธ๋ถ Api๋ Kakaomap api ์ฌ์ฉ)
- ๊ฐ ์๋น์ค๋ผ๋ฆฌ ํต์ ํ์ฌ ํ์ํ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ์
- (ํ์ฌ DB๋ ํ๋์ DB๋ฅผ ์ฌ์ฉํจ)
-
์๋น์ค ๋ฑ๋ก: ์๋น์ค ์ธ์คํด์ค๊ฐ ์์๋ ๋, ํด๋น ์๋น์ค๋ฅผ Eureka ์๋ฒ์ ๋ฑ๋ก.
-
์๋น์ค ๊ฒ์: ํด๋ผ์ด์ธํธ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ค๋ฅธ ์๋น์ค ์ธ์คํด์ค์ ์์น๋ฅผ ๊ฒ์. ์ด๋ฅผ ํตํด ํด๋ผ์ด์ธํธ๋ ๋์ ์ผ๋ก ์๋น์ค ์์น๋ฅผ ์ฐพ์์ ํต์ .
-
์๋น์ค ์ํ ๊ฐ์: Eureka๋ ๋ฑ๋ก๋ ์๋น์ค ์ธ์คํด์ค๋ค์ ์ํ๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ๊ฐ์ํ๊ณ , ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ธ์คํด์ค๋ค์ ์๋์ผ๋ก ๊ฐ์งํ๊ณ ์ ๊ฑฐํจ.
Member
Login
Regist Member
Modify Member
Password Encryption
All Member Select
Select By MemberId
Withdraw Member
Post
Regist Post
Modify Post
Regist Post Like
Select All Post
Delete Post
Insert HashTag
Select Like By Post
Select Member Posts
Select HashTag By Post
Select Post By MemberCount
Select Post By Status
Place
Regist Place
Regist Star (To place)
Modify Star
Delete Place
Delete Star
Select All Place
Select Place By PlaceId
Select Place By Filter
Select Star By MemberId
Select Star By Place
Group
Regist Group
Invite Group
Modify Group
Delete Group
Accept Request
Select All Group
Select Group By Public Status
Withdrawal Group
ย ย ํย ์ย ย ย | ํ๊ณ ๋ก |
---|---|
๋ฐฐ์ฑ๋ฏผ | ย ์ฃผ์ ๋ 'ํ์์ฑ'์ ๊ณ ๋ คํ์ฌ ํ๋ก์ ํธ๋ฅผ ์์ํ์ผ๋ฉฐ, ํ์๋ค๊ณผ ํจ๊ป ์ฆ๊ฒ๊ฒ ์งํํ ์ ์๋ ์ธก๋ฉด๋ ๊ณ ๋ คํ์ต๋๋ค. ํ๋ก์ ํธ๋ฅผ ๋ง์ดํฌ๋ก ์๋น์ค ์ํคํ
์ฒ(MSA) ํํ๋ก ์งํํ์ผ๋ฉฐ, ์ด๋ ์ฝ์ง ์์์ง๋ง ํ์๋ค๊ณผ์ ๊ต๋ฅ๋ฅผ ์ด์งํ๊ณ ์๋น์ค์ ๋ํ ์ดํด๋ฅผ ๋์ผ ์ ์์์ต๋๋ค. ์๋ฒฝํ MSA๋ฅผ ๊ตฌ์ถํ์ง ๋ชปํ์ง๋ง, ๋ค์ํ ์ธ๋ถํ ๋ฐฉ์์ ๊ฒฝํํ ์ ์์์ต๋๋ค. ๋ฐฑ์๋ ๊ตฌํ ๊ธฐ๊ฐ์ ์ ์ฝ์ผ๋ก ์ธํด ๋ชจ๋ ๊ธฐ๋ฅ์ ์๋ฒฝํ๊ฒ ๊ตฌํํ์ง ๋ชปํ ์ ์ด ์์ฌ์ ์ง๋ง, ์ด๋ฅผ ๊ณ ๋ํํ๋ ๊ณผ์ ์ ํตํด ๋ ๋์ ์๋น์ค๋ฅผ ์ ๊ณตํ๊ณ ์ ํ๋ ์์ฌ์ด ์์ต๋๋ค. ย ๋ค์ํ ๊ธฐ์ ์คํ์ ํ์ฉํ๋ฉด์ ์ด์ ์ ํ์ตํ ๋ด์ฉ์ ๋ณต์ตํ ์ ์์๊ณ , ํนํ MyBatis(์กฐํ)์ JPA(์ ๋ ฅ, ์์ , ์ญ์ )๋ฅผ ํตํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ํ์ฉํ์ต๋๋ค. ๋ํ ์ ๋ ์นด ์๋ฒ์ ํด๋ผ์ด์ธํธ๋ฅผ ํตํด ๊ฒ์ดํธ์จ์ด๋ฅผ ์ค์ ํ๊ณ ๋ค๋ฅธ ์๋น์ค๋ฅผ ํธ์ถํ๋ ๋ฐฉ์์ ์ ์ฉํ๋๋ฐ, ์ด๋ฅผ ํตํด ์ค์ ํ์ฌ์์์ ์ ์ฉ ์ฌ๋ก๋ฅผ ํ์ตํ ์ ์์์ต๋๋ค. ย ์ ๊ฐ ๋งก์ ์ญํ ์ค์์๋ ์ํธํ์ ์ํคํ ์ฒ ์ ์์ด ๊ธฐ์ต์ ๋จ์ต๋๋ค. Spring Security์ ์ง์์ ์ธ ์ ๋ฐ์ดํธ๋ก ์ธํด ์ํธํ ๋ถ๋ถ์ด ์ด๋ ค์์ ๊ฒช์๊ณ , MSA๋ฅผ ์ ์ฉํ๋ฉด์ ํ ํฐ ๋ฐฉ์(JWT)์ ํตํ ์ธ์ฆ ๋ฐ ์ธ๊ฐ๊ฐ ์ด๋ ค์ ์ต๋๋ค. ์ํคํ ์ฒ๋ ์ ํด์ง ํ์์ด ์์์ง๋ง ์ค์ ์ฌ๋ก์ ์ฑ๊ณต ์ฌ๋ก๋ฅผ ์ฐธ๊ณ ํ์ฌ ๊ตฌ์ฑํ์ผ๋, ๋ ๋ง์ ๊ธฐ๋ฅ์ ๊ณ ๋ คํ ์ํคํ ์ฒ๋ฅผ ๊ตฌ์ฑํ๊ณ ์ถ์ ์์ฌ์์ด ๋จ์์ต๋๋ค. ย ํ ํ๋ก์ ํธ๋ ๊ธ์ ์ ์ธ ๋ถ์๊ธฐ ์์์ ํ์๋ค์ ๊ฐ์์ ์ญํ ์ ์ ์ํํ๊ณ ์๊ฒฌ์ ๋๋์ด์ฃผ์ด ํ๋ก์ ํธ๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ์ด๋์ด๋ผ ์ ์์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ด๋ฌํ ์ด์ ๋๋ฌธ์ธ์ง ํ๋ก์ ํธ ์ดํ์๋ ๋ ๋ฐ์ ํ๊ณ ์ ํ๋ ์์ฌ์ด ์๊ฒผ์ผ๋ฉฐ, ์๋ก์ด ๊ธฐ์ ๊ณผ ๋๊ตฌ์ ๋ํ ํ์ต์ ๋ ํฅ๋ฏธ๋ฅผ ๋๋ผ๊ธฐ๋ ํ์ต๋๋ค. ์ด๋ฒ ํ๋ก์ ํธ์์ ๋ถ์กฑํ ๋ถ๋ถ๊ณผ ๊ถ๊ธํ ๋ถ๋ถ์ ๋ณด์ํ๊ณ ๋ฐ์ ์ํค๊ธฐ ์ํด ๊พธ์คํ ๋ ธ๋ ฅํด๋ด์ผ๊ฒ ๋ค๋ ์๊ฐ๋ ๋ค์์ต๋๋ค. |
ํ์ํ | ย ์ด๋ฒ ๋ฐฑ์๋ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉฐ ์ด์ ๋ณด๋ค๋ ์์ํ์ง ์์ ์ฃผ์ ๋ก ์งํํ๊ฒ ๋์ด์ ๊ณผ์ ์ ์ข ๋ ์ฆ๊ธธ ์ ์์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด์ ์ ๊ฒฝํ์ ํ ๋๋ก ๋ฏธ๋ฆฌ ์ฅ์ ๋ธ๋ญ๊ณผ ์ฝ์ค ๋ฑ ์ฃผ์ํ ๊ฐ๋
์ ํ์๋ค๊ณผ ๋ง์ถฐ๊ฐ๋ฉฐ ์ข ๋ ์์ํ๊ฒ ์งํํ ์ ์์์ต๋๋ค. ย jsp, servlet์ ์ด์ฉํ์ฌ ๋ฐฑ์๋ ํ๋ก์ ํธ๋ฅผ ์งํํ ์ ์ด ์์๋๋ฐ, ์คํ๋ง์ ํ์ฉํด ๊ฐ๋ฐ์ ์งํํ๋ ๊ฐ์ ์๊ฐ์ ์ฌ์ฉํด ๋ ์ ๋๋ก ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ ์ ์์ด ์ ๊ธฐํ์ต๋๋ค. ๋ํ ์กฐํ๋ MyBatis, ์ฝ์ /์์ /์ญ์ ๋ JPA๋ฅผ ํตํด ๊ตฌํํ๋ฉฐ ๋ค์ํ ๋ฐฉ์์ ํ์ฉํ๋ฉฐ ๊ฐ ์ฅ๋จ์ ์ ์ง์ ๋๋ผ๊ณ ์ด๋ป๊ฒ ํ๋ฉด ์ ํ์ฉํ ์ ์์์ง ๊ณ ๋ฏผํด๋ณผ ์ ์๋ ์๊ฐ์ด์์ต๋๋ค. ย ์ด๋ฒ ํ๋ก์ ํธ์์ ๊ฐ์ฅ ์ข์๋ ์ ์ msa ๋ฐฉ์์ ๋ฐฐ์ฐ๊ณ ๊ฐ ์๋น์ค๋ฅผ ๋๋ ์ ๊ตฌํํด๋ณผ ์ ์์๋ค๋ ๊ฒ์ ๋๋ค. ์ ๋ ์นด ์๋ฒ์ ํด๋ผ์ด์ธํธ๋ฅผ ์ด์ฉํ๊ณ ๊ฒ์ดํธ์จ์ด๊น์ง ์ง์ ์ค์ ํด๋ณผ ์ ์์๋ ์๋ฏธ์๋ ๊ฒฝํ์ด์๋ค๊ณ ์๊ฐํฉ๋๋ค. feign client๋ฅผ ์ฌ์ฉํด ๋ค๋ฅธ ์๋น์ค์ ํต์ ํ๊ณ ์ ๋ณด๋ฅผ ๋ฐ์์ค๋ ๊ณผ์ ๋ ๋ฟ๋ฏํ๊ณ ์ฌ๋ฐ์์ต๋๋ค. ย ์ด์ ํ๋ก์ ํธ๋ณด๋ค ๋ ๋ฐ์ ๋ ๋ชจ์ต์ผ๋ก ์ด๋ฒ ๊ตฌํ์ ํตํด ํ์๋ค๊ณผ ํจ๊ป ๊ณ ๋ฏผํ๊ณ ํ๋ก์ ํธ๋ฅผ ์์ฑํ ์ ์์ด์ ์ข์์ต๋๋ค. |
์ค์ฌ์ | ย ๋๊ฑฐ๋ฆฌ ์ฝ์ค๋ฅผ ์ ๊ณตํ๋ ์ปค๋ฎค๋ํฐ๋ฅผ ์ฃผ์ ๋ก ํ๋ ๋ฐฑ์๋ ํ๋ก์ ํธ๋ฅผ ํ๋ฉฐ ์์
์์ ๋ฐฐ์ ๋ MyBatis์ remix ๋ฐฉ์์ ์ฑํํ ๋ค์ค์ด ์กฐํ, JPA๋ฅผ ์ฌ์ฉํ CRUD ์์ ๋ง์ ์ค๋ฅ๋ฅผ ๊ฒช์ผ๋ฉฐ myBatis์ JPA์ ์ฅ๋จ์ ์ ์ ์ ์์๊ณ resultMap ์์ฑ, ๋น์ฆ๋์ค ๋ก์ง๋ฑ ์์ง ํ์คํ ์์ง ๋ชปํ๋ ๊ฒ์ ์ค์ ๋ก ์ฌ์ฉํด๋ณด๋ฉฐ ๊นจ์ฐ์น ์ ์์ด ์ข์์ต๋๋ค. ย ๋ํ Eureka cloud๋ฅผ ์ฌ์ฉํ์ฌ ์๋น์ค๋ฅผ MSA๋ก ๋๋์ด server์ gateway๋ฅผ ํตํด ์ฐ๊ฒฐ ํ DB์์ join์ ์ด์ฉํด ๊ฐ์ ๊ฐ์ ธ์ค๋ ๊ฒ์ด ์๋๋ผ feign client๋ฅผ ์ฌ์ฉํด ์ฃผ๊ณ ๋ฐ๋ ๊ธฐ๋ฅ์ ์ ์ฉํด๋ณด๋ฉฐ ํฅ๋ฏธ๋ฅผ ๋ง์ด ๋๊ผ์ต๋๋ค. |
์กฐ์๋น | ย ๊ธฐํ ๋จ๊ณ์์ ๊ธฐ์กด ์๋น์ค์๋ ์ฐจ๋ณ์ฑ์ด ์๋ ์ด๋์ ๋ ์ฐธ์กฐํ ๋ ํผ๋ฐ์ค๋ ์๋ ์๋น์ค๋ฅผ ๊ธฐํํ๋ ๊ฒ ์๊ฐ๋ณด๋ค ์ด๋ ต๊ณ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ ๊ณผ์ ์ด์์ต๋๋ค. ํ์๋ค์ด ๊ฐ์ ์ฌ์ฉํ๋ฉด์ ๋ง์กฑํ๋ ์๋น์ค์ ์์ฌ์ ๋ ์ ์ ๊ณต์ ํ๋ฉฐ ์ ํฉํ ์ฃผ์ ๋ฅผ ์ฐพ์ ์ ์์๊ณ , ์ดํ ๊ธฐ๋ฅ ๊ตฌํ ๋จ๊ณ์์ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋๋ผ๋ ๊ธฐํ ๋จ๊ณ๋ฅผ ๊ผผ๊ผผํ๊ฒ ํ๋ ๊ฒ์ด ์ผ๋ง๋ ์ค์ํ์ง ๊นจ๋ฌ์ ์ ์์์ต๋๋ค. ย ๋ํ, ๊ตฌํํ ์๋น์ค์ ๋ํด ์ฌ์ํ ๊ฐ๋ ์ด๋ผ๋ ๋ช ํํ๊ฒ ํ ์ํ์์ ๊ธฐ๋ฅ ๊ตฌํ์ ์์ํด์ผ ํ๋ค๋ ์ ๋ ๋ฐฐ์ธ ์ ์์์ต๋๋ค. ์ด์ ํ๋ก์ ํธ์์๋ ๋ค๋ฃจ์ง ๋ชปํ๋ ์๋ฒ ๋ฐ ํต์ ์ด์๋ค์ ์ง์ ๋ค๋ค๋ณด๋ฉฐ ์์ ์๊ฐ์ ๋ฐฐ์ ๋ ๋ด์ฉ์ ์ง์ ๊ตฌํํ๋ ๊ณผ์ ์ ํตํด ์์ฐ์ค๋ ๋ณต์ตํ๋ฉฐ ์ฒดํํ ์ ์๋ ์ข์ ๊ฒฝํ์ด์์ต๋๋ค. ย MSA ๋ฐฉ์์ผ๋ก ํ์๋ณ๋ก ํ ๊ฐ์ง ๊ธฐ๋ฅ์ ๋งก์ ๊ตฌํํ๋ฉฐ ์ฑ ์๊ฐ์ ๊ฐ์ง๊ณ ์์ ํ ์ ์์์ผ๋ฉฐ, ์ค๋ฅ๊ฐ ๋ฐ์ํ์ ๋๋ ๋ณธ์ธ์ ๊ธฐ๋ฅ์ด ์๋๋๋ผ๋ ์๋ก ์๊ฒฌ์ ๊ณต์ ํ๋ฉฐ ์ ๋๋ก ๋ ํ์ ์ ๊ฒฝํํ ์ ์์์ต๋๋ค. ์ค๊ฐ๊ฐ์ฒด๊ฐ ์๋ ๊ธฐ๋ฅ์ ๋งก์ ์ง์ ์ค๊ฐ๊ฐ์ฒด ๊ตฌํ ๋ฐ ํต์ ์ ํ์ง ๋ชปํ๋ค๋ ์์ฌ์์ด ์์ด ๋ค์ ํ๋ก์ ํธ์๋ ์์ด ๋ถ๋ด์ด ๋์ด๋ ๊ตฌํํ ๋ถ๋์ด ๋ ๋ง์ ๊ธฐ๋ฅ์ ๋งก์๋ณด๊ณ ์ถ์ต๋๋ค. |
๊น์ฌํ | ย ์ฒ์์ ๋ฌด์จ ์ฃผ์ ๋ฅผ ํ ์ง ํ ๋ก ํ๋ ์๊ฐ๋ ์ฆ๊ฑฐ์ ๊ณ , ์ปคํ ์ฑ ์์ด๋์ด๋ก ์์ํด์ ์ ํฌ PLRECIPE ํ๋ก์ ํธ๊น์ง ์ค๊ฒ๋ ๊ณผ์ ๋ ๊ต์ฅํ ์ฌ๋ฐ์์ต๋๋ค. ์ด๋ฒ ๋ฐฑ์๋ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉฐ ๊ทธ๋์ ์์
ํค์ ๋ฐฐ์ ๋ Mybatis ๋ฐฉ์์ผ๋ก ์กฐํ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ณ ํ
์คํธ ํด๋ณด๋ฉฐ, ํนํ xml ํ์ผ์์ ์๋ง์ resultMap ์ค๋ฅ๋ฅผ ์ ํ๊ณ sql ์ฟผ๋ฆฌ๋ฌธ์ ๋ณต์ตํ ์ ์์๋์ ์ด ์ข์์ต๋๋ค. ๋ํ JPA ๋ฐฉ์์ผ๋ก C(R)UD ๊ธฐ๋ฅ๋ํ ๊ตฌํํ๊ณ ํ
์คํธํ๋ฉฐ mybatis ๋ฐฉ์๊ณผ ์ด๋ค ์ฐจ์ด์ ์ด ์๋์ง ๋ช
ํํ๊ฒ ์ ์ ์์์ต๋๋ค. ย ๋ค๋ง ์ ๊ฐ ๋งก์ ๊ทธ๋ฃน ์๋น์ค ๊ธฐ๋ฅ์์ db์์ ์กฐ์ธ์ ํตํด ๋ค๋ฅธ ์๋น์ค์ ๊ฐ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ค๋๊ฒ ์๋ ์๋ฒฝํ์ง ์์ง๋ง ์ค msa ๋ฐฉ์์ ํตํด ๋ค๋ฅธ ์๋ฒ์์ feignclient๋ฅผ ํตํด ๋ถ๋ฌ์ค๊ณ ์ถ์๋๋ฐ ๊ทธ ๊ธฐ๋ฅ์ ๊ธฐํ๋ด ๋ชปํด์ ์ข ์์ฌ์ ์ต๋๋ค. ์ด ํ๋ก์ ํธ๋ฅผ ํ๋ก ํธ ๊ฐ๋ฐ ๋จ๊ณ๊น์ง ์ด์ด๋๊ฐ๋ค๋ฉด ๋ ๊ณ ๋ํ ํด๋ณด๊ณ ์ถ์ต๋๋ค. ๋ค๋ค ์ ๋ง ๊ณ ์๋ง์ผ์ จ์ต๋๋ค!! |