์ฐ๋ฆฌ๋ ๋ก๊ทธ์ธ ๊ธฐ๋ฅ์ JWT๋ฅผ ์ด์ฉํด ๊ตฌํํ๋ค.
JWT(JSON WEB TOKEN)๋ ์น์์ ์ฌ์ฉ๋๋ JSON ํ์์ ํ ํฐ์ ๋ํ ํ์ค ๊ท๊ฒฉ์ผ๋ก, ์ฃผ๋ก ์ฌ์ฉ์์ ์ธ์ฆ ๋๋ ์ธ๊ฐ ์ ๋ณด๋ฅผ ์๋ฒ์ ํด๋ผ์ด์ธํธ๊ฐ์ ์์ ํ๊ฒ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค.
๋ก๊ทธ์ธ ์ธ์ฆ ๋ฐฉ์์์ localhost์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
auth ํ์ด์ง์์ ์๋ง๋ ์ด๋ฉ์ผ๊ณผ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ์กํ๋ค๋ฉด, JWT๋ฅผ cookie์ ๋ด์์ ๋ณด๋ด๋ ํ์์ผ๋ก ์ค์ ํ๋ค.
Same-site:none, Secure:true
๋ก ์ค์ ํจ์ผ๋ก์จ http์์๋ ์ฟ ํค๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๊ฒ ํ๋ค. ํ์ง๋ง localhost:3000/์ https๊ฐ ์๋ http ์ฌ์ดํธ๋ก ํด๋น ์ฟ ํค๋ฅผ ๊ฐ์ ธ์ค์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ์ธ์ฆ์ ๋ณด๋ฅผ ๋ฐ์ง ๋ชปํด์ local ํ๊ฒฝ์์ api๋ฅผ ์์ฒญํ๋ฉด 401 ERROR
๊ฐ ๋ฐ์ํ๋ค.
MSW(Mock Service Worker) ๋์
MSW๋, API Mocking ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก, ์๋ฒํฅ์ ๋คํธ์ํฌ ์์ฒญ์ ๊ฐ๋ก์ฑ์ ๋ชจ์ ์๋ต(Mocked response)์ ๋ณด๋ด์ฃผ๋ ์ญํ ์ ํฉ๋๋ค. ๋ฐ๋ผ์, Mock Service Worker(MSW) ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํ๋ฉด, Mock ์๋ฒ๋ฅผ ๊ตฌ์ถํ์ง ์์๋ API๋ฅผ ๋คํธ์ํฌ ์์ค์์ Mocking ํ ์ ์์ต๋๋ค.
์ฐธ์กฐ : Mocking์ผ๋ก ์์ฐ์ฑ๊น์ง ์ฑ๊ธฐ๋ FE ๊ฐ๋ฐ
์ง๋ ๊ฒ์๋ฌผ์์ ์ฐ๋ฆฌ๋ SEO๋ฅผ ์ํด์ NEXT.JS์ SSG ๋๋๋ง ๋ฐฉ์์ ์ ํํ๋ค. ํ์ง๋ง MSW๋ฅผ ๋์ ํด์ ์์ ์ ํ๋๋ฐ MSW๊ฐ API์์ฒญ์ ๊ฐ๋ก์ฑ๊ธฐ ์ ์ pre-rendering์ ์ํด ์ด๋ฏธ ๋ฐ์ดํฐ๋ฅผ ์์ฒญ ๋ฐ์ ์ถ๋ ฅํ๊ธฐ ๋๋ฌธ์ MSW๊ฐ ์๋ํ์ง ์์๋ ๊ฒ์ด๋ค.
์์ผ๋ก Back-end์ Front-end์์ ์์ ์๋๋ฅผ ์ฌ๋ฆฌ๊ธฐ ์ํด์๋ MSW๋ฅผ ๊ณ์ ์ฌ์ฉํ๊ธฐ๋ก ์ฝ์๋ ์ํ์์ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ์ง๋ฉดํด์ ์ด๋ป๊ฒ ํด์ผํ ์ง ํ์๊ณผ ์ด์ผ๊ธฐ๋ฅผ ๋๋ด๋ค.
๊ทธ ๊ฒฐ๊ณผ ์ฐ๋ฆฌ๋ ๊ทธ๋์ ์์ ํ๋ Next.Js๋ฅผ ํฌ๊ธฐํ๊ณ React.Js๋ก migrationํ ๋ค CSR ๋ฐฉ์์ ์ฌ์ฉํ๊ธฐ๋ก ํ๋ค.
Next.Js์์ React.Js๋ก ์ฎ๊ธฐ๊ธฐ๋ก ํ์ ๋ ๊ฐ์ฅ ์ ๊ฒฝ์ฐ์๋ ๋ถ๋ถ์ด ์์๋ค. ์ฐ๋ฆฌ๋ ์? Next๋ฅผ ์ ํํ์ง?
ํด๋น ์ง๋ฌธ์ ๋ต์ ์ ๊ฒ์๋ฌผ์ ์๋ค.
์คํฐ๋๋๊น SEO๊ฐ ๊ผญ ํ์ํ์ง ์๋์? ๊ทธ๋ฌ๋ฉด ์ ํฌ SSR์ด๋ SSG๋ฅผ ์ฌ์ฉํด๋ณด๋๊ฒ ์ด๋จ๊น์?!
๋ง๋ค. ์ฐ๋ฆฌ๋ SEO์ ๋์์ด ๋๋ SSR ๋๋ SSG๋ฅผ ์ ํํ์๋ค. ํ์ง๋ง CSR์ ์ ํํ๋ฉด SEO๋ฅผ ํฌ๊ธฐํด์ผํ๋...๋ผ๊ณ ์๊ฐํ๊ณ , ํด๋น ๋ถ๋ถ์ ๋ํด์ ๊ฒ์์ ํ๋ค.
๊ฒ์ ๊ฒฐ๊ณผ ์ฐ๋ฆฌ๋ ํด๋ต์ ์ฐพ์ ์ ์์๋๋ฐ, AWS์ S3๋ฅผ ์ด์ฉํด ๋ฐฐํฌ๋ฅผ ํ๊ณ , Cloud Front์ Ramda@Edge๋ฅผ ์ด์ฉํ๋ฉด CSR์์ ๋ถ์กฑํ SEO ์ต์ ํ๋ฅผ ๋์์ค๋ค๋ ๊ธ์ ์ฝ์๋ค. ํด๋น ๋ถ๋ถ์ ์ถํ์ ๊ณต๋ถ๋ฅผ ํ ๋ค์ ๋จ๊ธธ ์์ ์ด๋ค.