๐ Next.js 15๋ ๋ฌด์์ธ๊ฐ?
๐ ํต์ฌ ์์ฝ
• App Router ์์ ํ • Server Components ๊ธฐ๋ณธ๊ฐ • Turbopack ๋์ • ์ฑ๋ฅ 76% ํฅ์
Next.js 15๋ Vercel์์ ๊ฐ๋ฐํ React ๊ธฐ๋ฐ ํ์คํ ์น ํ๋ ์์ํฌ์ ์ต์ ๋ฒ์ ์ผ๋ก, ์น ๊ฐ๋ฐ์ ํจ๋ฌ๋ค์์ ์์ ํ ๋ฐ๊พธ๋ ํ์ ์ ์ธ ๊ธฐ๋ฅ๋ค์ ํ์ฌํ๊ณ ์์ต๋๋ค. ์ด๋ฒ ๋ฒ์ ์์๋ App Router๊ฐ ์์ ํ๋์๊ณ , Server Components๊ฐ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ค์ ๋์ด ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง์ ์๋ก์ด ํ์ค์ ์ ์ํฉ๋๋ค.
๊ฐ์ฅ ํฐ ๋ณํ๋ ๊ธฐ์กด์ Pages Router์์ App Router๋ก์ ์ ํ์ ๋๋ค. ๐ฏ App Router๋ React 18์ ์ต์ ๊ธฐ๋ฅ๋ค์ ์์ ํ ํ์ฉํ์ฌ ๋ ์ง๊ด์ ์ด๊ณ ๊ฐ๋ ฅํ ๋ผ์ฐํ ์์คํ ์ ์ ๊ณตํฉ๋๋ค. ํนํ Streaming, Suspense, Server Components๋ฅผ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ํ์ฌ ์ฌ์ฉ์ ๊ฒฝํ๊ณผ ๊ฐ๋ฐ์ ๊ฒฝํ์ ๋์์ ํฅ์์์ผฐ์ต๋๋ค.
๋ํ Turbopack์ด ๊ธฐ๋ณธ ๋ฒ๋ค๋ฌ๋ก ์ฑํ๋์ด ๊ฐ๋ฐ ์๋ฒ ์์ ์๊ฐ์ด ๊ธฐ์กด ๋๋น ์ต๋ 76% ๋จ์ถ๋์์ผ๋ฉฐ, ์ฝ๋ ๋ณ๊ฒฝ ์ Hot Reload ์๋๋ ํฌ๊ฒ ๊ฐ์ ๋์์ต๋๋ค. โก TypeScript ์ง์๋ ๋์ฑ ๊ฐํ๋์ด ํ์ ์์ ์ฑ์ ๋ณด์ฅํ๋ฉด์๋ ๊ฐ๋ฐ ์์ฐ์ฑ์ ๊ทน๋ํํ ์ ์์ต๋๋ค.
๐บ๏ธ App Router ํต์ฌ ๊ฐ๋
App Router๋ Next.js 13์์ ๋์ ๋์ด 15์์ ์์ ํ ์์ ํ๋ ์๋ก์ด ๋ผ์ฐํ ์์คํ ์ผ๋ก, ํ์ผ ์์คํ ๊ธฐ๋ฐ์ ๋ผ์ฐํ ์ ํ์ธต ๋ ๋ฐ์ ์ํจ ํ์ ์ ์ธ ์ ๊ทผ๋ฒ์ ๋๋ค. ๊ธฐ์กด Pages Router์ ๋ฌ๋ฆฌ `app` ๋๋ ํ ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉฐ, ํด๋ ๊ตฌ์กฐ๊ฐ ๊ณง URL ๊ตฌ์กฐ๊ฐ ๋๋ ์ง๊ด์ ์ธ ๋ฐฉ์์ ์ฑํํ์ต๋๋ค.
App Router์ ํต์ฌ์ ๋ ์ด์์(Layout) ์์คํ ์ ๋๋ค. ๐ ๊ฐ ํด๋์ `layout.tsx` ํ์ผ์ ์์ฑํ์ฌ ํด๋น ๊ฒฝ๋ก์ ํ์ ๊ฒฝ๋ก๋ค์ด ๊ณต์ ํ ๋ ์ด์์์ ์ ์ํ ์ ์์ต๋๋ค. ์ด๋ ์ฝ๋ ์ฌ์ฌ์ฉ์ฑ์ ๊ทน๋ํํ๊ณ , ๋ค๋น๊ฒ์ด์ ์ ๊ณตํต UI ์์๋ค์ ๋ถํ์ํ ๋ฆฌ๋ ๋๋ง์ ๋ฐฉ์งํฉ๋๋ค.
์นดํ ๊ณ ๋ฆฌ | ํ์ผ๋ช | ์ญํ | ์ค๋ช |
---|---|---|---|
ํต์ฌ ๊ธฐ๋ฅ | page.tsx | ํ์ด์ง ์ปดํฌ๋ํธ | ์ค์ ํ์ด์ง UI๋ฅผ ์ ์ |
ํต์ฌ ๊ธฐ๋ฅ | layout.tsx | ๋ ์ด์์ ์ปดํฌ๋ํธ | ๊ณตํต ๋ ์ด์์ ๋ฐ ์ค์ฒฉ ๋ ์ด์์ |
๊ฐ๋ฐ ๊ฒฝํ | loading.tsx | ๋ก๋ฉ ์ปดํฌ๋ํธ | Suspense์ ์๋ ์ฐ๋ |
๊ฐ๋ฐ ๊ฒฝํ | error.tsx | ์๋ฌ ์ปดํฌ๋ํธ | Error Boundary์ ์๋ ์ฐ๋ |
๊ฐ๋ฐ ๊ฒฝํ | not-found.tsx | 404 ์ปดํฌ๋ํธ | 404 ์ํ ์ฒ๋ฆฌ |
โ๏ธ Server Components ์์ ๋ถ์
Server Components๋ React 18์์ ๋์ ๋ ํ์ ์ ์ธ ๊ฐ๋ ์ผ๋ก, Next.js 15์์๋ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ค์ ๋์ด ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ๊ทผ๋ณธ์ ์ผ๋ก ๊ฐ์ ํฉ๋๋ค. ๐ ๊ธฐ์กด์ Client Components์ ๋ฌ๋ฆฌ ์๋ฒ์์ ๋ ๋๋ง๋์ด ํด๋ผ์ด์ธํธ๋ก ์ ์ก๋๋ฏ๋ก, JavaScript ๋ฒ๋ค ํฌ๊ธฐ๋ฅผ ๋ํญ ์ค์ด๊ณ ์ด๊ธฐ ๋ก๋ฉ ์๋๋ฅผ ํฌ๊ฒ ํฅ์์ํต๋๋ค.
์นดํ ๊ณ ๋ฆฌ | ๊ตฌ๋ถ | Server Components | Client Components |
---|---|---|---|
์ฑ๋ฅ ๊ด๋ จ | ๋ ๋๋ง ์์น | โ ์๋ฒ์์ ๋ ๋๋ง | ๋ธ๋ผ์ฐ์ ์์ ๋ ๋๋ง |
์ฑ๋ฅ ๊ด๋ จ | ๋ฒ๋ค ํฌ๊ธฐ | โ JavaScript ๋ฒ๋ค์ ํฌํจ๋์ง ์์ | JavaScript ๋ฒ๋ค์ ํฌํจ๋จ |
์ฑ๋ฅ ๊ด๋ จ | ๋ฐ์ดํฐ ํ์นญ | โ ์๋ฒ์์ ์ง์ ์ ๊ทผ ๊ฐ๋ฅ | API ํตํด ์ ๊ทผ |
์ํธ์์ฉ ๊ธฐ๋ฅ | React Hooks | โ ์ฌ์ฉ ๋ถ๊ฐ | โ ์ฌ์ฉ ๊ฐ๋ฅ |
์ํธ์์ฉ ๊ธฐ๋ฅ | ์ด๋ฒคํธ ํธ๋ค๋ฌ | โ ์ฌ์ฉ ๋ถ๊ฐ | โ ์ฌ์ฉ ๊ฐ๋ฅ |
์ํธ์์ฉ ๊ธฐ๋ฅ | ๋ธ๋ผ์ฐ์ API | โ ์ฌ์ฉ ๋ถ๊ฐ | โ ์ฌ์ฉ ๊ฐ๋ฅ |
๐ฏ ์ค์ํ ๊ฒ์ Server Components์ Client Components๋ฅผ ์ ์ ํ ์กฐํฉํ์ฌ ์ต์ ์ ์ฑ๋ฅ๊ณผ ์ฌ์ฉ์ ๊ฒฝํ์ ๋ฌ์ฑํ๋ ๊ฒ์ ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ ์ ์ฝํ ์ธ ์ ๋ฐ์ดํฐ ํ์นญ์ Server Components๋ก, ์ธํฐ๋ํฐ๋ธํ ๊ธฐ๋ฅ์ Client Components๋ก ๊ตฌํํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๐ ๊ธฐ์กด Pages Router์์ ์ฐจ์ด์
Pages Router์์ App Router๋ก์ ์ ํ์ ๋จ์ํ ์ ๊ทธ๋ ์ด๋๊ฐ ์๋ ์์ ํ ๋ค๋ฅธ ๊ฐ๋ฐ ํจ๋ฌ๋ค์์ผ๋ก์ ๋ณํ์ ๋๋ค. ๊ฐ์ฅ ์ค์ํ ์ฐจ์ด์ ๋ค์ ํ๋ก ์ ๋ฆฌํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
์นดํ ๊ณ ๋ฆฌ | ๊ตฌ๋ถ | Pages Router | App Router |
---|---|---|---|
ํต์ฌ ๊ธฐ๋ฅ | ํ์ผ ๊ตฌ์กฐ | pages/about.js → /about | app/about/page.js → /about |
ํต์ฌ ๊ธฐ๋ฅ | ๋ ์ด์์ | _app.js๋ฅผ ํตํ ์ ์ญ ๋ ์ด์์ | โ ์ค์ฒฉ ๋ ์ด์์ ์ง์ |
์ฑ๋ฅ ๊ด๋ จ | ๋ฐ์ดํฐ ํ์นญ | getServerSideProps getStaticProps getInitialProps |
โ
์ปดํฌ๋ํธ ๋ด fetch async/await ์ง์ ์ฌ์ฉ |
์ฑ๋ฅ ๊ด๋ จ | ๋ ๋๋ง ์ ๋ต | ํ์ด์ง ๋จ์ ์ค์ | โ ์ปดํฌ๋ํธ ๋จ์ ์ธ๋ฐํ ์ ์ด |
์ฑ๋ฅ ๊ด๋ จ | ์คํธ๋ฆฌ๋ฐ | โ ๋ฏธ์ง์ | โ ๊ธฐ๋ณธ ์ง์ |
๊ฐ๋ฐ ๊ฒฝํ | API Routes | pages/api/users.js | app/api/users/route.js |
๐ ๏ธ ์ค์ ํ๋ก์ ํธ ์ ์ฉ ๋ฐฉ๋ฒ
Next.js 15 ํ๋ก์ ํธ๋ฅผ ์์ํ๋ ๊ฒ์ ๋งค์ฐ ๊ฐ๋จํฉ๋๋ค. ๐ `npx create-next-app@latest my-app`์ผ๋ก ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ฉด ์๋์ผ๋ก App Router๊ฐ ์ค์ ๋ ํ๊ฒฝ์ ์ป์ ์ ์์ต๋๋ค.
์ค์ ๊ฐ๋ฐ์์๋ ์ปดํฌ๋ํธ ์ค๊ณ๊ฐ ํต์ฌ์ ๋๋ค. ๐ฏ Server Components๋ฅผ ์ต๋ํ ํ์ฉํ์ฌ ์ด๊ธฐ ๋ก๋ฉ ์ฑ๋ฅ์ ์ต์ ํํ๊ณ , ํ์ํ ๋ถ๋ถ๋ง Client Components๋ก ๊ตฌํํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ธ๋ก๊ทธ ํฌ์คํธ ๋ชฉ๋ก์ Server Component๋ก ๊ตฌํํ๊ณ , ๊ฒ์ ๊ธฐ๋ฅ์ด๋ ํํฐ๋ง ๊ธฐ๋ฅ์ Client Component๋ก ๊ตฌํํ๋ ์์ ๋๋ค.
์ํ ๊ด๋ฆฌ๋ ์๋ก์ด ์ ๊ทผ์ด ํ์ํฉ๋๋ค. ๐ Server Components์์๋ ์ ์ญ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก, URL ์ํ๋ ์๋ฒ ์ํ๋ฅผ ์ ๊ทน ํ์ฉํด์ผ ํฉ๋๋ค. Client Components์์๋ง Zustand, Redux ๋ฑ์ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
โก ์ฑ๋ฅ ์ต์ ํ ์ ๋ต
Next.js 15์ ์ฑ๋ฅ ์ต์ ํ๋ Server Components์ App Router์ ํน์ฑ์ ์ต๋ํ ํ์ฉํ๋ ๊ฒ์์ ์์๋ฉ๋๋ค. ๐ฏ Server Components๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ์ฌ์ฉํ์ฌ ํด๋ผ์ด์ธํธ JavaScript ๋ฒ๋ค ํฌ๊ธฐ๋ฅผ ์ต์ํํ๊ณ , Client Components๋ ์ ๋ง ํ์ํ ์ธํฐ๋ํฐ๋ธ ๊ธฐ๋ฅ์๋ง ํ์ ํ์ฌ ์ฌ์ฉํ๋ ๊ฒ์ด ํต์ฌ์ ๋๋ค.
๋ฐ์ดํฐ ํ์นญ ์ต์ ํ๋ ์ฌ๋ฌ ์ ๋ต์ ์กฐํฉํ์ฌ ๋ฌ์ฑํ ์ ์์ต๋๋ค. ๐ Next.js 15์ ํฅ์๋ `fetch` API๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์บ์ฑ์ ์ง์ํ๋ฏ๋ก, ์ ์ ํ `cache` ์ต์ ์ ์ค์ ํ์ฌ ๋ถํ์ํ API ํธ์ถ์ ์ค์ผ ์ ์์ต๋๋ค.
์คํธ๋ฆฌ๋ฐ๊ณผ Suspense๋ฅผ ํ์ฉํ ์ ์ง์ ๋ก๋ฉ๋ ์ฌ์ฉ์ ๊ฒฝํ์ ํฌ๊ฒ ๊ฐ์ ํฉ๋๋ค. ๐ ๋ฌด๊ฑฐ์ด ์ปดํฌ๋ํธ๋ `Suspense`๋ก ๊ฐ์ธ๊ณ `loading.tsx`๋ฅผ ์ ๊ณตํ์ฌ ์ฌ์ฉ์๊ฐ ๋น ํ๋ฉด์ ๋ณด์ง ์๋๋ก ํฉ๋๋ค.
๐ ๋ง์ด๊ทธ๋ ์ด์ ๊ฐ์ด๋
๊ธฐ์กด Pages Router ํ๋ก์ ํธ๋ฅผ App Router๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๊ฒ์ ์ ์คํ ๊ณํ๊ณผ ๋จ๊ณ์ ์ ๊ทผ์ด ํ์ํ ์์ ์ ๋๋ค. ๐ ๋คํํ Next.js 15๋ ๋ ๋ผ์ฐํฐ ์์คํ ์ ๊ณต์กด์ ์ง์ํ๋ฏ๋ก ์ ์ง์ ์ธ ๋ง์ด๊ทธ๋ ์ด์ ์ด ๊ฐ๋ฅํฉ๋๋ค.
๋ง์ด๊ทธ๋ ์ด์ ์ฐ์ ์์๋ฅผ ์ ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๐ ์ผ๋ฐ์ ์ผ๋ก ์ ์ ํ์ด์ง๋ ๋ฐ์ดํฐ ์์กด์ฑ์ด ์ ์ ํ์ด์ง๋ถํฐ ์์ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. `getServerSideProps`๋ `getStaticProps`๊ฐ ์๋ ํ์ด์ง๋ค์ ํด๋น ๋ก์ง์ Server Components ๋ด์ `fetch` ํธ์ถ๋ก ๋ณ๊ฒฝํด์ผ ํฉ๋๋ค.
์ฃผ์์ฌํญ๋ ๋ง์ต๋๋ค. โ ๏ธ Client Components์์๋ง ์ฌ์ฉํ ์ ์๋ ๊ธฐ๋ฅ๋ค(Hooks, ์ด๋ฒคํธ ํธ๋ค๋ฌ, ๋ธ๋ผ์ฐ์ API ๋ฑ)์ ์ ๋๋ก ๋ถ๋ฆฌํด์ผ ํ๊ณ , ์ ์ญ ์คํ์ผ์ด๋ ๋ ์ด์์ ๊ตฌ์กฐ๋ ์๋ก์ด ๋ฐฉ์์ ๋ง๊ฒ ์กฐ์ ํด์ผ ํฉ๋๋ค.
๐ฏ ๊ฒฐ๋ก
Next.js 15์ App Router์ Server Components๋ ์น ๊ฐ๋ฐ์ ์๋ก์ด ํ์ค์ ์ ์ํ๋ ํ์ ์ ์ธ ๊ธฐ์ ์ ๋๋ค. ๐ ์ด๋ค์ ๋จ์ํ ์๋ก์ด ๊ธฐ๋ฅ์ด ์๋๋ผ, ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ๊ณผ ๊ฐ๋ฐ ๊ฒฝํ์ ๊ทผ๋ณธ์ ์ผ๋ก ๊ฐ์ ํ๋ ํจ๋ฌ๋ค์ ๋ณํ๋ฅผ ์๋ฏธํฉ๋๋ค.
ํนํ ํ๋ ์น ๊ฐ๋ฐ์์ ์ค์ํ ์ฑ๋ฅ ์ต์ ํ์ SEO ๊ฐ์ ์ ์์ฐ์ค๋ฝ๊ฒ ๋ฌ์ฑํ ์ ์๋ค๋ ์ ์ด ํฐ ์ฅ์ ์ ๋๋ค. โก ๋ฐ์ดํฐ ํ์นญ์ ๊ฐ์ํ, ์๋ ์ฝ๋ ๋ถํ , ์คํธ๋ฆฌ๋ฐ ์ง์ ๋ฑ์ ๊ฐ๋ฐ์๊ฐ ๋ณต์กํ ์ต์ ํ ์์ ์ ์๊ฐ์ ์์ง ์๊ณ ๋ ๊ณ ์ฑ๋ฅ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ์ ์๊ฒ ํด์ค๋๋ค.
๋ฌผ๋ก ํ์ต ๊ณก์ ์ด ์กด์ฌํ๊ณ , ๊ธฐ์กด ํ๋ก์ ํธ์ ๋ง์ด๊ทธ๋ ์ด์ ์๋ ์๊ฐ๊ณผ ๋ ธ๋ ฅ์ด ํ์ํฉ๋๋ค. ๐ค ํ์ง๋ง Next.js 15๊ฐ ์ ๊ณตํ๋ ์ ์ง์ ๋์ ๋ฐฉ์๊ณผ ํ๋ถํ ๋ฌธ์, ์ปค๋ฎค๋ํฐ ์ง์์ ํตํด ์ด๋ฌํ ์ด๋ ค์์ ๊ทน๋ณตํ ์ ์์ต๋๋ค. ๐ ์น ๊ฐ๋ฐ์ ๋ฏธ๋๋ฅผ ์ ๋ํ๊ณ ์ถ๋ค๋ฉด, Next.js 15์ App Router์ Server Components๋ฅผ ๋ง์คํฐํ๋ ๊ฒ์ ์ ํ์ด ์๋ ํ์์ ๋๋ค. ์ง๊ธ์ด ๋ฐ๋ก ์๋ก์ด ์น ๊ฐ๋ฐ ํจ๋ฌ๋ค์์ ๋์ ํ ์ต์ ์ ์๊ธฐ์ ๋๋ค.
'made-by-AI' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
NestJS ์์ ์ ๋ณต NestJS์ ๋ด์ฅ๋์ด ์๋ ๊ธฐ๋ฅ๋ค (2) | 2025.06.08 |
---|---|
nodeJS๊ธฐ๋ฐ ์น๊ฐ๋ฐ ํ๋ ์์ํฌ NestJS ๊ฐ๋จ ์์ฝ (0) | 2025.06.08 |
Cursor๊ฐ ์๊ฐ๋ฅผ ํ๋ Cursor (3) | 2025.06.08 |