Next.js ๋ฐฐํฌ ๋ง์คํฐํ๊ธฐ. Vercel, Netlify, AWS ๋ฑ ๋ค์ํ ํ๊ฒฝ์์ ์ต๊ณ ์ฑ๋ฅ๊ณผ ๊ธ๋ก๋ฒ ํ์ฅ์ฑ์ ์ํ ์ต์ ํ ๋ฐฉ๋ฒ์ ์์๋ณด์ธ์.
Next.js ๋ฐฐํฌ: ๊ธ๋ก๋ฒ ํ์ฅ์ ์ํ ํ๋ซํผ๋ณ ์ต์ ํ
Next.js ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌํ๋ ๊ฒ์ ๋จ์ํ ์ฝ๋๋ฅผ ์๋ฒ์ ํธ์ํ๋ ๊ฒ ์ด์์ ๊ณผ์ ์ ๋๋ค. ์ ์ธ๊ณ ์ฌ์ฉ์๋ฅผ ๋์์ผ๋ก ์ต์ ์ ์ฑ๋ฅ, ํ์ฅ์ฑ, ๋น์ฉ ํจ์จ์ฑ์ ๋ฌ์ฑํ๋ ค๋ฉด ํ๋ซํผ๋ณ ์ต์ ํ๋ฅผ ์ดํดํ๊ณ ํ์ฉํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. Next.js๋ ํ์ด๋ธ๋ฆฌ๋ ๋ ๋๋ง ๊ธฐ๋ฅ(SSR, SSG, ISR, CSR)์ผ๋ก ์์ฒญ๋ ์ ์ฐ์ฑ์ ์ ๊ณตํ์ง๋ง, ์ด ์ ์ฐ์ฑ์ ๋ฐฐํฌ ์ ๋ต์ด ์ ํํ ํธ์คํ ํ๊ฒฝ์ ๋ง์ถฐ์ ธ์ผ ํจ์ ์๋ฏธํ๊ธฐ๋ ํฉ๋๋ค. ์ด ํฌ๊ด์ ์ธ ๊ฐ์ด๋์์๋ ๋ค์ํ ์ธ๊ธฐ ํ๋ซํผ์์ Next.js ์ ํ๋ฆฌ์ผ์ด์ ์ ์ต์ ํํ๋ ๋ฐฉ๋ฒ์ ํ๊ตฌํ์ฌ, ์ ์ธ๊ณ ์ฌ์ฉ์๋ค์ด ๋ฒ๊ฐ์ฒ๋ผ ๋น ๋ฅธ ๋ก๋ฉ ์๊ฐ๊ณผ ์ํํ ์ํธ์์ฉ์ ๊ฒฝํํ ์ ์๋๋ก ๋ณด์ฅํฉ๋๋ค.
ํ๋ซํผ๋ณ ์ต์ ํ๊ฐ ์ค์ํ ์ด์
Next.js ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณธ์ง์ ์ผ๋ก ๋น๋ ์์ (SSG), ์์ฒญ ์์ (SSR), ๋๋ ์ ์ง์ (ISR)์ผ๋ก HTML์ ์์ฑํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋์ ์ธ ๋ ๋๋ง ๋ชจ๋ ๋ฒ์๋ ๊ธฐ๋ฐ ์ธํ๋ผ๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฝํ ์ธ ์ ๊ณต ํจ์จ์ฑ์ ์ค์ํ ์ญํ ์ ํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. "ํ๋์ ๋ฐฉ์์ด ๋ชจ๋ ๊ฒ์ ํตํ๋" ๋ฐฐํฌ ์ ๊ทผ ๋ฐฉ์์ ์ข ์ข suboptimalํ ์ฑ๋ฅ, ์๊ฑฐ๋ฆฌ ์ฌ์ฉ์์ ์ง์ฐ ์๊ฐ ์ฆ๊ฐ, ๋์ ์ด์ ๋น์ฉ, ๊ทธ๋ฆฌ๊ณ ํ๋ซํผ ๊ณ ์ ๊ธฐ๋ฅ์ ํ์ฉํ ๊ธฐํ๋ฅผ ๋์น๋ ๊ฒฐ๊ณผ๋ก ์ด์ด์ง๋๋ค.
ํ๋ซํผ๋ณ ์ต์ ํ๋ฅผ ํตํด ๋ค์์ ํ ์ ์์ต๋๋ค:
- ์ง์ฐ ์๊ฐ ๊ฐ์: ์ฃ์ง ํจ์(Edge Functions)๋ ์ฝํ ์ธ ์ ์ก ๋คํธ์ํฌ(CDN)๋ฅผ ํตํด ์ฌ์ฉ์์ ๋ ๊ฐ๊น์ด ๊ณณ์ ์ปดํจํ ์ ๋ฐฐํฌํ์ฌ ๋ฐ์ดํฐ๊ฐ ์ด๋ํด์ผ ํ๋ ๋ฌผ๋ฆฌ์ ๊ฑฐ๋ฆฌ๋ฅผ ์ต์ํํฉ๋๋ค.
- ํ์ฅ์ฑ ํฅ์: ์์์ ๋ฐ๋ผ ์๋์ผ๋ก ํ์ฅ๋๋ ์๋ฒ๋ฆฌ์ค ํจ์๋ฅผ ํ์ฉํ์ฌ ์๋ ๊ฐ์ ์์ด ํธ๋ํฝ ๊ธ์ฆ์ ์ฒ๋ฆฌํฉ๋๋ค.
- ์ฑ๋ฅ ๊ฐํ: ํ๋ซํผ๋ณ ์ด๋ฏธ์ง ์ต์ ํ, ์ง๋ฅํ ์บ์ฑ ๋ฉ์ปค๋์ฆ, ๊ทธ๋ฆฌ๊ณ ์ฝํ ์ธ ์ ๋ฌ์ ๊ฐ์ํํ๋ ์ต์ ํ๋ ๋น๋ ํ์ดํ๋ผ์ธ์ ํ์ฉํฉ๋๋ค.
- ๋น์ฉ ์ต์ ํ: ์ข ์ข ์ฌ์ฉ๋ ๊ธฐ๋ฐ ๊ณผ๊ธ(pay-per-use) ์๋ฒ๋ฆฌ์ค ๋ชจ๋ธ์ ํตํด ์ ํ๋ฆฌ์ผ์ด์ ์ ํธ๋ํฝ ํจํด๊ณผ ๋ ๋๋ง ์๊ตฌ์ฌํญ์ ๋ง๋ ์ํคํ ์ฒ๋ฅผ ์ ํํฉ๋๋ค.
- ๊ฐ๋ฐ ์ํฌํ๋ก์ฐ ๊ฐ์ํ: ํ๋ซํผ ๋ค์ดํฐ๋ธ ์ง์์ ํตํฉ/์ง์์ ๋ฐฐํฌ(CI/CD) ํ์ดํ๋ผ์ธ๊ณผ ์ํํ๊ฒ ํตํฉํ์ฌ ์๋ํ๋๊ณ ์ ๋ขฐํ ์ ์๋ ๋ฐฐํฌ๋ฅผ ์ํํฉ๋๋ค.
์ด๋ฌํ ๋ฏธ๋ฌํ ์ฐจ์ด๋ฅผ ์ดํดํ๋ ๊ฒ์ ๊ณ ์ฑ๋ฅ์ ์ ์ธ๊ณ์ ์ผ๋ก ์ ๊ทผ ๊ฐ๋ฅํ Next.js ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ค๋ ๋ชจ๋ ๊ฐ๋ฐ์์๊ฒ ํ์์ ์ ๋๋ค.
Next.js ๋ฐฐํฌ์ ํต์ฌ ๊ฐ๋
ํ๋ซํผ๋ณ ์ธ๋ถ ์ฌํญ์ ์ดํด๋ณด๊ธฐ ์ ์, ๋ฐฐํฌ ์ ๋ต์ ๊ฒฐ์ ํ๋ ํต์ฌ Next.js ๋ ๋๋ง ๊ฐ๋ ์ ๊ฐ๋จํ ๋ค์ ์ดํด๋ณด๊ฒ ์ต๋๋ค:
์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง(SSR), ์ ์ ์ฌ์ดํธ ์์ฑ(SSG), ์ ์ง์ ์ ์ ์ฌ์์ฑ(ISR), ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋ ๋๋ง(CSR)
- ์ ์ ์ฌ์ดํธ ์์ฑ (SSG): ํ์ด์ง๊ฐ ๋น๋ ์์ ์ HTML๋ก ์ฌ์ ๋ ๋๋ง๋ฉ๋๋ค. ์ด๋ ๋ง์ผํ
ํ์ด์ง, ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ, ๋ฌธ์ ๋ฑ ์์ฃผ ๋ณ๊ฒฝ๋์ง ์๋ ์ฝํ
์ธ ์ ์ด์์ ์
๋๋ค. ์ ์ ์ด๊ธฐ ๋๋ฌธ์ ์ด ํ์ด์ง๋ค์ ๊ฐ๋จํ ํ์ผ๋ก ๋ฐฐํฌ๋์ด ๊ธ๋ก๋ฒ CDN์์ ์ง์ ์ ๊ณต๋ ์ ์์ผ๋ฉฐ, ๊ฐ์ฅ ๋น ๋ฅธ ๋ก๋ฉ ์๊ฐ๊ณผ ๋ฐ์ด๋ ์ ๋ขฐ์ฑ์ ์ ๊ณตํฉ๋๋ค. SSG๋ฅผ ์ํ ํต์ฌ Next.js ํจ์๋
getStaticProps
์getStaticPaths
์ ๋๋ค. - ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง (SSR): ํ์ด์ง๊ฐ ์์ฒญ ์์ ์ ์๋ฒ์์ ๋ ๋๋ง๋ฉ๋๋ค. ์ด๋ ๊ฐ์ธํ๋ ๋์๋ณด๋, ์ ์์๊ฑฐ๋ ๊ฒฐ์ ํ์ด์ง, ์ค์๊ฐ ๋ฐ์ดํฐ ํผ๋ ๋ฑ ๋ชจ๋ ์ฌ์ฉ์ ์์ฒญ์ ๋ํด ์ต์ ์ํ์ฌ์ผ ํ๋ ๋งค์ฐ ๋์ ์ธ ์ฝํ
์ธ ์ ์ ํฉํฉ๋๋ค. SSR์ ๋ค์ด์ค๋ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ , ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ณ , ํ์ด์ง๋ฅผ ๋ ๋๋งํ ์ ์๋ ๋ผ์ด๋ธ ์๋ฒ ํ๊ฒฝ(Node.js ๋ฐํ์)์ด ํ์ํฉ๋๋ค. SSR์ ์ํ ์ฃผ์ Next.js ํจ์๋
getServerSideProps
์ ๋๋ค. - ์ ์ง์ ์ ์ ์ฌ์์ฑ (ISR): SSG์ SSR์ ์ฅ์ ์ ๊ฒฐํฉํ ๊ฐ๋ ฅํ ํ์ด๋ธ๋ฆฌ๋ ์ ๊ทผ ๋ฐฉ์์
๋๋ค. ํ์ด์ง๋ ์ด๊ธฐ์ ์ ์ (SSG)์ด์ง๋ง, ํน์ ์๊ฐ ๊ฐ๊ฒฉ(
revalidate
์ต์ ์ผ๋ก ์ ์) ํ ๋๋ ์นํ ์ ํตํด ์จ๋๋งจ๋๋ก ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋ค์ ์์ฑ๋ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ ์ ํ์ด์ง์ ์ด์ (CDN ์นํ์ , ๋น ๋ฆ)๊ณผ ๋์ ์ฝํ ์ธ ์ ์ ์ ํจ์ ๊ฒฐํฉํ์ฌ ์ ์ฒด ์ฌ๋น๋ ์๊ฐ์ ์ต์ํํ๊ณ ์์ฒญ ๊ฒฝ๋ก์์ ๋ ๋๋ง์ ์คํ๋ก๋ํ์ฌ ํ์ฅ์ฑ์ ํฅ์์ํต๋๋ค. - ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋ ๋๋ง (CSR): ์ด๊ธฐ HTML ๋ก๋ ํ ์ฌ์ฉ์์ ๋ธ๋ผ์ฐ์ ์์ ์ง์ ์ฝํ ์ธ ๊ฐ ๋ ๋๋ง๋ฉ๋๋ค. Next.js๋ ์ผ๋ฐ์ ์ผ๋ก ์ํธ์์ฉ์ด ๋ง๊ฑฐ๋, ์ฌ์ฉ์๋ณ์ด๊ฑฐ๋, ์ด๊ธฐ ๋ ๋๋ง ํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ํ์ด์ง ๋ถ๋ถ(์: ์ฌ์ฉ์ ์ํธ์์ฉ ํ ์ฐจํธ์ ๋ก๋๋๋ ๋ฐ์ดํฐ)์ ์ด ๋ฐฉ์์ ์ฌ์ฉํฉ๋๋ค. Next.js๋ ์ฌ์ ๋ ๋๋ง์ ๊ฐ์กฐํ์ง๋ง, CSR์ ๋์ UI ์์์ ์ด๊ธฐ HTML์ ํฌํจ๋ ํ์ ์๋ ๋ฐ์ดํฐ์ ์ฌ์ ํ ์ค์ํฉ๋๋ค.
Next.js ๋น๋ ํ๋ก์ธ์ค
next build
๋ฅผ ์คํํ๋ฉด Next.js๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์ต์ ํ๋ ํ๋ก๋์
๋น๋๋ก ์ปดํ์ผํฉ๋๋ค. ์ด ํ๋ก์ธ์ค๋ ๊ฐ ํ์ด์ง๊ฐ ์ด๋ป๊ฒ ๋ ๋๋ง๋์ด์ผ ํ๋์ง๋ฅผ ์ง๋ฅ์ ์ผ๋ก ๊ฒฐ์ ํ๊ณ ํ์ํ ์์
์ ์์ฑํ๋ฉฐ, ์ด๋ ์ผ๋ฐ์ ์ผ๋ก ๋ค์์ ํฌํจํฉ๋๋ค:
- SSG ๋ฐ ISR ํ์ด์ง๋ฅผ ์ํ ์ ์ HTML ํ์ผ.
- ํด๋ผ์ด์ธํธ ์ธก ํ์ด๋๋ ์ด์ , CSR ๋ฐ ์ํธ์์ฉ์ ์ํ ์ต์ ํ๋ JavaScript ๋ฒ๋ค. ์ด ๋ฒ๋ค๋ค์ ํจ์จ์ฑ์ ์ํด ์ฝ๋ ๋ถํ ๋ฉ๋๋ค.
- SSR ํ์ด์ง ๋ฐ API Routes๋ฅผ ์ํ ์๋ฒ๋ฆฌ์ค ํจ์ (๋๋ ๋ฒ๋ค๋ Node.js ์๋ฒ).
next/image
์ปดํฌ๋ํธ๊ฐ ์ฌ์ฉ๋๊ณ ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ, ์ด๋ฏธ์ง ์ต์ ํ ์์ .
next build
์ ์ถ๋ ฅ๋ฌผ์ ๋งค์ฐ ํจ์จ์ ์ด๊ณ ์ด์ ๊ฐ๋ฅํ๋๋ก ๊ตฌ์กฐํ๋์ด ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฌํ ์์
์ด ๊ถ๊ทน์ ์ผ๋ก ์ด๋ป๊ฒ ์ ๊ณต๋๊ณ , ์คํ๋๊ณ , ํ์ฅ๋๋์ง๋ ํ๋ซํผ๋ณ ๊ตฌ์ฑ๊ณผ ์ต์ ํ๊ฐ ์ค์ํด์ง๋ ์ง์ ์
๋๋ค.
ํ๋ซํผ๋ณ ์ต์ ํ
์ฃผ์ ํด๋ผ์ฐ๋ ํ๋ซํผ๊ณผ ํธ์คํ ์ ๊ณต์ ์ฒด๊ฐ Next.js์ ๋ํด ์ด๋ค ๋ ํนํ ์ต์ ํ ๊ธฐํ๋ฅผ ์ ๊ณตํ๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค.
1. Vercel
Vercel์ Next.js์ ์ ์์ฌ์ด๋ฉฐ, Next.js ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ๊ฐ์ฅ ์ํํ๊ณ ๊ณ ๋๋ก ์ต์ ํ๋ ๋ฐฐํฌ ๊ฒฝํ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํฉ๋๋ค. ์ด ํ๋ซํผ์ Next.js ์ํคํ ์ฒ๋ฅผ ์ํด ํน๋ณํ ์ ์๋์๊ธฐ ๋๋ฌธ์ ๋ง์ ์ฌ๋๋ค์๊ฒ ์ ํธ๋๋ ์ ํ์ ๋๋ค.
- ์๋ ์ต์ ํ: Vercel์ Next.js ํ๋ก์ ํธ๋ฅผ ์๋์ผ๋ก ๊ฐ์งํ๊ณ ๊ด๋ฒ์ํ ์๋ ๊ตฌ์ฑ ์์ด ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ ์ฉํฉ๋๋ค. ์ฌ๊ธฐ์๋ ๋ค์์ด ํฌํจ๋ฉ๋๋ค:
- ์ค๋งํธ ์บ์ฑ: ์ ์ ์์ ์ ๋ํ ์ ๊ทน์ ์ธ ์บ์ฑ๊ณผ ๊ธ๋ก๋ฒ ์ฃ์ง ๋คํธ์ํฌ ์ ๋ฐ์ ๊ฑธ์น ์ง๋ฅ์ ์ธ CDN ๋ฐฐํฌ.
- ์ด๋ฏธ์ง ์ต์ ํ:
next/image
๋ฅผ ์ง์ ์ง์ํ๋ฉฐ, ์ด๋ฏธ์ง๋ฅผ ์๋์ผ๋ก ๋ฆฌ์ฌ์ด์ฆํ๊ณ ์ต์ ํํ์ฌ ์ฃ์ง์์ ์ต์ ํ์(WebP ๋๋ AVIF ๋ฑ)์ผ๋ก ์ ๊ณตํ๋ ๋ด์ฅ ์ด๋ฏธ์ง ์ต์ ํ API. - ํฐํธ ์ต์ ํ: ๋ ๋๋ง ์ฐจ๋จ ์์ฒญ์ ์ค์ด๊ณ ๋์ ๋ ์ด์์ ์ด๋(CLS)์ ๊ฐ์ ํ๋ ์์ฒด ํธ์คํ ๋ฐ ์๋ธ์ธํ ์ ํฌํจํ ์๋ ํฐํธ ์ต์ ํ.
- ๋น๋ ์บ์: ๋น๋ ๊ฒฐ๊ณผ๋ฌผ์ ์บ์ํ์ฌ ํ์ ๋ฐฐํฌ ์๋๋ฅผ ํฌ๊ฒ ๋์ด๋ฉฐ, ํนํ CI/CD ํ์ดํ๋ผ์ธ์์ ์ ์ฉํฉ๋๋ค.
- ์ฃ์ง ํจ์ (Next.js ๋ฏธ๋ค์จ์ด): V8 ์์ด์๋ ์ดํธ๋ก ๊ตฌ๋๋๋ Vercel์ ์ฃ์ง ํจ์๋ ์ฌ์ฉ์์ ๋งค์ฐ ๊ฐ๊น์ด ๋คํธ์ํฌ ์ฃ์ง์์ ์ฝ๋๋ฅผ ์คํํ ์ ์๊ฒ ํด์ค๋๋ค. ์ด๋ ๋ค์๊ณผ ๊ฐ์ ์ง์ฐ ์๊ฐ์ ๋ฏผ๊ฐํ ์์
์ ์๋ฒฝํฉ๋๋ค:
- ์์ฒญ์ด ์ค๋ฆฌ์ง์ ๋๋ฌํ๊ธฐ ์ ์ ์ธ์ฆ ๋ฐ ๊ถํ ๋ถ์ฌ ํ์ธ.
- ์ฌ์ฉ์ ์ธ๊ทธ๋จผํธ์ ๊ธฐ๋ฐํ A/B ํ ์คํธ ๋ฐ ๊ธฐ๋ฅ ํ๋๊ทธ.
- ์ง์ญํ ๋ฐ ๊ตญ์ ํ(i18n) ๋ฆฌ๋๋ ์ .
- SEO ๋๋ ๋ณด์์ ์ํ URL ์ฌ์์ฑ ๋ฐ ์๋ต ํค๋ ์์ .
- ์ค์ ์ง์ค์ ์ค๋ฆฌ์ง ์๋ฒ๋ฅผ ๊ฑฐ์น์ง ์๊ณ ๋น ๋ฅธ ๋ฐ์ดํฐ ์กฐํ ์ํ(์: ์ง์ญ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋๋ ์บ์์์).
- ์๋ฒ๋ฆฌ์ค ํจ์ (API Routes & SSR): Vercel์ Next.js API Routes์
getServerSideProps
ํจ์๋ฅผ ์๋ฒ๋ฆฌ์ค Node.js ํจ์(๋ด๋ถ์ ์ผ๋ก AWS Lambda)๋ก ์๋ ๋ฐฐํฌํฉ๋๋ค. ์ด ํจ์๋ค์ ์์์ ๋ฐ๋ผ ์๋์ผ๋ก ํ์ฅ๋๊ณ ํ์ฑ ์ํ์ผ ๋๋ง ๋ฆฌ์์ค๋ฅผ ์๋นํ๋ฏ๋ก ๋น์ฉ ํจ์จ์ฑ์ด ๋๊ณ ํธ๋ํฝ ๊ธ์ฆ์ ํ๋ ฅ์ ์ ๋๋ค. - ์ฆ์ ๋กค๋ฐฑ & ์์์ ๋ฐฐํฌ: Vercel์ ๋ชจ๋ ๋ฐฐํฌ๋ ์์์ ์ ๋๋ค. ๋ฐฐํฌ๊ฐ ์คํจํ๊ฑฐ๋ ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ๋ฉด ๋ค์ดํ์ ์์ด ์ด์ ์ ์๋ํ๋ ๋ฒ์ ์ผ๋ก ์ฆ์ ๋กค๋ฐฑํ์ฌ ๊ณ ๊ฐ์ฉ์ฑ์ ๋ณด์ฅํ ์ ์์ต๋๋ค.
- ๋ชจ๋ ธ๋ ํฌ ์ง์: ๋ชจ๋ ธ๋ ํฌ๋ฅผ ํ๋ฅญํ๊ฒ ์ง์ํ์ฌ, ๋จ์ผ Git ์ ์ฅ์์์ ์ฌ๋ฌ Next.js ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ ๋ค๋ฅธ ์๋น์ค์ ํจ๊ป Next.js ์ฑ์ ๋ฐฐํฌํ ์ ์์ด ๋ณต์กํ ํ๋ก์ ํธ ๊ด๋ฆฌ๋ฅผ ๋จ์ํํฉ๋๋ค.
Vercel์ ์ํ ์ต์ ํ ์ ๋ต: ๋ด์ฅ๋ ์ต์ ํ๋ฅผ ์ํด next/image
์ next/font
๋ฅผ ํ์ฉํ์ธ์. ์ํํ ์๋ฒ๋ฆฌ์ค ํตํฉ์ ์ํด API Routes๋ก ๋ฐฑ์๋ ๋ก์ง์ ์ค๊ณํ์ธ์. ๊ฐ์ธํ, ์ธ์ฆ, ๋น ๋ฅธ ๋ฐ์ดํฐ ๋ณํ์ ์ํด ์ฃ์ง ํจ์ ์ฌ์ฉ์ ๊ทน๋ํํ์ฌ ๋ก์ง์ ์ฌ์ฉ์์ ๋ ๊ฐ๊น๊ฒ ํธ์ํ์ธ์. ๊ฐ๋ฅํ ๊ฒฝ์ฐ ISR์ ์ฑํํ์ฌ ์ ์ฒด ์ฌ๋น๋ ์์ด ์ฝํ
์ธ ๋ฅผ ์ต์ ์ํ๋ก ์ ์งํ๋ฉด์ SSG์ SSR์ ์ด์ ์ ๊ฒฐํฉํ์ธ์.
2. Netlify
Netlify๋ ๊ฐ๋ ฅํ ๊ธ๋ก๋ฒ CDN, ๊ฒฌ๊ณ ํ ์๋ฒ๋ฆฌ์ค ํจ์, ์ ์ฐํ ๋น๋ ํ์ดํ๋ผ์ธ์ ์ ๊ณตํ๋ ํ๋ ์น ํ๋ก์ ํธ๋ฅผ ์ํ ๋ ๋ค๋ฅธ ์ธ๊ธฐ ํ๋ซํผ์ ๋๋ค. Netlify๋ ์ ์ฉ ๋น๋ ํ๋ฌ๊ทธ์ธ๊ณผ ์ ์์ ํตํด Next.js์ ๋ํ ๊ฐ๋ ฅํ ์ง์์ ์ ๊ณตํฉ๋๋ค.
- Netlify์ Next.js ๋น๋ ํ๋ฌ๊ทธ์ธ: Netlify๋ ์์ฌ ํ๋ซํผ์ ๋ํ Next.js ํน์ ์ต์ ํ ๋ฐ ์ ์์ ์๋์ผ๋ก ์ฒ๋ฆฌํ๋ ์ ์ฉ ๋น๋ ํ๋ฌ๊ทธ์ธ์ ์ ๊ณตํฉ๋๋ค. ์ฌ๊ธฐ์๋ ๋ค์์ด ํฌํจ๋ฉ๋๋ค:
- SSR ๋ฐ API Routes๋ฅผ Netlify Functions (AWS Lambda)์ ๋ง๊ฒ ์กฐ์ .
- ISR ์ฌ๊ฒ์ฆ ๋ฐ ์จ๋๋งจ๋ ์ฌ์์ฑ ์ฒ๋ฆฌ.
- ๋ฆฌ๋๋ ์ ๋ฐ ์ฌ์ฉ์ ์ ์ ํค๋ ์ต์ ํ.
- CDN์์ ์ ์ ์์ ์ ์ ํํ ์ ๊ณต ๋ณด์ฅ.
- Netlify ์ฃ์ง ํจ์: Vercel์ ์ฃ์ง ํจ์์ ์ ์ฌํ๊ฒ, Netlify์ ์ฃ์ง ํจ์(Deno์ V8 ๋ฐํ์ ๊ธฐ๋ฐ)๋ ๋คํธ์ํฌ ์ฃ์ง์์ ์ฌ์ฉ์ ์ ์ JavaScript ์ฝ๋๋ฅผ ์คํํ ์ ์๊ฒ ํฉ๋๋ค. ์ฌ์ฉ ์ฌ๋ก๋ Vercel์ ์ฃ์ง ํจ์์ ์ ์ฌํฉ๋๋ค:
- ์ฌ์ฉ์ ๊ฐ์ธํ ๋ฐ A/B ํ ์คํธ.
- ๊ธฐ๋ฅ ํ๋๊ทธ ๋ฐ ๋์ ์ฝํ ์ธ ์ฝ์ .
- ์ฝํ ์ธ ๊ฐ ์ค๋ฆฌ์ง์ ๋๋ฌํ๊ธฐ ์ ์กฐ์(์: HTML ์์ ).
- ๊ณ ๊ธ ๋ผ์ฐํ ๋ก์ง ๋ฐ ์ง์ญ๋ณ ์๋ต.
- Netlify ํจ์ (์๋ฒ๋ฆฌ์ค): Next.js API Routes์
getServerSideProps
ํจ์๋ ์๋์ผ๋ก Netlify Functions๋ก ๋ฐฐํฌ๋๋ฉฐ, ์ด๋ ๋ด๋ถ์ ์ผ๋ก AWS Lambda ํจ์์ ๋๋ค. ์๋ ํ์ฅ, ์ฌ์ฉ๋ ๊ธฐ๋ฐ ๊ณผ๊ธ, Netlify ํ๋ซํผ๊ณผ์ ํตํฉ์ ์ ๊ณตํฉ๋๋ค. - ์์์ ๋ฐฐํฌ & ์ฆ์ ๋กค๋ฐฑ: Vercel๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก Netlify์ ๋ฐฐํฌ๋ ์์์ ์ด์ด์ ์๋ก์ด ๋ฐฐํฌ๊ฐ ์๋ฃ๋๋ฉด ์์ ํ ๊ต์ฒด๋์ด ์ ๋ฐ์ดํธ ์ ๋ค์ดํ์์ด ์์ต๋๋ค. ๋ํ ์ด์ ๋ฐฐํฌ ๋ฒ์ ์ผ๋ก ์ฆ์ ๋กค๋ฐฑํ ์ ์์ต๋๋ค.
- Next.js ์จ๋๋งจ๋ ISR: Netlify์ ๋น๋ ํ๋ฌ๊ทธ์ธ์ ์นํ ์ ํตํ ์จ๋๋งจ๋ ์ฌ๊ฒ์ฆ์ ํฌํจํ์ฌ Next.js ISR์ ๊ฐ๋ ฅํ๊ฒ ์ง์ํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ฝํ ์ธ ํธ์ง์๋ ์ธ๋ถ ์์คํ ์ด ํน์ ํ์ด์ง์ ์ฌ์์ฑ์ ํธ๋ฆฌ๊ฑฐํ์ฌ ์ ์ฒด ์ฌ์ดํธ ์ฌ๋น๋ ์์ด ์ฝํ ์ธ ์ ์ ๋๋ฅผ ๋ณด์ฅํ ์ ์์ต๋๋ค.
- Netlify ์ด๋ฏธ์ง CDN: Netlify๋ ์ด๋ฏธ์ง๋ฅผ ์ฆ์์์ ์ต์ ํํ๊ณ ๋ณํํ์ฌ ํ์ผ ํฌ๊ธฐ๋ฅผ ์ค์ด๊ณ ๋ก๋ฉ ์๊ฐ์ ๊ฐ์ ํ ์ ์๋ ๋ด์ฅ ์ด๋ฏธ์ง CDN์ ์ ๊ณตํฉ๋๋ค. ์ด๋
next/image
๋ฅผ ๋ณด์ํ๊ฑฐ๋ ํน์ ์์ ์ Next.js์ ๋ด์ฅ ์ด๋ฏธ์ง ๋ก๋๋ฅผ ์ฌ์ฉํ์ง ์์ ๊ฒฝ์ฐ ๋์ฒด ์๋จ์ ์ ๊ณตํฉ๋๋ค.
Netlify๋ฅผ ์ํ ์ต์ ํ ์ ๋ต: Next.js์ฉ Netlify ๋น๋ ํ๋ฌ๊ทธ์ธ์ ํ์ฉํ์ฌ ์๋ฒ๋ฆฌ์ค ๊ตฌ์ฑ์ ๋ณต์ก์ฑ์ ์ถ์ํํ์ธ์. ์ฌ์ฉ์์ ๊ฐ์ฅ ๊ฐ๊น์ด ๊ณณ์์ ์คํ๋ ์ ์๋ ์ง์ฐ ์๊ฐ์ ๋ฏผ๊ฐํ ๋ก์ง์ ์ฃ์ง ํจ์๋ฅผ ํ์ฉํ์ธ์. ์ด๋ฏธ์ง์ ๊ฒฝ์ฐ Netlify์ ์ด๋ฏธ์ง CDN์ ๊ณ ๋ คํ๊ฑฐ๋, ๊ธฐ๋ณธ ๋ก๋๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒฝ์ฐ next/image
๊ฐ ์ฌ์ฉ์ ์ ์ ๋ก๋์ ๋ง๊ฒ ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌ์ฑ๋์๋์ง ํ์ธํ์ธ์. ์ ์ ์ ๊ณต์ ์ด์ ์ ๋๋ฆฌ๋ ๋์ ์ฝํ
์ธ ์ ๋ํด ์จ๋๋งจ๋ ์ฌ๊ฒ์ฆ๊ณผ ํจ๊ป ISR์ ๊ตฌํํ์ธ์.
3. AWS Amplify
AWS Amplify๋ ๋ค์ํ AWS ์๋น์ค์ ๊น์ด ํตํฉ๋๋ ํ์คํ ๊ฐ๋ฐ ํ๋ซํผ์ ์ ๊ณตํ์ฌ, ์ด๋ฏธ AWS ์ํ๊ณ ๋ด์ ์๋ Next.js ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ ฅํ ์ ํ์ง๊ฐ ๋ฉ๋๋ค. CI/CD, ํธ์คํ , ๋ฐฑ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- SSR ์ง์ (AWS Lambda & CloudFront ๊ฒฝ์ ): Amplify ํธ์คํ
์
getServerSideProps
๋ฐ API Routes๋ฅผ AWS Lambda ํจ์๋ก ๋ฐฐํฌํ์ฌ Next.js SSR์ ์ง์ํฉ๋๋ค. ์ ์ ์์ (HTML, CSS, JS, ์ด๋ฏธ์ง)์ Amazon CloudFront(AWS์ ๊ธ๋ก๋ฒ CDN)๋ฅผ ํตํด ์ ๊ณต๋์ด ๊ธ๋ก๋ฒ ์ฃ์ง ๋คํธ์ํฌ์ ๋ฎ์ ์ง์ฐ ์๊ฐ์ ์ ๊ณตํฉ๋๋ค. - ์ฌ์ฉ์ ์ ์๋ฅผ ์ํ CDK / CloudFormation: ๊ณ ๊ธ ์ฌ์ฉ์ ๋ฐ ๋ณต์กํ ์ํคํ ์ฒ๋ฅผ ์ํด Amplify๋ AWS Cloud Development Kit (CDK) ๋๋ CloudFormation์ผ๋ก "์ด์ ํธ"ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๊ธฐ๋ณธ AWS ๋ฆฌ์์ค์ ๋ํ ์ธ๋ฐํ ์ ์ด๊ฐ ๊ฐ๋ฅํด์ ธ ํน์ ํ์ฅ ์ ์ฑ , ์ฌ์ฉ์ ์ ์ ๋คํธ์ํฌ ๊ตฌ์ฑ ๋๋ ๋ค๋ฅธ AWS ์๋น์ค์์ ๊น์ ํตํฉ์ด ๊ฐ๋ฅํฉ๋๋ค.
- ๊ธ๋ก๋ฒ ์ฃ์ง ๋คํธ์ํฌ (CloudFront): ๊ธฐ๋ณธ์ ์ผ๋ก Amplify๋ ์ฝํ ์ธ ์ ์ก์ ์ํด Amazon CloudFront๋ฅผ ํ์ฉํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ ์ ๋ฐ ์บ์๋ ๋์ ์ฝํ ์ธ ๊ฐ ์ ์ธ๊ณ ์ฌ์ฉ์์๊ฒ ๊ฐ์ฅ ๊ฐ๊น์ด ์ฃ์ง ๋ก์ผ์ด์ ์์ ์ ๊ณต๋์ด ์ง์ฐ ์๊ฐ์ ํฌ๊ฒ ์ค์ด๊ณ ๋ก๋ฉ ์๋๋ฅผ ํฅ์์ํต๋๋ค.
- AWS ์๋น์ค์์ ํตํฉ: Amplify๋ ๋ฐฉ๋ํ AWS ์๋น์ค์ ์ํํ๊ฒ ํตํฉ๋์ด Next.js ์ ํ๋ฆฌ์ผ์ด์
์ ์ํ ๊ฐ๋ ฅํ๊ณ ํ์ฅ ๊ฐ๋ฅํ ๋ฐฑ์๋๋ฅผ ๊ตฌ์ถํ ์ ์์ต๋๋ค. ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- AWS Lambda: ์๋ฒ๋ฆฌ์ค API ๋ผ์ฐํธ ๋ฐ ์ฌ์ฉ์ ์ ์ ๋ฐฑ์๋ ๋ก์ง์ฉ.
- Amazon S3: ๋์ฉ๋ ์ ์ ์์ ๋๋ ์ฌ์ฉ์ ์์ฑ ์ฝํ ์ธ ์ ์ฅ์ฉ.
- Amazon DynamoDB: ์ด๋ค ๊ท๋ชจ์ ์ ํ๋ฆฌ์ผ์ด์ ์์๋ ์ฌ์ฉํ ์ ์๋ ๋น ๋ฅด๊ณ ์ ์ฐํ NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋น์ค.
- AWS AppSync: ๊ด๋ฆฌํ GraphQL API์ฉ.
- Amazon Cognito: ์ฌ์ฉ์ ์ธ์ฆ ๋ฐ ๊ถํ ๋ถ์ฌ์ฉ.
- ์๋ฒ๋ฆฌ์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทผ: Amplify์๋ง ๊ตญํ๋ ๊ฒ์ ์๋์ง๋ง, Next.js SSR/API ๋ผ์ฐํธ๋ฅผ Amazon Aurora Serverless๋ DynamoDB์ ๊ฐ์ ์๋ฒ๋ฆฌ์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํตํฉํ๋ฉด ํ์ฅ์ฑ, ๋น์ฉ ํจ์จ์ฑ์ ๋์ฑ ํฅ์์ํค๊ณ ์ด์ ์ค๋ฒํค๋๋ฅผ ์ค์ผ ์ ์์ต๋๋ค.
- CI/CD ํ์ดํ๋ผ์ธ: Amplify ํธ์คํ ์ ์ฝ๋ ๋ณ๊ฒฝ ์ Git ์ ์ฅ์์์ Next.js ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋์ผ๋ก ๋น๋ํ๊ณ ๋ฐฐํฌํ๋ ๊ฒฌ๊ณ ํ CI/CD ํ์ดํ๋ผ์ธ์ ํฌํจํฉ๋๋ค.
AWS Amplify๋ฅผ ์ํ ์ต์ ํ ์ ๋ต: ๋ชจ๋ ์ ์ ๋ฐ ์บ์๋ ์ฝํ ์ธ ์ CloudFront๋ฅผ ํ์ฉํ์ฌ ํจ์จ์ ์ธ ์บ์ฑ ํค๋๊ฐ ์ค์ ๋๋๋ก ํ์ธ์. ๋์ ์ฝํ ์ธ (SSR, API Routes)์ ๊ฒฝ์ฐ, ์ฝ๋ ํจ์จํ, ์ ์ ํ ๋ฉ๋ชจ๋ฆฌ ํ ๋น, ๊ทธ๋ฆฌ๊ณ ์ค์ํ ๊ฒฝ๋ก์ ๋ํ ์ ์ฌ์ ์ธ ํ๋ก๋น์ ๋๋ ๋์์ฑ์ ํตํด ์ฝ๋ ์คํํธ๋ฅผ ์ต์ํํ์ฌ Lambda ํจ์๋ฅผ ์ต์ ํํ์ธ์. ๋ฐฑ์๋ ๋ก์ง ๋ฐ ๋ฐ์ดํฐ ์ ์ฅ์ ์ํด ๋ค๋ฅธ AWS ์๋น์ค๋ฅผ ํ์ฉํ์ฌ ์ต๋์ ํ์ฅ์ฑ๊ณผ ๋น์ฉ ํจ์จ์ฑ์ ์ํ ์๋ฒ๋ฆฌ์ค ์ฐ์ ์ํคํ ์ฒ๋ฅผ ์ค๊ณํ์ธ์. ๋ณต์กํ ์ด๋ฏธ์ง ์ฒ๋ฆฌ๋ฅผ ์ํด Sharp์ ํจ๊ป AWS Lambda ๊ฐ์ ์ ์ฉ ์ด๋ฏธ์ง ์ต์ ํ ์๋น์ค๋ฅผ ๊ณ ๋ คํ์ธ์. ์๋ํ๋๊ณ ์ ๋ขฐํ ์ ์๋ ๋ฐฐํฌ๋ฅผ ์ํด Amplify์ CI/CD๋ฅผ ์ฑํํ์ธ์.
4. Google Cloud Platform (GCP) - App Engine / Cloud Run
GCP๋ ํนํ ์ด๋ฏธ Google Cloud ์ํ๊ณ์ ํฌ์ํ ๊ฒฝ์ฐ Next.js์ ๋ํ ๊ฒฌ๊ณ ํ ์ต์ ์ ์ ๊ณตํฉ๋๋ค. Google Cloud Run๊ณผ App Engine์ Next.js ํธ์คํ ์ ์ฃผ์ ํ๋ณด์ด๋ฉฐ ๊ฐ๊ฐ ๋๋ ทํ ์ฅ์ ์ ๊ฐ์ง๋๋ค.
- Cloud Run (์ปจํ
์ด๋ํ): Cloud Run์ ์ปจํ
์ด๋ํ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์ํ ์์ ๊ด๋ฆฌํ ์๋ฒ๋ฆฌ์ค ํ๋ซํผ์
๋๋ค. ์ ์ฐ์ฑ๊ณผ ์๋ ํ์ฅ ๊ธฐ๋ฅ ๋๋ถ์ SSR ๋ฐ API ๋ผ์ฐํธ๋ฅผ ์ํด Node.js ๋ฐํ์์ด ํ์ํ Next.js ์ ํ๋ฆฌ์ผ์ด์
์ ๋งค์ฐ ์ ํฉํฉ๋๋ค.
- ์ปจํ ์ด๋ ๋ค์ดํฐ๋ธ: Next.js ๋น๋ ์ถ๋ ฅ๋ฌผ(Node.js ์๋ฒ ํฌํจ)์ Docker ์ด๋ฏธ์ง๋ก ํจํค์งํฉ๋๋ค. ์ด๋ ๊ฐ๋ฐ์์ ํ๋ก๋์ ๊น์ง ์ผ๊ด๋ ํ๊ฒฝ์ ์ ๊ณตํ์ฌ ์์กด์ฑ ๊ด๋ฆฌ๋ฅผ ๋จ์ํํฉ๋๋ค.
- 0์ผ๋ก ์๋ ํ์ฅ: Cloud Run์ ๋ค์ด์ค๋ ํธ๋ํฝ์ ๋ฐ๋ผ ์ธ์คํด์ค๋ฅผ ์๋์ผ๋ก ํ์ฅ ๋ฐ ์ถ์ํ๋ฉฐ, ์ ํด ์ํ์ผ ๋๋ 0์ผ๋ก ์ถ์ํ์ฌ ๋น์ฉ์ ํฌ๊ฒ ์ต์ ํํฉ๋๋ค.
- ๋ฎ์ ์ฝ๋ ์คํํธ: ์ปจํ ์ด๋ ๊ธฐ๋ฐ ์ํคํ ์ฒ์ ์ง๋ฅ์ ์ธ ์ธ์คํด์ค ๊ด๋ฆฌ ๋๋ถ์ ์ผ๋ฐ์ ์ผ๋ก ๊ธฐ์กด ์๋ฒ๋ฆฌ์ค ํจ์์ ๋นํด ๋ ๋น ๋ฅธ ์ฝ๋ ์คํํธ๋ฅผ ์๋ํฉ๋๋ค.
- ๊ธ๋ก๋ฒ ๋ฆฌ์ : ์ง์ฐ ์๊ฐ์ ์ค์ด๊ธฐ ์ํด ๋์ ๊ณ ๊ฐ๊ณผ ๊ฐ๊น์ด ์ ๋ต์ ์์น์ ์ปจํ ์ด๋๋ฅผ ๋ฐฐํฌํฉ๋๋ค.
- App Engine Standard/Flexible:
- ํ์ค ํ๊ฒฝ (Node.js): ์๋ ํ์ฅ ๋ฐ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ๊ฐ์ถ ์์ ๊ด๋ฆฌํ ํ๋ซํผ์ ์ ๊ณตํ์ง๋ง, ์ฌ์ฉ์ ์ ์ ๊ฐ๋ฅ์ฑ๊ณผ ์์คํ ์ ๊ทผ ์ธก๋ฉด์์ ๋ ์ ํ์ ์ผ ์ ์์ต๋๋ค. ๊ฐ๋จํ Next.js SSR ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ํฉํฉ๋๋ค.
- ๊ฐ๋ณํ ํ๊ฒฝ (Node.js): ๋ ๋ง์ ์ ์ฐ์ฑ์ ์ ๊ณตํ์ฌ ์ฌ์ฉ์ ์ ์ ๋ฐํ์, ๊ธฐ๋ณธ VM์ ๋ํ ์ ๊ทผ, ์ธํ๋ผ์ ๋ํ ๋ ์ธ๋ฐํ ์ ์ด๊ฐ ๊ฐ๋ฅํฉ๋๋ค. ํน์ ์์กด์ฑ, ๋ฐฑ๊ทธ๋ผ์ด๋ ํ๋ก์ธ์ค ๋๋ ์ฌ์ฉ์ ์ ์ ๊ตฌ์ฑ์ด ํ์ํ ๋ ๋ณต์กํ Next.js ์ค์ ์ ์ ํฉํฉ๋๋ค.
- Cloud Load Balancing & CDN (Cloud CDN): ๊ธ๋ก๋ฒ ๊ท๋ชจ์ ํ๋ก๋์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ, Cloud Run ๋๋ App Engine์ GCP์ ๊ธ๋ก๋ฒ ์ธ๋ถ HTTP(S) ๋ถํ ๋ถ์ฐ๊ธฐ ๋ฐ Cloud CDN๊ณผ ํจ๊ป ์ฌ์ฉํ์ธ์. Cloud CDN์ Google์ ๊ธ๋ก๋ฒ ์ฃ์ง ๋คํธ์ํฌ์์ ์ ์ ๋ฐ ๋์ ์ฝํ ์ธ ๋ฅผ ์บ์ํ์ฌ ์ ์ธ๊ณ์ ์ผ๋ก ์ง์ฐ ์๊ฐ์ ํฌ๊ฒ ์ค์ด๊ณ ์ฝํ ์ธ ์ ๋ฌ ์๋๋ฅผ ํฅ์์ํต๋๋ค.
- ๊ธ๋ก๋ฒ ๋คํธ์ํฌ: GCP์ ๊ด๋ฒ์ํ ๊ธ๋ก๋ฒ ๋คํธ์ํฌ ์ธํ๋ผ๋ ๋๋ฅ ๊ฐ ์์ฒญ์ ๋ํด ๊ณ ์ฑ๋ฅ ์ฐ๊ฒฐ๊ณผ ๋ฎ์ ์ง์ฐ ์๊ฐ์ ๋ณด์ฅํฉ๋๋ค.
- ๋ค๋ฅธ GCP ์๋น์ค์์ ํตํฉ: Next.js ์ ํ๋ฆฌ์ผ์ด์ ์ Cloud Firestore, Cloud Storage, BigQuery, Cloud Functions์ ๊ฐ์ ์๋น์ค์ ์ํํ๊ฒ ์ฐ๊ฒฐํ์ฌ ๋ฐฑ์๋ ๋ก์ง ๋ฐ ๋ฐ์ดํฐ ๊ด๋ฆฌ๋ฅผ ์ํํฉ๋๋ค.
GCP๋ฅผ ์ํ ์ต์ ํ ์ ๋ต: ๋์ Next.js ์ ํ๋ฆฌ์ผ์ด์ (SSR, API Routes)์ ๊ฒฝ์ฐ, ์ปจํ ์ด๋ํ์ ์ด์ , 0์ผ๋ก ์๋ ํ์ฅ, ๋น์ฉ ํจ์จ์ฑ ๋๋ฌธ์ Cloud Run์ด ์ข ์ข ์ ํธ๋ฉ๋๋ค. ์ ์ ์์ ๋ฐ ์บ์๋ ๋์ ์ฝํ ์ธ ์ ๊ฒฝ์ฐ, ํญ์ Cloud Run ์๋น์ค ์์ Cloud CDN์ ์ฌ์ฉํ์ธ์. ๊ณ ๊ฐ์ฉ์ฑ ๋ฐ ๋ฎ์ ์ง์ฐ ์๊ฐ ๋ถ์ฐ์ ์ํด GCP์ ๊ธ๋ก๋ฒ ๋ถํ ๋ถ์ฐ์ ํ์ฉํ์ธ์. ์ ์ฒด Next.js ๋ฐํ์์ด ํ์ํ์ง ์์ ๋ ๊ฐ๋จํ API ๋ผ์ฐํธ์ ๊ฒฝ์ฐ, ํน์ ๋ง์ดํฌ๋ก์๋น์ค์ ์ต์ ํ๋ ์ ์ฉ Cloud Functions๋ฅผ ๊ณ ๋ คํ์ธ์. ์๋ํ๋ ๋ฐฐํฌ๋ฅผ ์ํด Cloud Build๋ฅผ ์ฌ์ฉํ์ฌ CI/CD๋ฅผ ๊ตฌํํ์ธ์.
5. Azure Static Web Apps / Azure App Service
Microsoft Azure๋ ํนํ ์ด๋ฏธ Azure์ ๊ด๋ฒ์ํ ์ํ๊ณ์ ์๋น์ค๋ฅผ ํ์ฉํ๊ณ ์๋ ์กฐ์ง์ ์ํด Next.js ๋ฐฐํฌ์ ๋ํ ๋งค๋ ฅ์ ์ธ ์ต์ ์ ์ ๊ณตํฉ๋๋ค.
- Azure Static Web Apps: ์ด ์๋น์ค๋ ์ ์ ์ฌ์ดํธ์ ์๋ฒ๋ฆฌ์ค API๋ฅผ ์ํด ํน๋ณํ ์ค๊ณ๋์ด, SSG ์ค์ฌ์ Next.js ์ ํ๋ฆฌ์ผ์ด์
๋ฐ ISR์ ํ์ฉํ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ๋งค์ฐ ์ ํฉํฉ๋๋ค.
- ๋ด์ฅ API ์ง์: API ๋ผ์ฐํธ๋ฅผ ์ํด Azure Functions์ ์๋์ผ๋ก ํตํฉ๋์ด, ์๋ฒ๋ฆฌ์ค ํจ์๋ฅผ ํตํด SSR ๋ฐ ๋์ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ ์๊ตฌ์ฌํญ์ ํจ๊ณผ์ ์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค.
- ๊ธ๋ก๋ฒ ๋ฐฐํฌ: ์ ์ ์ฝํ ์ธ ๋ Azure์ ๊ธ๋ก๋ฒ CDN์์ ์ ๊ณต๋์ด ์ ์ธ๊ณ ์ฌ์ฉ์์๊ฒ ๋ฎ์ ์ง์ฐ ์๊ฐ์ผ๋ก ์ ๋ฌ๋ฉ๋๋ค.
- CI/CD ํตํฉ: ์ ์ฅ์์์ ์ง์ ์๋ํ๋ ๋น๋ ๋ฐ ๋ฐฐํฌ ํ์ดํ๋ผ์ธ์ ์ํด GitHub Actions์ ์ํํ๊ฒ ํตํฉ๋ฉ๋๋ค.
- ๋ฌด๋ฃ ๋ฑ๊ธ: ๋๋ํ ๋ฌด๋ฃ ๋ฑ๊ธ์ ์ ๊ณตํ์ฌ ๊ฐ์ธ ํ๋ก์ ํธ ๋ฐ ์๊ท๋ชจ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋งค์ฐ ์ ๊ทผ์ฑ์ด ๋์ต๋๋ค.
- Azure App Service (Node.js): ์ง์์ ์ธ Node.js ์๋ฒ๊ฐ ํ์ํ ์ ์๋ ๋ณด๋ค ์ ํต์ ์ธ Next.js ์ ํ๋ฆฌ์ผ์ด์
(์: ๋ชจ๋ SSR/API ๋ผ์ฐํธ์ ์๋ฒ๋ฆฌ์ค๋ฅผ ์์ ํ ํ์ฉํ์ง ์๊ฑฐ๋, ๋ ์ ์ด๋ ํ๊ฒฝ์ ์ํด)์ ๊ฒฝ์ฐ, App Service๋ ์์ ๊ด๋ฆฌํ ํ๋ซํผ์ ์ ๊ณตํฉ๋๋ค.
- ํ์ฅ์ฑ: ์ฆ๊ฐ๋ ์ฉ๋๊ณผ ํธ๋ํฝ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ํ์ ํ์ฅ์ ์ง์ํฉ๋๋ค.
- ์ฌ์ฉ์ ์ ์ ๋๋ฉ์ธ & SSL: ์ฌ์ฉ์ ์ ์ ๋๋ฉ์ธ ๋ฐ ๋ฌด๋ฃ SSL ์ธ์ฆ์๋ฅผ ์ฝ๊ฒ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
- ํตํฉ: ํฌ๊ด์ ์ธ CI/CD ํ์ดํ๋ผ์ธ์ ์ํด Azure DevOps์ ์ ์ฐ๊ฒฐ๋ฉ๋๋ค.
- Azure Front Door / Azure CDN: ๊ธ๋ก๋ฒ ๋ฐฐํฌ ๋ฐ ํฅ์๋ ์ฑ๋ฅ์ ์ํด Azure Front Door(์น ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ์, ๊ธ๋ก๋ฒ HTTP/S ๋ถํ ๋ถ์ฐ, WAF ๋ณด์์ฉ) ๋๋ Azure CDN(์ฃ์ง ๋ก์ผ์ด์ ์์์ ์ ์ ์์ ์บ์ฑ์ฉ)์ ํ์ฉํ์ธ์. ์ด๋ฌํ ์๋น์ค๋ ์ง๋ฆฌ์ ์ผ๋ก ๋ถ์ฐ๋ ์ฌ์ฉ์์ ์๋ต์ฑ์ ํฌ๊ฒ ํฅ์์ํต๋๋ค.
- Azure Functions์์ ํตํฉ: Next.js API Routes๋ ๋ ๋ฆฝ์ ์ธ Azure Functions๋ก ๋ฐฐํฌ๋ ์ ์์ด ๋ฐฑ์๋ ๋ก์ง์ ๋ํ ์ธ๋ฐํ ์ ์ด, ๋ ๋ฆฝ์ ์ธ ํ์ฅ, ํน์ ๋น์ฉ ์ต์ ํ๊ฐ ๊ฐ๋ฅํฉ๋๋ค. ์ด๋ ๊ด์ฌ์ฌ ๋ถ๋ฆฌ ๋ฐ ๊ฐ๋ณ API ํ์ฅ์ ํนํ ์ ์ฉํฉ๋๋ค.
Azure๋ฅผ ์ํ ์ต์ ํ ์ ๋ต: ๋์ ์์(ISR, API Routes, SSR)๊ฐ ์๋ ์ฃผ๋ก ์ ์ ์ธ Next.js ์ฌ์ดํธ์ ๊ฒฝ์ฐ, ์ฌ์ฉ ํธ์์ฑ๊ณผ ํตํฉ๋ ์๋ฒ๋ฆฌ์ค ๊ธฐ๋ฅ ๋๋ฌธ์ Azure Static Web Apps๊ฐ ์ ๊ทน ๊ถ์ฅ๋ฉ๋๋ค. ๋ ๋ณต์กํ๊ฑฐ๋ ์ ํต์ ์ธ ์๋ฒ ๊ธฐ๋ฐ Next.js ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ, Azure App Service๋ ๊ฒฌ๊ณ ํ๊ณ ํ์ฅ ๊ฐ๋ฅํ ํ๊ฒฝ์ ์ ๊ณตํฉ๋๋ค. ๊ธ๋ก๋ฒ ์ ์ง์ฐ ์ฝํ ์ธ ์ ๋ฌ ๋ฐ ํฅ์๋ ๋ณด์์ ์ํด ํญ์ ์ ํ๋ฆฌ์ผ์ด์ ์์ Azure Front Door ๋๋ Azure CDN์ ๋ฐฐ์นํ์ธ์. ์ง์์ ์ธ ๋ฐฐํฌ๋ฅผ ์ํด Azure DevOps ๋๋ GitHub Actions๋ฅผ ํ์ฉํ์ธ์.
6. ์์ฒด ํธ์คํ (์: Node.js ์๋ฒ / Docker)
์ต๋์ ์ ์ด, ํน์ ๊ท์ ์ค์ ์๊ตฌ์ฌํญ, ๊ทน๋จ์ ์ธ ์ฌ์ฉ์ ์ ์ ๋๋ ๋ง์ถคํ ์ธํ๋ผ๋ฅผ ์ํด ๊ฐ์ ๋จธ์ (VM), ๋ฒ ์ด๋ฉํ ์๋ฒ ๋๋ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ์์ Next.js๋ฅผ ์์ฒด ํธ์คํ ํ๋ ๊ฒ์ ์ฌ์ ํ ์คํ ๊ฐ๋ฅํ ์ต์ ์ ๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ์๋นํ ์ด์ ์ ๋ฌธ ์ง์์ ์๊ตฌํฉ๋๋ค.
- Node.js ์๋ฒ (PM2 / Nginx):
- ์คํ: Node.js ์๋ฒ์์
next start
๋ฅผ ์คํํฉ๋๋ค. PM2์ ๊ฐ์ ํ๋ก์ธ์ค ๊ด๋ฆฌ์๋ฅผ ์ฌ์ฉํ์ฌ Next.js ํ๋ก์ธ์ค๋ฅผ ํ์ฑ ์ํ๋ก ์ ์งํ๊ณ , ์ฌ์์์ ๊ด๋ฆฌํ๋ฉฐ, ๋ฉํฐ ์ฝ์ด ํ์ฉ์ ์ํ ํด๋ฌ์คํฐ๋ง์ ์ฒ๋ฆฌํฉ๋๋ค. - Nginx/Apache ๋ฆฌ๋ฒ์ค ํ๋ก์: Nginx ๋๋ Apache๋ฅผ ๋ฆฌ๋ฒ์ค ํ๋ก์๋ก ๊ตฌ์ฑํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ ์ ์์ ์ ์ง์ (๋งค์ฐ ํจ์จ์ ์ผ๋ก) ์ ๊ณตํ๊ณ ๋์ ์์ฒญ(SSR, API Routes)์ Node.js ์๋ฒ๋ก ์ ๋ฌํ ์ ์์ต๋๋ค. Nginx๋ SSL ์ข ๋ฃ, ์์ฒญ ๋ฒํผ๋ง, ์ ๊ตํ ์บ์ฑ๋ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
- ์๋ฒ ์ต์ ํ: ์๋ฒ์ ์ถฉ๋ถํ ๋ฆฌ์์ค(CPU, RAM)๊ฐ ์๋์ง ํ์ธํฉ๋๋ค. ์ต์ ์ ์ฑ๋ฅ์ ์ํด ๋คํธ์ํฌ ์ค์ ๊ณผ ํ์ผ ์์คํ I/O๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
- ์คํ: Node.js ์๋ฒ์์
- Docker ์ปจํ
์ด๋:
- ์ปจํ ์ด๋ํ: Next.js ์ ํ๋ฆฌ์ผ์ด์ , Node.js ๋ฐํ์ ๋ฐ ๋ชจ๋ ์์กด์ฑ์ Docker ์ด๋ฏธ์ง๋ก ํจํค์งํฉ๋๋ค. ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์บก์ํํ์ฌ ๋ค๋ฅธ ํ๊ฒฝ(๊ฐ๋ฐ, ์คํ ์ด์ง, ํ๋ก๋์ )์์ ์ผ๊ด๋ ๋ฐฐํฌ๋ฅผ ๋ณด์ฅํฉ๋๋ค.
- ์ค์ผ์คํธ๋ ์ด์ : ์ฟ ๋ฒ๋คํฐ์ค(EKS, GKE, AKS ๋๋ ์์ฒด ๊ด๋ฆฌ), Docker Swarm ๋๋ ๋ ๊ฐ๋จํ Docker Compose ์ค์ ๊ณผ ๊ฐ์ ์ปจํ ์ด๋ ์ค์ผ์คํธ๋ ์ด์ ํ๋ซํผ์ ์ฌ์ฉํ์ฌ ์ด๋ฌํ ์ปจํ ์ด๋๋ฅผ ๋ฐฐํฌํฉ๋๋ค. ํนํ ์ฟ ๋ฒ๋คํฐ์ค๋ ๊ณ ๊ธ ํ์ฅ, ๋กค๋ง ์ ๋ฐ์ดํธ, ์๊ฐ ์น์ ๊ธฐ๋ฅ ๋ฐ ์๋น์ค ๊ฒ์์ ์ ๊ณตํฉ๋๋ค.
- CDN ํตํฉ: ์์ฒด ํธ์คํ ์ ํ๊ณผ ๊ด๊ณ์์ด ๊ธ๋ก๋ฒ ์ฑ๋ฅ์ ํ์์ ์ ๋๋ค. ์ 3์ ๊ธ๋ก๋ฒ CDN(์: Cloudflare, Akamai, Fastly, Amazon CloudFront, Google Cloud CDN, Azure CDN)๊ณผ ํตํฉํ์ฌ ์ ์ ์์ ๋ฐ ์ ์ฌ์ ์ผ๋ก ๋์ ์ฝํ ์ธ ๋ฅผ ์ฃ์ง์์ ์บ์ํ์ฌ ์ฌ์ฉ์์ ์ง์ฐ ์๊ฐ์ ๋ํญ ์ค์ ๋๋ค.
- ๋ถํ ๋ถ์ฐ: ๊ณ ๊ฐ์ฉ์ฑ ๋ฐ ํ์ฅ์ฑ์ ์ํด Next.js ์ธ์คํด์ค ์์ ๋ถํ ๋ถ์ฐ๊ธฐ(์: HAProxy, Nginx ๋๋ ํด๋ผ์ฐ๋ ์ ๊ณต์ ์ฒด์ ๋ถํ ๋ถ์ฐ๊ธฐ)๋ฅผ ๋ฐฐ์นํฉ๋๋ค. ์ด๋ ๋ค์ด์ค๋ ํธ๋ํฝ์ ์ฌ๋ฌ ์ธ์คํด์ค์ ๋ถ์ฐ์์ผ ๋ณ๋ชฉ ํ์์ ๋ฐฉ์งํฉ๋๋ค.
- ๋ชจ๋ํฐ๋ง & ๋ก๊น : ํ๋ก๋์ ํ๊ฒฝ์์์ ์ฑ๋ฅ ํต์ฐฐ๋ ฅ, ์ค๋ฅ ์ถ์ , ๋๋ฒ๊น ์ ์ํด ๊ฒฌ๊ณ ํ ๋ชจ๋ํฐ๋ง(์: Prometheus, Grafana, Datadog) ๋ฐ ์ค์ ์ง์ค์ ๋ก๊น ์๋ฃจ์ (์: ELK ์คํ - Elasticsearch, Logstash, Kibana; ๋๋ Splunk)์ ๊ตฌํํฉ๋๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ทผ์ ์ฑ: ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฟผ๋ฆฌ ์ง์ฐ ์๊ฐ์ ์ต์ํํ๊ธฐ ์ํด Next.js ์๋ฒ์ ๋์ผํ ์ง๋ฆฌ์ ์ง์ญ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํธ์คํ ํฉ๋๋ค. ๊ธ๋ก๋ฒ ์ฝ๊ธฐ๋ฅผ ์ํด ์ฝ๊ธฐ ์ ์ฉ ๋ณต์ ๋ณธ์ ๊ณ ๋ คํฉ๋๋ค.
์์ฒด ํธ์คํ ์ ์ํ ์ต์ ํ ์ ๋ต: ์ด ์ ๊ทผ ๋ฐฉ์์ ์๋นํ ์ด์ ์ค๋ฒํค๋์ ์ ๋ฌธ ์ง์์ ์๊ตฌํฉ๋๋ค. ๋ชจ๋ ์ ์ ๋ฐ ์บ์๋ ์ฝํ ์ธ ์ ๋ํ ๊ฒฌ๊ณ ํ CDN ํตํฉ์ ์ง์คํ์ธ์. ์ค๋ฆฌ์ง ํํธ๋ฅผ ์ต์ํํ๊ธฐ ์ํด ํจ์จ์ ์ธ HTTP ์บ์ฑ ์ ๋ต(๋ธ๋ผ์ฐ์ , Nginx, CDN)์ ๊ตฌํํ์ธ์. ๊ณ ๊ฐ์ฉ์ฑ ๋ฐ ๋ถ์ฐ ํธ๋ํฝ์ ์ํด ์ ์ ํ ๋ถํ ๋ถ์ฐ์ ๋ณด์ฅํ์ธ์. ์ผ๊ด์ฑ, ๋จ์ํ๋ ํ์ฅ, ์์กด์ฑ ๊ด๋ฆฌ๋ฅผ ์ํด Docker๋ฅผ ์ฌ์ฉํ ์ปจํ ์ด๋ํ๋ฅผ ์ ๊ทน ๊ถ์ฅํฉ๋๋ค. ๋ฐ๋ณต ๊ฐ๋ฅํ๊ณ ์ ๋ขฐํ ์ ์๋ ๋ฆด๋ฆฌ์ค๋ฅผ ๋ณด์ฅํ๊ธฐ ์ํด ๊ฒฌ๊ณ ํ CI/CD ํ์ดํ๋ผ์ธ(์: Jenkins, GitLab CI, GitHub Actions)์ผ๋ก ๋ฐฐํฌ๋ฅผ ์๋ํํ์ธ์.
ํ๋ซํผ์ ์๊ด์๋ Next.js ์ผ๋ฐ ์ต์ ํ ์์น
ํ๋ซํผ๋ณ ์ต์ ํ๊ฐ ์ค์ํ์ง๋ง, ๋ชจ๋ ํ๋ก์ ํธ์ ๋ณดํธ์ ์ผ๋ก ์ ์ฉ๋์ด ์ฑ๋ฅ์ ๊ทน๋ํํด์ผ ํ๋ ๋ช ๊ฐ์ง ์ผ๋ฐ์ ์ธ Next.js ๋ชจ๋ฒ ์ฌ๋ก๊ฐ ์์ต๋๋ค:
- ์ด๋ฏธ์ง ์ต์ ํ: ํญ์
next/image
๋ฅผ ์ฌ์ฉํ์ธ์. ์ด ์ปดํฌ๋ํธ๋ ๋ธ๋ผ์ฐ์ ์ง์์ ๋ฐ๋ผ ์ด๋ฏธ์ง๋ฅผ ์๋์ผ๋ก ์ต์ ํ, ๋ฆฌ์ฌ์ด์ฆ, ์ง์ฐ ๋ก๋ฉํ๋ฉฐ ์ต์ ํ์(WebP ๋๋ AVIF ๋ฑ)์ผ๋ก ์ ๊ณตํฉ๋๋ค. ์ ํํ ํ๋ซํผ(์: Vercel, Netlify ๋๋ ์ฌ์ฉ์ ์ ์ CDN/์๋ฒ๋ฆฌ์ค ํจ์)์ ์ ํฉํ ์ด๋ฏธ์ง ๋ก๋๋ฅผ ๊ตฌ์ฑํ์ธ์. - ํฐํธ ์ต์ ํ: ์๋ ํฐํธ ์ต์ ํ๋ฅผ ์ํด
next/font
(Next.js 13์์ ๋์ )๋ฅผ ํ์ฉํ์ธ์. ์ฌ๊ธฐ์๋ Google Fonts ์์ฒด ํธ์คํ , ํ์ํ ๋ฌธ์๋ง ํฌํจํ๋๋ก ํฐํธ ์๋ธ์ธํ , ํฐํธ ์ฌ์ ๋ก๋ฉ ๋ฐ ์ฌ๋ฐ๋ฅธ ํฐํธ ํ์ ๋ณด์ฅ์ ํตํ ๋ ์ด์์ ์ด๋(CLS) ์ ๊ฑฐ๊ฐ ํฌํจ๋ฉ๋๋ค. - ์ฝ๋ ๋ถํ ๋ฐ ์ง์ฐ ๋ก๋ฉ: Next.js๋ ์๋์ผ๋ก JavaScript ๋ฒ๋ค์ ์ฝ๋ ๋ถํ ํ์ง๋ง, ์ฆ์ ๋ณด์ด์ง ์๊ฑฐ๋ ์ํธ์์ฉํ์ง ์๋ ์ปดํฌ๋ํธ(์: ๋ชจ๋ฌ, ์คํฌ๋กค ์๋์ ๋ํ๋๋ ์บ๋ฌ์
)๋ฅผ ์ง์ฐ ๋ก๋ฉ(
next/dynamic
์ฌ์ฉ)ํ์ฌ ์ถ๊ฐ๋ก ์ต์ ํํ ์ ์์ต๋๋ค. ์ด๋ ์ด๊ธฐ JavaScript ํ์ด๋ก๋๋ฅผ ์ค์ฌ์ค๋๋ค. - ๋ฐ์ดํฐ ํ์นญ ์ ๋ต: ๊ฐ ํ์ด์ง์ ์ปดํฌ๋ํธ์ ๋ง๋ ์ฌ๋ฐ๋ฅธ ๋ฐ์ดํฐ ํ์นญ ์ ๋ต์ ์ ํํ์ธ์:
- ์์ ์ ์ด๊ณ ๋น๋ ์์ ์ ์ฌ์ ๋ ๋๋ง๋ ์ ์๋ ์ฝํ ์ธ (์: ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ, ์ ํ ํ์ด์ง)์๋ SSG๋ฅผ ์ฐ์ ์ ์ผ๋ก ์ฌ์ฉํ์ธ์.
- ์ฃผ๊ธฐ์ ์ผ๋ก ์ ๋ฐ์ดํธ๋์ง๋ง ์ค์๊ฐ ์ ์ ๋๊ฐ ํ์ํ์ง ์์ ์ฝํ ์ธ (์: ๋ด์ค ํผ๋, ์ฝ๊ฐ์ ์ง์ฐ์ด ์๋ ์ฃผ๊ฐ)์๋ ISR์ ์ฌ์ฉํ์ธ์.
- ๋ชจ๋ ์์ฒญ์ ๋ํด ์ ์ ๋๊ฐ ๊ฐ์ฅ ์ค์ํ ์ง์ ์ผ๋ก ๋์ ์ด๊ณ , ์ฌ์ฉ์๋ณ์ด๊ฑฐ๋, ์์ฃผ ๋ณ๊ฒฝ๋๋ ๋ฐ์ดํฐ(์: ์ธ์ฆ๋ ์ฌ์ฉ์ ๋์๋ณด๋, ๊ฒฐ์ ์์ฝ)์๋ SSR์ ๋จ๊ฒจ๋์ธ์.
- ์ด๊ธฐ ํ์ด์ง ๋ก๋ ํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ์ํธ์์ฉ์ด ๋ง์ ์ปดํฌ๋ํธ์๋ CSR(์: SWR ๋๋ React Query์ ๊ฐ์ ๋ฐ์ดํฐ ํ์นญ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ)์ ํ์ฉํ์ฌ ์ด๊ธฐ ๋ ๋๋ง ์ฐจ๋จ์ ๋ฐฉ์งํ์ธ์.
- ์บ์ฑ: ๋จ์ํ CDN ์บ์ฑ์ ๋์ด์๋ ํฌ๊ด์ ์ธ ์บ์ฑ ์ ๋ต์ ๊ตฌํํ์ธ์. ์ฌ๊ธฐ์๋ ์ ์ ์์
์ ๋ํ ์ ์ ํ HTTP ์บ์ฑ ํค๋(
Cache-Control
,Expires
) ์ค์ ๊ณผ API ์๋ต ๋๋ SSR ํจ์์ ๋น์ฉ์ด ๋ง์ด ๋๋ ๊ณ์ฐ์ ๋ํ ์๋ฒ ์ธก ์บ์ฑ(์: Redis, ์ธ๋ฉ๋ชจ๋ฆฌ ์บ์) ๊ณ ๋ ค๊ฐ ํฌํจ๋ฉ๋๋ค. - JavaScript ๋ฒ๋ค ํฌ๊ธฐ ์ต์ํ: ์ ๊ธฐ์ ์ผ๋ก ์์กด์ฑ์ ๊ฐ์ฌํ๊ณ , ์ฌ์ฉํ์ง ์๋ ์ฝ๋๋ฅผ ์ ๊ฑฐ(ํธ๋ฆฌ ์์ดํน)ํ๋ฉฐ, Webpack Bundle Analyzer์ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฒ๋ค ํฌ๊ธฐ์ ๊ธฐ์ฌํ๋ ํฐ ๋ชจ๋์ ์๋ณํ๊ณ ์ต์ ํํ์ธ์. ๋ ์์ ๋ฒ๋ค์ ๋ ๋น ๋ฅธ ํ์ฑ๊ณผ ์คํ์ผ๋ก ์ด์ด์ง๋๋ค.
- ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง: ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง ๋๊ตฌ(์: Google Lighthouse, Web Vitals, DataDog, New Relic, Sentry, LogRocket)์ ํตํฉํ์ฌ ๋ณ๋ชฉ ํ์์ ์๋ณํ๊ณ , ์ค์ ์ฌ์ฉ์ ์ฑ๋ฅ์ ์ถ์ ํ๋ฉฐ, ๋ฌธ์ ๋ฅผ ์ ์ํ๊ฒ ์ง๋จํ์ธ์.
- ๋ณด์ ํค๋: ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณด์ ํ์ธ๋ฅผ ๊ฐํํ๊ณ ์ฌ์ฉ์๋ฅผ ๋ณดํธํ๊ธฐ ์ํด ์ ์ ํ ๋ณด์ ํค๋(์: Content-Security-Policy, HTTP Strict Transport Security, X-Content-Type-Options)๋ฅผ ๊ตฌํํ์ธ์.
- ํ๊ฒฝ ๋ณ์: ํด๋ผ์ด์ธํธ ์ธก ๋ณ์์ ์๋ฒ ์ธก ๋ณ์๋ฅผ ๊ตฌ๋ถํ์ฌ ๋ฏผ๊ฐํ ์ ๋ณด ๋ ธ์ถ์ ํผํ๋๋ก ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ๊ด๋ฆฌํ์ธ์.
์ฌ๋ฐ๋ฅธ ํ๋ซํผ ์ ํํ๊ธฐ
Next.js ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด์์ ์ธ ๋ฐฐํฌ ํ๋ซํผ์ ์ ํํ๋ ๊ฒ์ ๋ช ๊ฐ์ง ์ค์ํ ์์์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค:
- ๊ฐ๋ฐํ ์ ๋ฌธ์ฑ: ๊ฐ๋ฐ์๋ค์ด ์ด๋ฏธ ์ด๋ค ํ๋ซํผ์ ์ต์ํ๊ฐ์? ๊ธฐ์กด ์ง์์ ํ์ฉํ๋ฉด ๊ฐ๋ฐ ์๋๋ฅผ ๋์ด๊ณ ํ์ต ๊ณก์ ์ ์ค์ผ ์ ์์ต๋๋ค.
- ๊ธฐ์กด ์ธํ๋ผ: ์ด๋ฏธ ๋ค๋ฅธ ์๋น์ค ๋๋ฌธ์ AWS, GCP ๋๋ Azure์ ๊น์ด ํฌ์ํ๊ณ ์๋์? ๊ธฐ์กด ํด๋ผ์ฐ๋ ๊ณ์ ์ ํ์ฉํ๋ฉด ํตํฉ, ๊ด๋ฆฌ, ๋น์ฉ ํตํฉ์ ๋จ์ํํ ์ ์์ต๋๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ๋ณต์ก์ฑ ๋ฐ ๋ ๋๋ง ์๊ตฌ์ฌํญ: ์ฑ์ด ์ฃผ๋ก ์ ์ ์ธ๊ฐ์, SSR/API ๋ผ์ฐํธ์ ํฌ๊ฒ ์์กดํ๋์, ์๋๋ฉด ๋์ ํผํฉ์ธ๊ฐ์? ํ๋ซํผ์ ์๋ก ๋ค๋ฅธ ์์ญ์์ ๋ฐ์ด๋ฉ๋๋ค.
- ํ์ฅ์ฑ ์๊ตฌ์ฌํญ: ์ผ๋ง๋ ๋ง์ ํธ๋ํฝ์ ์์ํ๋ฉฐ, ์ผ๋ง๋ ๋น ๋ฅด๊ฒ ์ฑ์ฅํ ์ ์๋์? ํ๋ ฅ์ ์ธ ํ์ฅ๊ณผ ์๋ฒ๋ฆฌ์ค ๋ชจ๋ธ์ ์ ๊ณตํ๋ ํ๋ซํผ์ ๊ณ ๋ คํ์ธ์.
- ๋น์ฉ ๋ฏผ๊ฐ๋: ์์ฐ๊ณผ ํธ๋ํฝ ํจํด์ ๋ฐ๋ผ ๊ฐ๊ฒฉ ๋ชจ๋ธ(์ฌ์ฉ๋ ๊ธฐ๋ฐ ์๋ฒ๋ฆฌ์ค vs. ์์ ๊ฐ๋ ์ธ์คํด์ค)์ ํ๊ฐํ์ธ์.
- ์ ์ด vs. ํธ์์ฑ: ๊ธฐ๋ณธ ์ธํ๋ผ์ ๋ํ ์ธ๋ฐํ ์ ์ด(์: VM ๋๋ ์ฟ ๋ฒ๋คํฐ์ค์์์ ์์ฒด ํธ์คํ )๊ฐ ํ์ํ๊ฐ์, ์๋๋ฉด ์์ ๊ด๋ฆฌํ์ ์์ฌ์ด ์ ๊ทผ ๋ฐฉ์(Vercel, Netlify)์ ์ ํธํ๋์?
- ๊ท์ ์ค์ ๋ฐ ๋ณด์: ํน์ ์ฐ์ ๊ท์ ์ด๋ ๋ด๋ถ ๋ณด์ ์ ์ฑ ์ด ํน์ ์ธํ๋ผ ์ ํ์ ์ง์ํ๊ฑฐ๋ ํน์ ์ธ์ฆ์ ์๊ตฌํ ์ ์์ต๋๋ค.
- ๊ธ๋ก๋ฒ ๋๋ฌ ๋ฒ์: ๋ค๋ฅธ ๋๋ฅ์ ์ฌ์ฉ์์๊ฒ ๋ฎ์ ์ง์ฐ ์๊ฐ์ด ์ผ๋ง๋ ์ค์ํ๊ฐ์? ๊ฐ ํ๋ซํผ์ CDN ๋ฐ ์ฃ์ง ํจ์ ์ ๊ณต์ ๊ณ ๋ คํ์ธ์.
๋ง์ ๊ฒฝ์ฐ, Vercel์ด๋ Netlify๋ Next.js์ ๋ํด ํ์ํ ๊ธฐ๋ณธ ์ฑ๋ฅ๊ณผ ๊ฐ๋ฐ์ ๊ฒฝํ์ ์ ๊ณตํ๋ฉฐ ํ๋ก๋์ ์ผ๋ก ๊ฐ๋ ๊ฐ์ฅ ๋น ๋ฅธ ๊ฒฝ๋ก๋ฅผ ์ ๊ณตํฉ๋๋ค. ํด๋ผ์ฐ๋ ์ํ๊ณ์ ๋ ๊น์ด ํตํฉ๋๊ฑฐ๋, ๊ณ ๋๋ก ๋ง์ถคํ๋ ๋ฐฑ์๋ ์๊ตฌ์ฌํญ ๋๋ ํน์ ๊ธฐ์ ์๊ตฌ์ฌํญ์ด ์๋ ๊ฒฝ์ฐ AWS Amplify, GCP ๋๋ Azure๊ฐ ๊ฒฌ๊ณ ํ๊ณ ์ ์ฐํ ํ๋ ์์ํฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์์ฒด ํธ์คํ ์ ๊ถ๊ทน์ ์ธ ์ ์ด๋ฅผ ์ ๊ณตํ์ง๋ง ์๋นํ ์ด์ ์ค๋ฒํค๋์ ์ธํ๋ผ ๊ด๋ฆฌ ์ฑ ์์ ๋๋ฐํฉ๋๋ค.
๊ฒฐ๋ก
Next.js๋ ๊ณ ์ฑ๋ฅ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๊ธฐ ์ํ ๊ฐ๋ ฅํ ํ๋ ์์ํฌ์ด๋ฉฐ, ๋ ๋๋ง ๋ชจ๋์ ๋ค์์ฑ์ ์์ฒญ๋ ์ต์ ํ ์ ์ฌ๋ ฅ์ ์ ๊ณตํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ ์ธ๊ณ ์ฌ์ฉ์๋ฅผ ์ํด ์ด ์ ์ฌ๋ ฅ์ ๋ฐํํ๋ ค๋ฉด ์ ๋ต์ ์ด๊ณ ํ๋ซํผ์ ์ธ์งํ๋ ๋ฐฐํฌ ์ ๊ทผ ๋ฐฉ์์ด ํ์ํฉ๋๋ค. Vercel, Netlify, AWS Amplify, Google Cloud, Azure์ ๊ฐ์ ํ๋ซํผ์ ๊ณ ์ ํ ๊ฐ์ ๊ณผ ์ต์ ํ ์ ๋ต์ ์ดํดํจ์ผ๋ก์จ ์ ํ๋ฆฌ์ผ์ด์ ์ ํน์ ์๊ตฌ์ ๊ฐ์ฅ ์ ํฉํ ํ๊ฒฝ์ ์ ํํ์ฌ ์ ์ธ๊ณ์ ์ผ๋ก ๋ฒ๊ฐ์ฒ๋ผ ๋น ๋ฅธ ๋ก๋ฉ ์๊ฐ, ์ํํ ์ฌ์ฉ์ ๊ฒฝํ, ํจ์จ์ ์ธ ๋ฆฌ์์ค ํ์ฉ์ ๋ณด์ฅํ ์ ์์ต๋๋ค.
๋ฐฐํฌ๋ ์ผํ์ฑ ์ด๋ฒคํธ๊ฐ ์๋๋ผ ์ง์์ ์ธ ๊ณผ์ ์์ ๊ธฐ์ตํ์ธ์. ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ, ์ฌ์ฉ์ ํผ๋๋ฐฑ, ๊ทธ๋ฆฌ๊ณ ์ผ๋ฐ์ ์ธ Next.js ๋ชจ๋ฒ ์ฌ๋ก ์ค์์ ๋ํ ์ง์์ ์ธ ๋ชจ๋ํฐ๋ง์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ๋์ฑ ๊ฐ์ ํ๊ณ ๊ฒฝ์ ์ฐ์๋ฅผ ์ ์งํ๋ ๋ฐ ๋์์ด ๋ ๊ฒ์ ๋๋ค. ํ๋ช ํ๊ฒ ์ ํํ๊ณ , ๋ถ์ง๋ฐํ ์ต์ ํํ๋ฉด, ์ฌ๋ฌ๋ถ์ Next.js ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธ๋ก๋ฒ ์น ๋ฌด๋์์ ๋ฒ์ฐฝํ ๊ฒ์ ๋๋ค.