- ์๋น์ค ๊ฐ์
- ํ๋ก์ ํธ ์ผ์
- DB ERD
- ๊ธฐ์ ์คํ
- ๊ธฐ๋ฅ ์ค๋ช
- ์์ฐ ์์
- ํธ๋ฌ๋ธ ์ํ
- ํ ์๊ฐ
๐ ์ฒด๋ฆฌ ์จ๋ - ์ผ์์ ์๋กญ๊ฒ ๋์์ธํ๋ ๋ ์จ ํ๋ซํผ
์ฒด๋ฆฌ ์จ๋๋ ๋จ์ํ ๋ ์จ ์ ๋ณด ์ ๊ณต์ ๋์ด์ , ํตํฉ๋ ์ํ ์ ๋ณด ํ๋ซํผ์ ๋๋ค. ๋ ์จ ์์ธก๋ถํฐ, AI ๊ธฐ๋ฐ์ ๋ง์ถค ์์ ์ถ์ฒ, ์ปค๋ฎค๋ํฐ ๋ชจ์ ๊ด๋ฆฌ, ์ง๊ด์ ์ธ 1:1 ์์ ์ปค๋ฎค๋์ผ์ด์ ์ ์ด๋ฅด๊ธฐ๊น์ง ์ฌ๋ฌ๋ถ์ ์ผ์์ ํ์ธต ๋ ํ๋ถํ๊ฒ ๋ง๋ค์ด ์ค ๋ค์ํ ๊ธฐ๋ฅ์ ํ๋์ ํ๋ซํผ์์ ์ ๊ณตํฉ๋๋ค.
์ฃผ์ ๊ธฐ๋ฅ
๋ ์จ ์ ๋ณด ๋ฐ ์๋ณด: ์ค์๊ฐ ๋ ์จ ์ ๋ฐ์ดํธ์ ์ ํํ ์๋ณด๋ฅผ ํตํด, ํ๋ฃจ๋ฅผ ๋์ฑ ํจ๊ณผ์ ์ผ๋ก ๊ณํํ์ธ์. AI ๊ธฐ๋ฐ ์์ ์ถ์ฒ: AI ์ฑํ ์ ํตํด ์ฌ์ฉ์์ ๊ธฐํธ์ ๋ง๋ ์ท์ฐจ๋ฆผ์ ์ ์ํฉ๋๋ค. ๋ํ ์ฌ์ฉ์๊ฐ ์ํ๋ ์ ์ธ์ ์ด๋ฏธ์ง๋ก ์์ฑํด์ ์ ๊ณตํ ์ ์์ต๋๋ค. ์ปค๋ฎค๋ํฐ ๋ชจ์ ์์ฑ ๋ฐ ๊ด๋ฆฌ: ๊ฐ์ ๊ด์ฌ์ฌ๋ฅผ ๊ฐ์ง ์ฌ๋๋ค๊ณผ ์์ฝ๊ฒ ๋ชจ์์ ๋ง๋ค๊ณ , ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ์์ ์ปค๋ฎค๋์ผ์ด์ : 1:1 ์ฑํ ๊ณผ ํด๋ฝ๋ด ๋จ์ฒด ์ฑํ ๊ธฐ๋ฅ์ผ๋ก ์ปค๋ฎค๋ํฐ ๋ด์์์ ์ํต์ ๊ฐํํฉ๋๋ค.
2024๋ 1์ 29์ผ ~ 3์ 8์ผ
1์ฃผ์ฐจ (1.29 ~ 2.3):
- ์ฃผ์ ์ค์ ๋ฐ ๊ธฐ๋ฅ ์ ์
- ํ๋ก์ ํธ ์ฃผ์ ์ค์ ํ ๊ธฐ๋ฅ์ ์์๋ฅผ ๋ฐํ์ผ๋ก ํ๋ฉด์ ์์ ์์ฑ
- ํผ๊ทธ๋ง๋ฅผ ์ฌ์ฉํ์ฌ ๋๋ต์ ์ธ ํ์ด์ง ๋ ์ด์์ ๊ตฌ์ฑ
2์ฃผ์ฐจ (2.4 ~ 2.17):
- ํต์ฌ ๊ธฐ๋ฅ ๊ตฌํ
- ์น ์๋น์ค์ ํต์ฌ ๊ธฐ๋ฅ์ ํฌ์คํธ๋งจ(Postman)์ ํ์ฉํด ๊ตฌํ
- ๋ฆฌ์กํธ(React)๋ฅผ ์ด์ฉํ์ฌ ๊ฐ ํ์ด์ง ๊ฐ๋ฐ
3์ฃผ์ฐจ (2.18 ~ 2.25):
- ์ธํฐํ์ด์ค ๋ฐ ๋์์ธ
- ์ธํฐํ์ด์ค ๊ตฌํ๊ณผ ํ์ด์ง ๋์์ธ ์์ ์ ํตํ ์ฌ์ฉ์ ๊ฒฝํ(UX) ๊ฐ์
4์ฃผ์ฐจ (2.26 ~ 3.3):
- ํ
์คํธ ๋ฐ ์์ฐ ์ค๋น
- ํ์ ๊ฐ ๊ต์ฐจ ํ ์คํธ ์ค์
- ์์ฐ ์์ ์ ์
5์ฃผ์ฐจ (3.4 ~ 3.8):
- ์ต์ข
๋ฐํ ์ค๋น
- PPT ์ ์
- ๋ฐํ ๋ฆฌํ์ค ๋ฐ ์ค๋น ์์ (ํธ์ง๋จ)
์คํ๋ง ๋ถํธ๋ ์ฌ๋ฌ 3rd party ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ starter๋ผ๋ ๋ฌถ์ ์์กด์ฑ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจํค์ง๋ฅผ ์ด์ฉํ์ฌ Maven/gradle์์ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ํ์ฌ ๋ณ๋์ ๋ฒ์ ๊ด๋ฆฌ๊ฐ ํ์์๊ณ ๊ฐํธํ๊ฒ ์์กด์ฑ์ ์ง์ ํ ์ ์์ต๋๋ค. ์คํ๋ง ๋ถํธ๋ ๋ด์ฅ ์๋ฒ๋ฅผ ์ ๊ณตํจ์ผ๋ก์จ ๋ณ๋์ ์๋ฒ ์ค์น ์์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ ์ ์๊ฒ ํด์ค๋๋ค. ์ด ๋ด์ฅ ์๋ฒ๋ ๊ฐ๋ฐ์๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์๋ง ์ง์คํ ์ ์๊ฒ ํด์ฃผ๋ฉฐ, ๋ฐฐํฌ ๊ณผ์ ์ ๊ฐ์ํ์ํค๋ ๋ฐ ํฐ ๋์์ ์ค๋๋ค. ์คํ๋ง ๋ถํธ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ๋ชจ๋ํฐ๋ง, ๋ก๊น , ๋ณด์ ์ค์ ๋ฑ ์ด์์ ํ์ํ ๊ธฐ๋ฅ๋ค์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด์๊ณผ ๊ด๋ฆฌ๊ฐ ํธ๋ฆฌํด์ง๊ณ ์์ ์ฑ์ด ํฅ์๋ฉ๋๋ค.
์คํ๋ง ๋ถํธ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ๋ชจ๋ํฐ๋ง, ๋ก๊น , ๋ณด์ ์ค์ ๋ฑ ์ด์์ ํ์ํ ๊ธฐ๋ฅ๋ค์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด์๊ณผ ๊ด๋ฆฌ๊ฐ ํธ๋ฆฌํด์ง๊ณ ์์ ์ฑ์ด ํฅ์๋ฉ๋๋ค. ๋ฆฌ์ฝ์ผ์ ๊ตฌ๋ ๊ธฐ๋ฐ์ ์ํ ๊ด๋ฆฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๋ ์ํ๊ฐ ๋ณ๊ฒฝ๋ ๋ ๊ด๋ จ๋ ์ปดํฌ๋ํธ๋ง ์ฌ๋ ๋๋ง๋๋๋ก ํด ์ฑ๋ฅ ์ต์ ํ์ ๊ธฐ์ฌํฉ๋๋ค. ๋ถํ์ํ ์ฌ๋ ๋๋ง์ ๋ฐฉ์งํ๋ฉด์๋ ์ํ ๋ณํ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ๋ฆฌ์ฝ์ผ์ ์ปดํฌ๋ํธ ๊ฐ ์ํ๋ฅผ ์ฝ๊ฒ ๊ณต์ ํ ์ ์๊ฒ ํด์ฃผ๋ฉฐ, ์ํ๋ฅผ ๊ธ๋ก๋ฒ๋ก ๊ด๋ฆฌํ ํ์๊ฐ ์๋ ๋ณต์กํ ์ ํ๋ฆฌ์ผ์ด์ ์ ํนํ ์ ์ฉํฉ๋๋ค. ์ปจํ ์คํธ(Context) API๋ ํ๋กญ์ค ๋๋ฆด๋ง(Props Drilling) ์์ด๋ ์ํ๋ฅผ ๊ณต์ ํ ์ ์์ต๋๋ค. ๋ฆฌ์ฝ์ผ์ ์ํ์ ๋ก์ง์ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๋จ์๋ก ์ฝ๊ฒ ๋ชจ๋ํํ ์ ์์ต๋๋ค. ์ด๋ ํฐ ํ๋ก์ ํธ์์ ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ๊ณผ ์ ์ง ๋ณด์์ฑ์ ํฅ์์ํค๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
Redis๋ ์ธ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ ์คํ ์ด๋ก, ๋์คํฌ ๊ธฐ๋ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋นํด ํจ์ฌ ๋น ๋ฅธ ๋ฐ์ดํฐ ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ๋ฅผ ์ ๊ณตํฉ๋๋ค. ํ ํฐ ๊ฒ์ฆ์ด๋ ๊ฐฑ์ ์์ ์, ์ฌ์ฉ์์ ์์ฒญ ์ฒ๋ฆฌ ์๊ฐ์ ๋ํญ ์ค์ผ ์ ์์ต๋๋ค. Redis์ ๋ฐ์ดํฐ ๋ง๋ฃ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ๋ฆฌํ๋ ์ ํ ํฐ์ ์ ํจ ๊ธฐ๊ฐ์ ์ฝ๊ฒ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ํ ํฐ์ ๋ํ ๋ง๋ฃ ์๊ฐ์ ์ค์ ํด๋๋ฉด, Redis๊ฐ ์๋์ผ๋ก ๋ง๋ฃ๋ ํ ํฐ์ ์ ๊ฑฐํด์ค๋๋ค. ์ด๋ ์์คํ ์ ์์์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. Redis๋ ํ์ฅ์ฑ์ด ๋ฐ์ด๋์ ๋๊ท๋ชจ ์ฌ์ฉ์ ๊ธฐ๋ฐ์ ๊ฐ์ง ์ ํ๋ฆฌ์ผ์ด์ ์๋ ์ ํฉํฉ๋๋ค. ๋ถ์ฐ ์์คํ ํ๊ฒฝ์์ Redis ํด๋ฌ์คํฐ๋ฅผ ํตํด ๋ฐ์ดํฐ ๋ถ์ฐ๊ณผ ๋ณต์ ๋ฅผ ๊ด๋ฆฌํ ์ ์์ผ๋ฉฐ, ์ด๋ฅผ ํตํด ๋์ ๊ฐ์ฉ์ฑ๊ณผ ํจ๊ป ํธ๋ํฝ ์ฆ๊ฐ์ ์ ์ฐํ๊ฒ ๋์ํ ์ ์์ต๋๋ค. ์ก์ธ์ค ํ ํฐ๊ณผ ๋ฆฌํ๋ ์ ํ ํฐ์ Redis์ ์ ์ฅํ๋ฉด, ํ ํฐ์ ๋ ธ์ถ ์ํ์ ์ค์ผ ์ ์์ต๋๋ค. ํ ํฐ์ ํด๋ผ์ด์ธํธ ์ธก์ด ์๋ ์๋ฒ ์ธก์์ ๊ด๋ฆฌํจ์ผ๋ก์จ, ํ ํฐ ํ์ทจ์ ๊ฐ์ ๋ณด์ ์ํ์ผ๋ก๋ถํฐ ๋ณดํธํ ์ ์์ต๋๋ค. ๋ํ, Redis๋ SSL/TLS๋ฅผ ํตํ ๋ฐ์ดํฐ ์ํธํ์ ์ ๊ทผ ์ ์ด ๋ชฉ๋ก(ACL)์ ์ง์ํ์ฌ ๋ณด์์ฑ์ ๋์ฑ ๊ฐํํ ์ ์์ต๋๋ค. ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉ์ ์ธ์ ์ ๋ณด๋ฅผ Redis์ ์ ์ฅํ๋ฉด, ์ธ์ ์ ๋ณด์ ๋น ๋ฅธ ์กฐํ์ ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํฉ๋๋ค. ์ก์ธ์ค ํ ํฐ๊ณผ ๋ฆฌํ๋ ์ ํ ํฐ์ ์ํ๋ฅผ ์ค์๊ฐ์ผ๋ก ํ์ธํ๊ณ ๊ด๋ฆฌํ ์ ์์ด, ์ฌ์ฉ์ ์ธ์ฆ๊ณผ ์ธ์ ๊ด๋ฆฌ๋ฅผ ๋์ฑ ํจ์จ์ ์ผ๋ก ์ํํ ์ ์์ต๋๋ค. ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ์ ๊ฐ์ด ๋ถ์ฐ๋ ์์คํ ํ๊ฒฝ์์ Redis๋ฅผ ํตํด ํ ํฐ์ ์ค์ ์ง์ค์์ผ๋ก ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ์ด๋ ํ ํฐ ๊ด๋ฆฌ์ ๋ณต์ก์ฑ์ ์ค์ด๊ณ , ์์คํ ์ ๋ฐ์ ์ธ์ฆ ๋ฉ์ปค๋์ฆ์ ํต์ผํ ์ ์๋ ์ฅ์ ์ ์ ๊ณตํฉ๋๋ค.
์๋ํ๋ ํ๋ก์ธ์ค๋ฅผ ํตํด ์ํํธ์จ์ด ๋ณ๊ฒฝ ์ฌํญ์ ๋ ๋น ๋ฅด๊ฒ ํตํฉํ๊ณ ๋ฐฐํฌํ ์ ์์ต๋๋ค. ์ด๋ ๊ฐ๋ฐ ํ์ด ์๋ก์ด ๊ธฐ๋ฅ์ ์ฌ์ฉ์์๊ฒ ๋ ๋นจ๋ฆฌ ์ ๊ณตํ ์ ์๊ฒ ํด์ฃผ๋ฉฐ, ์์ฅ์ ์ ์ํ๊ฒ ๋์ํ ์ ์๋ ๋ฅ๋ ฅ์ ํฅ์์ํต๋๋ค. ์ง์์ ์ธ ํ ์คํ ๊ณผ ํตํฉ์ ํตํด ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ง์ ์ง์์ ์ผ๋ก ๋ชจ๋ํฐ๋งํ๊ณ ๋ณด์ฆํ ์ ์์ต๋๋ค. ์๋ํ๋ ํ ์คํธ๋ ๊ฐ๋ฐ ๊ณผ์ ์์ ๋ฐ์ํ ์ ์๋ ์ค๋ฅ๋ฅผ ์ค์ฌ์ฃผ๋ฉฐ, ์ ํ์ ์์ ์ฑ์ ๋์ฌ์ค๋๋ค. CI/CD๋ฅผ ํตํด ์์ ๋จ์๋ก ์์ฃผ ๋ฐฐํฌํจ์ผ๋ก์จ, ๊ฐ ๋ฐฐํฌ์์ ๋ฐ์ํ ์ ์๋ ๋ฆฌ์คํฌ๋ฅผ ์ต์ํํฉ๋๋ค. ์์ ๋ณ๊ฒฝ ์ฌํญ์ด๋ผ๋ฉด ๋ฌธ์ ๋ฐ์ ์ ๋กค๋ฐฑํ๊ธฐ๋ ๋ ์ฌ์์ง๋๋ค. ๋ฐฐํฌ ๊ณผ์ ์ ์๋ํ๋ ๋ฐ๋ณต์ ์ธ ์๋ ์์ ์ ์ค์ฌ์ค๋๋ค. ์ด๋ก ์ธํด ๊ฐ๋ฐ ํ์ ์ฝ๋ฉ๊ณผ ์ ํ ๊ฐ์ ์ ๋ ๋ง์ ์๊ฐ์ ํ ์ ํ ์ ์์ผ๋ฉฐ, ์ ๋ฐ์ ์ธ ์์ฐ์ฑ์ด ํฅ์๋ฉ๋๋ค.
JWT๋ ํ์ํ ๋ชจ๋ ์ ๋ณด๋ฅผ ์์ฒด์ ์ผ๋ก ํฌํจํ๊ณ ์์ต๋๋ค. ์ด ํ ํฐ์๋ ์ฌ์ฉ์์ ๋ํ ์ ๋ณด, ํ ํฐ์ ๋ฐํ์, ๋ง๋ฃ ์๊ฐ ๋ฑ์ด ํฌํจ๋์ด ์์ด, ๋ณ๋์ ์ ์ฅ์์ ์ ๊ทผํ์ง ์๊ณ ๋ ํ ํฐ์ ํตํด ์ฌ์ฉ์ ์ธ์ฆ ๋ฐ ์ ๋ณด ๊ตํ์ ํ ์ ์์ต๋๋ค. JWT๋ ์ธ์ ์ํ๋ฅผ ์๋ฒ์ ์ ์ฅํ์ง ์๊ธฐ ๋๋ฌธ์, ์๋ฒ์ ์์์ ์ ์ฝํ ์ ์๊ณ , ์ด๋ก ์ธํด ์์คํ ์ ํ์ฅ์ฑ์ด ํฅ์๋ฉ๋๋ค. ๊ฐ ์์ฒญ๋ง๋ค ํ ํฐ์ด ์ ์ก๋๊ธฐ ๋๋ฌธ์, ์๋ฒ๋ ์๋น์ค๊ฐ ํ์ฅ๋์ด๋ ์ฌ์ฉ์ ์ธ์ฆ์ ์ ์งํ ์ ์์ต๋๋ค. JWT๋ ๋์งํธ ์๋ช ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์, ํ ํฐ์ ๋ด์ฉ์ด ๋ณ๊ฒฝ๋์๋์ง ์ฌ๋ถ๋ฅผ ๊ฒ์ฆํ ์ ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก HMAC ์๊ณ ๋ฆฌ์ฆ ๋๋ RSA์ ๊ณต๊ฐํค/๊ฐ์ธํค ์์ ์ฌ์ฉํ์ฌ ์๋ช ๋ฉ๋๋ค. ์ด๋ก ์ธํด ์ ๋ณด์ ์๋ณ์กฐ๋ฅผ ๋ฐฉ์งํ ์ ์์ต๋๋ค. ์ธ์ฆ ์ ๋ณด๋ฅผ ๊ฐ ์์ฒญ๋ง๋ค ์๋ฒ๋ก ์ ์กํจ์ผ๋ก์จ, ์ธ์ ์ ์ ์งํ ํ์๊ฐ ์์ด์ง๋๋ค. ์ด๋ API ์๋น์ค๋ ๋ถ์ฐ๋ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ์์ ํจ์จ์ ์ธ ์ธ์ฆ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.
JPA๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ฐ์ฒด ์งํฅ์ ์ธ ๋ฐฉ์์ผ๋ก ์ฝ๊ฒ ๋ค๋ฃฐ ์ ์์ต๋๋ค. ๊ฐ๋ฐ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ์ ์ง์ ๋ค๋ฃจ๋ ๋์ , ์๋ฐ ๊ฐ์ฒด(์ํฐํฐ)๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์กฐ์ํ ์ ์์ผ๋ฉฐ, JPA๊ฐ ์ด๋ฌํ ๊ฐ์ฒด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ ๊ฐ์ ๋งคํ์ ๊ด๋ฆฌํฉ๋๋ค. ์ด๋ก ์ธํด ๊ฐ๋ฐ์๋ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ(OOP)์ ์ด์ ์ ์ต๋ํ ํ์ฉํ ์ ์์ต๋๋ค. JPA๋ ๋ฐ๋ณต์ ์ธ CRUD(Create, Read, Update, Delete) ์ฐ์ฐ ์ฝ๋๋ฅผ ๋ํญ ์ค์ฌ์ค๋๋ค. JPA๋ฅผ ์ฌ์ฉํ๋ฉด ๋ณต์กํ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๊ณ , ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ๋ฐ ์์์ ๊ด๋ฆฌํ๋ ๋ฑ์ ์ ์์ค ์์ ์ ์ง์ ์ฒ๋ฆฌํ ํ์๊ฐ ์์ด, ๊ฐ๋ฐ์๊ฐ ๋น์ฆ๋์ค ๋ก์ง์ ๋ ์ง์คํ ์ ์๊ฒ ๋ฉ๋๋ค. JPA๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ ๋ฆฝ์ ์ธ ํ๋ก๊ทธ๋๋ฐ์ด ๊ฐ๋ฅํ๋๋ก ์ค๊ณ๋์์ต๋๋ค. ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ํน์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ข ์๋์ง ์๋๋ก ํ๋ฉฐ, ํ์์ ๋ฐ๋ผ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ต์ฒดํ ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋์ ๋๋์ ์ธ ์์ ์์ด ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. JPA๋ ์๋ฐ ํ๋ซํผ์ ๊ณต์ ORM ํ์ค์ ๋๋ค. ๋ค์ํ JPA ๊ตฌํ์ฒด(์: Hibernate, EclipseLink, OpenJPA ๋ฑ)๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ์ด๋ค์ JPA ํ์ค์ ๋ฐ๋ฅด๊ธฐ ๋๋ฌธ์, ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค๋ฅธ JPA ๊ตฌํ์ผ๋ก ์ฝ๊ฒ ์ ํํ ์ ์์ต๋๋ค. JPA๋ JPQL(Java Persistence Query Language)์ ํตํด ๋ณต์กํ ์ฟผ๋ฆฌ๋ฅผ ์ฝ๊ฒ ์์ฑํ ์ ์๊ฒ ํฉ๋๋ค. ์ด๋ SQL๊ณผ ์ ์ฌํ์ง๋ง, ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ์ด ์๋ ์ํฐํฐ ๊ฐ์ฒด์ ๋ํด ์์ ํ๋ค๋ ์ ์์ ์ฐจ์ด๊ฐ ์์ต๋๋ค. ๋ํ, Criteria API๋ฅผ ํตํด ํ์ -์ธ์ดํ ์ฟผ๋ฆฌ๋ฅผ ํ๋ก๊ทธ๋๋งคํฑํ๊ฒ ์์ฑํ ์ ์์ต๋๋ค. JPA๋ ์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ํด 1์ฐจ ์บ์์ 2์ฐจ ์บ์๋ฅผ ์ง์ํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ฐ๋ณต๋ ๋ฐ์ดํฐ ์์ฒญ์ ๋ํด ๋น ๋ฅด๊ฒ ์๋ตํ ์ ์์ผ๋ฉฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ถํ๋ฅผ ์ค์ผ ์ ์์ต๋๋ค. JPA๋ ํธ๋์ญ์ ๊ด๋ฆฌ๋ฅผ ์ฝ๊ฒ ํ ์ ์๊ฒ ๋์์ฃผ๋ฉฐ, ์ํฐํฐ์ ์ํ ๋ณ๊ฒฝ์ ์๋์ผ๋ก ๊ฐ์งํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋๊ธฐํํฉ๋๋ค. ์ด๋ก ์ธํด ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ์ ์งํ๋ ์์ ์ด ๊ฐํธํด์ง๋๋ค.
์ ํ๋ธ ๋งํฌ https://www.youtube.com/watch?v=S4SKvyfrk1Q
ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉฐ ๋ง์ฃผ์น ๊ธฐ์ ์ ์ธ ๋ฌธ์ ์ ๊ทธ ํด๊ฒฐ ๊ณผ์ ์ ๊ณต์ ํฉ๋๋ค.
- ์ํฉ: ํ๋ก์ ํธ ๋ฐฐํฌ ๊ณผ์ ์์ ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ํ์์ด ๋ฐ์
- ํด๊ฒฐ์ฑ : ์ ํจ์ค ์๋ฒ์ ์ค์ ๊ณต๊ฐ์ ์กฐ์ ํ์ฌ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ํ์ฅ, ํ๋ ๋๋ผ์ด๋ธ ์ผ๋ถ๋ฅผ ์ถ๊ฐ ๋ฉ๋ชจ๋ฆฌ๋ก ํ์ฉ
- ์ํฉ: ๋ฆฌ์กํธ ๋น๋ ๊ณผ์ ์ค Node.js ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ๋ฌธ์ ๋ฐ์
- ํด๊ฒฐ์ฑ
:
cross-env
์ฌ์ฉํ์ฌ Node.js ํ๋ก์ธ์ค ๋ฉ๋ชจ๋ฆฌ ํ๊ณ ํ์ฅ, ๋น๋ ๋ฐ ๋ฐฐํฌ ๊ณผ์ ์ฑ๊ณต์ ์๋ฃ
- ์ํฉ: CI/CD ํ์ดํ๋ผ์ธ ๊ตฌ์ถ ๋ฐ ๋ณด์์ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ ๋ณดํธ ํ์
- ํด๊ฒฐ์ฑ
:
- DB ์๋ฒ ์ ๋ณด์ OpenAI API ํค๋ฅผ ๊น ์๋ธ๋ชจ๋๋ก ๊ด๋ฆฌ
- Axios ์ธ์คํด์ค ์ค์ ์ผ๋ก ์๋ฒ ์์ฒญ URL ํ๊ฒฝ๋ณ์๋ก ์ถ์ํ, ๋ณด์ ๊ฐํ
- ์ํฉ: ์ธ์ฆ ํ ํฐ ๋ง๋ฃ๋ก ์ธํ ์ ๊ทผ ๋ฌธ์
- ํด๊ฒฐ์ฑ : Axios ์ธํฐ์ ํฐ ์ฌ์ฉ, 403 ์๋ฌ ๋ฐ์ ์ ํ ํฐ ์๋ ๊ฐฑ์ ๋ฐ ์๋ ์์ฒญ ์ฌ์ํ
- ์ํฉ: ํ์์ ์กฐ๊ธฐ ์ทจ์ ์ผ๋ก ์ธํ ์ธ์ ์ดํ
- ํด๊ฒฐ์ฑ : ์ธ์์ธ๊ณ ๊ณผ์ ์ ํตํด ๋ฌธ์ ํด๊ฒฐ, ๋ด๋น ๊ธฐ๋ฅ ์ฑ๊ณต์ ์์ฑ