๐ ๋ฐฐ์ด ๊ฒ
ํ๋ก ํธ์๋(React) ๋ฐฐํฌ ๋ฐฉ๋ฒ ๊ณ ๋ฏผ
(์ด์ ๊ธ์ ๋จ๊ฒผ์ง๋ง) ์ฝ๋์ค์ฟผ๋์์์ 3์ฃผ๊ฐ์ ๋ง์ง๋ง ํ ํ๋ก์ ํธ๋ฅผ ์์ํ๋ค. ์ด๋ฒ ํ๋ก์ ํธ๋ FE(2๋ช )/BE(1๋ช )์ผ๋ก BE๋ฅผ ๋ด๋นํ๋ค.
FE - react / BE - Spring๋ฅผ ์ฌ์ฉํ๋ค. BE๊ฐ FE ์น๊น์ง ๋ฐฐํฌ๋ฅผ ๋ด๋นํ๊ธฐ๋ก ํ๋ค.
React๋ SPA(Single Page Application), CSR(Client side rendering)์ผ๋ก build ํ๋ฉด ์ ์ ํ์ผ์ด ์๊ธด๋ค.
์ด๋ฅผ ๋ฐฐํฌํ๋ฉด ๋๊ฒ ๋ค ์๊ฐํ๊ณ 3๊ฐ์ง๊ฐ ๋ ์ฌ๋๋ค.
Case 1 : Spring + react ๋ฌถ์ด ๋ฐฐํฌํ๊ธฐ
react๋ฅผ ๋น๋ํ๋ฉด /build ์ ์ ๋ฆฌ์์ค ํ์ผ์ spring์ src/main/resources/main/static ์ ๋ฃ์ด ๋ฐฐํฌํ๋ค.
์ฅ์
- ํ ๋ฒ์ ๋ฌถ์ด ๋ฐฐํฌํ ์ ์๋ค.
- ๊ฐํธํ๋ค
- ์๋ฒ ํ๋๋ก ๋์ธ ์ ์๋ค.
๋จ์
- FE/BE ๊ฒฐ๊ณผ, ์๋ฒ ๊ตฌ๋ถ์ด ๋์ด ์์ง ์๋ค.
- BE๋ง ํ์ฅํ๊ธฐ ์ด๋ ต๋ค.
Case 2 : nginx + react ๋ฐฐํฌํ๊ธฐ
react ๋น๋ ๊ฒฐ๊ณผ์ ์ ์ ๋ฆฌ์์ค ํ์ผ์ nginx์ ๊ฐ์ ์น์๋ฒ์ ์ฐ๊ฒฐํ์ฌ ๋ฐฐํฌํ๋ค.
์ฅ์
- FE/BE ์๋ฒ ๋ถ๋ฆฌํ์ฌ ๋ฐฐํฌํ ์ ์๋ค.
- FE๋ง ์๋ฒ ํ์ฅ ๊ฐ๋ฅํ๋ค.
๋จ์
- BE์์ CORS ๋ฌธ์ ํด๊ฒฐํด์ผ ํ๋ค.
Case 3 : AWS์ S3 + CloudFront๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐฐํฌํ๋ค.
react ๋น๋ ๊ฒฐ๊ณผ์ ์ ์ ๋ฆฌ์์ค ํ์ผ์ S3์ ์ฌ๋ฆฐ๋ค. ์ ์ ๋ฆฌ์์ค ํ์ผ์ด๊ธฐ์ S3์์ index.html๋ง ์ฐ๊ฒฐ์์ผ์ฃผ๋ฉด ํ์ํ ๋ฆฌ์์ค๋ฅผ s3๋งํฌ๋ก ์์ฒญํด ๋ฐ๋๋ค. FE๋ฅผ ์๋ฒ ์์ด ๋ฐฐํฌํ ์ ์๋ค. ์ฌ๊ธฐ์ CloudFront์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ฉด ๋ ์ข๋ค. ๋ณ๋์ ์ํ ์ฝ๋ ์ง์ ๊ณผ, AWS ์ ์ธ๊ณ CDN์ ์ ์ ๋ฆฌ์์ค๋ฅผ ๋ณด๋ด ์บ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
Case 3์ผ๋ก ์ผ๋จ ์ฑ๊ณต์ (?)์ผ๋ก ๋ฐฐํฌํ๋ค. ์ด ๊ณผ์ ์ ๋ฌธ์ํํ์๋ค.
๋ํ ์ผํ ์ต์ ์ค์ ์ ๊ฑด๋๋ฆฌ์ง ๋ชปํ๋ค. ํ๋ก์ ํธ๊ฐ ๋ฐ์ ํ๋ฉฐ ์ฝ์ง ๊ธฐ๋๋ฅผ(?) ํด๋ณธ๋ค.
๋ฌด๋ฃ ์ ๊ณต๋๋ CloudFront ์บ์ ๋ฌดํจํ ์๊ฐ ์๊ฐ๋ณด๋ค ์ ์ด ๊ณผ๊ธ์ด ๋๋ ต๋ค.
๐ Keep
- ์ฒ์ ๋ณด๋ ๊ธฐ์ ์ ์ค์ต, ํ์ตํ๊ณ ์ ๋ฆฌํ์ฌ ๊ธ์ ์์ฑํ๋ค.!
๐ฅProblem
- ์ด์ ๋ชปํ๋ ์ฐ์ฑ ์ ํ๋ค. ์ด์ ์ด๋์ ํด๋ณด์
๐ Try
- ๋ด์ผ ํธ์์ 3์ธํธ ํด๋ณด์!
๋๊ธ0