본문 바로가기
일상이 개발

Next.js 최적화 전략 완전 정리 – SSR, SSG, ISR 실전 활용 가이드

by 디어노미 2025. 4. 21.
반응형

🚀 Next.js 기반 프로젝트 최적화 전략 – SSR, SSG, ISR 실전 활용 가이드

React 기반 프레임워크인 Next.js는 다양한 렌더링 방식과 최적화 기능을 제공하여 성능과 SEO를 모두 잡을 수 있는 강력한 도구입니다.

하지만 프로젝트를 진행하다 보면, 다음과 같은 고민이 생기죠:

  • 📄 페이지가 많을 땐 어떤 방식이 효율적일까?
  • ⚡ 매번 서버에서 렌더링해야 할까?
  • 📦 정적 생성은 SEO에 불리하지 않을까?

이번 글에서는 SSR, SSG, ISR을 구분하고 실전에서 언제 어떻게 적용할지에 대해 구체적인 예시와 함께 설명합니다.


🔍 Next.js 렌더링 방식 정리

Next.js는 3가지 대표적인 렌더링 방식을 제공합니다:

방식 설명 주요 사용처
SSR (Server Side Rendering) 요청마다 서버에서 HTML 생성 실시간 데이터, 사용자별 페이지
SSG (Static Site Generation) 빌드 시 정적 파일로 HTML 생성 블로그, 문서 페이지, 마케팅
ISR (Incremental Static Regeneration) 빌드 후에도 일정 주기로 페이지 재생성 제품 리스트, 뉴스 등 업데이트가 필요한 페이지

⚙️ 1. SSR – 서버사이드 렌더링

SSR은 매 요청 시 서버에서 최신 HTML을 생성하여 응답합니다.

{`// pages/posts/[id].tsx
export async function getServerSideProps(context) {
  const res = await fetch(\`/api/posts/\${context.params.id}\`);
  const post = await res.json();

  return {
    props: { post },
  };
}`}

장점: 항상 최신 데이터를 보여줄 수 있음
단점: 서버 부하 ↑, 응답 속도 ↓

✔️ 추천 사용처:

  • 사용자 인증 기반 페이지
  • 검색 결과 페이지
  • 주기적으로 데이터가 바뀌는 대시보드

📄 2. SSG – 정적 사이트 생성

SSG는 빌드 시 HTML을 미리 생성합니다. 성능과 SEO 모두에 유리하며 CDN으로 배포 가능합니다.

{`export async function getStaticProps() {
  const res = await fetch('/api/posts');
  const posts = await res.json();

  return {
    props: { posts },
  };
}`}

✔️ 추천 사용처:

  • 블로그 글
  • 정적인 소개 페이지 (회사 소개 등)
  • 문서 페이지

⚠️ 주의

페이지 수가 많거나, 데이터가 자주 바뀌는 경우 빌드 시간이 오래 걸릴 수 있습니다.


⏳ 3. ISR – 점진적 정적 재생성

ISR은 SSG의 장점은 유지하면서도 업데이트도 가능한 전략입니다.

{`export async function getStaticProps() {
  const res = await fetch('/api/products');
  const products = await res.json();

  return {
    props: { products },
    revalidate: 60, // 60초마다 새로 생성
  };
}`}

Next.js는 이 페이지를 캐싱하며, 백그라운드에서 새 HTML을 생성해 교체합니다.

✔️ 추천 사용처:

  • 제품 리스트
  • 뉴스/기사 페이지
  • FAQ, 고객센터 등 콘텐츠가 자주 갱신되는 곳

📌 4. 클라이언트 사이드 렌더링(CSR)은 언제?

페이지 자체는 SSG or SSR로 제공하되, 일부 데이터는 CSR 방식으로 동적 처리할 수도 있습니다.

{`const [data, setData] = useState(null);

useEffect(() => {
  fetch('/api/data').then(res => res.json()).then(setData);
}, []);`}

✔️ 추천 사용처:

  • 로그인 후 개인 정보
  • 댓글 목록, 좋아요 수 등 실시간 정보

🛠 5. 렌더링 전략 혼합 예시

/pages
├── index.tsx          # SSG (홈페이지)
├── products.tsx       # ISR
├── products/[id].tsx  # SSR
└── dashboard.tsx      # SSR + CSR (하이브리드)

→ 실무에서는 모든 페이지를 하나의 방식으로 통일하지 않고, 목적에 따라 최적의 전략을 섞어 쓰는 방식이 일반적입니다.


🧪 6. 성능 최적화와 SEO 전략

  • 📉 SSG + CDN 배포 = 최고 속도
  • 📦 SSR은 초기 로딩 속도는 느리지만, SEO는 유리
  • 🔄 ISR은 정적 성능 + 최신성 둘 다 확보
  • 🕵️‍♂️ Head 태그 구성: next/head로 메타태그 설정
{`import Head from 'next/head';
  제품 페이지
  
`}

✅ 마무리 요약

렌더링 방식 특징 추천 사용처
SSR 요청 시마다 HTML 생성 로그인 페이지, 실시간 데이터
SSG 빌드 시 HTML 생성 블로그, 소개 페이지
ISR SSG + 재생성 뉴스, 상품 페이지
CSR 브라우저에서 데이터 패칭 동적 UI, 실시간 정보

Next.js는 렌더링 방식을 선택하는 유연함 덕분에 모든 규모의 프로젝트에 적합합니다.
정적인 페이지, 실시간 페이지, 업데이트가 필요한 페이지 등 목적에 따라 전략을 잘 조합하면 성능과 SEO, 유지보수성까지 모두 잡을 수 있습니다. 💡

지금 여러분의 프로젝트에는 어떤 전략이 가장 잘 맞는지, 한 번 점검해보세요!

반응형