개발 방법론 & 아키텍쳐

Next.js의 서버 사이드 렌더링(SSR)

atomicdev 2024. 10. 21. 17:25
728x90

Next.js의 **서버 사이드 렌더링(SSR)**은 페이지를 서버에서 미리 렌더링한 후 클라이언트에게 전달하는 방식입니다. SSR을 사용하면 사용자나 검색 엔진이 페이지를 요청할 때 서버에서 HTML 파일을 생성해 보내므로, 클라이언트는 완성된 HTML을 빠르게 받을 수 있습니다. 이는 클라이언트 측에서 처음 페이지를 로드할 때 필요한 자바스크립트 처리 시간을 줄여 페이지의 초기 로드 속도를 크게 개선할 수 있습니다.

Next.js 서버 사이드 렌더링(SSR)

Next.js SSR의 작동 방식

  1. 페이지 요청: 사용자가 페이지를 요청하면 Next.js 서버는 해당 페이지를 서버에서 렌더링합니다.
  2. 서버 렌더링: React 컴포넌트가 서버에서 실행되고, 그 결과로 HTML이 생성됩니다.
  3. HTML 전달: 서버에서 생성된 HTML이 클라이언트에 전달되고, 그 후에 자바스크립트가 로드되어 페이지에 인터랙티브한 요소를 추가합니다.
  4. 하이드레이션(Hydration): 서버에서 전달된 HTML이 클라이언트 측에서 자바스크립트와 결합되어 React 컴포넌트가 동작하게 됩니다. 이를 하이드레이션이라고 합니다.

SSR이 유리한 상황

SSR은 특정 시나리오에서 큰 이점을 제공합니다. 다음은 SSR이 유리한 몇 가지 경우입니다:

1. SEO(검색 엔진 최적화)

SSR은 SEO에 큰 이점을 제공합니다. 클라이언트 사이드 렌더링(CSR) 방식에서는 페이지를 처음 요청할 때 검색 엔진 봇이 제대로 콘텐츠를 크롤링하지 못할 수 있습니다. 이유는 페이지가 자바스크립트로 렌더링되기 때문인데, 일부 검색 엔진은 자바스크립트 렌더링을 완벽하게 처리하지 못합니다. 반면 SSR에서는 서버에서 완전한 HTML을 생성해 주기 때문에 검색 엔진이 페이지 콘텐츠를 즉시 크롤링할 수 있어 SEO에 유리합니다.

실제 사례:

  • 블로그나 뉴스 사이트와 같은 콘텐츠 중심의 웹사이트는 SSR을 사용하면 검색 엔진이 페이지를 빠르게 크롤링할 수 있어 더 나은 검색 순위를 얻을 수 있습니다. 예를 들어, New York Times와 같은 미디어 사이트는 SEO가 중요하기 때문에 SSR을 사용하여 기사 페이지의 초기 로드 속도를 개선하고, 검색 엔진이 해당 기사를 쉽게 검색할 수 있도록 돕습니다.

2. 빠른 초기 로드 시간

SSR은 페이지의 초기 로드 속도를 개선할 수 있습니다. 사용자는 HTML을 먼저 받고, 자바스크립트는 나중에 로드되므로 페이지가 빠르게 표시됩니다. 이는 특히 느린 네트워크 환경에서 효과적입니다. 클라이언트 사이드 렌더링(CSR)은 자바스크립트 파일이 모두 로드되고 실행되어야 페이지가 보이기 시작하기 때문에 초기 로드가 지연될 수 있습니다.

실제 사례:

  • 전자 상거래 사이트에서 초기 로드 시간이 중요한 이유는 사용자 경험과 전환율에 직접적인 영향을 미치기 때문입니다. Shopify와 같은 플랫폼은 페이지를 빠르게 로드해 사용자가 사이트를 떠나지 않도록 합니다. SSR을 사용하면 사용자에게 제품 정보를 빠르게 보여주고, 자바스크립트는 나중에 로드되므로 쇼핑 경험이 더 원활해집니다.

3. 동적 콘텐츠와 사용자별 맞춤화

SSR은 서버에서 페이지를 렌더링하기 때문에, 사용자마다 다른 데이터를 서버에서 처리해 제공할 수 있습니다. 예를 들어, 로그인한 사용자가 요청한 경우 서버는 해당 사용자의 데이터에 맞춰 페이지를 미리 렌더링할 수 있습니다. 이로 인해 개인화된 경험을 제공할 수 있습니다.

실제 사례:

  • Airbnb와 같은 서비스에서는 사용자마다 다른 검색 결과나 추천 항목을 보여주어야 합니다. SSR을 사용하면 서버에서 로그인한 사용자에게 맞춤형 페이지를 빠르게 렌더링해 전송할 수 있습니다. 예를 들어, 사용자가 이전에 검색한 지역의 숙소를 서버에서 미리 준비하여 렌더링함으로써 빠르고 맞춤화된 페이지를 제공할 수 있습니다.

SSR이 적합하지 않은 경우

SSR은 많은 장점이 있지만, 서버의 부하를 늘릴 수 있기 때문에 모든 애플리케이션에서 적합하지는 않습니다. 예를 들어, 정적 사이트는 SSR보다 정적 사이트 생성(SSG)을 사용하는 것이 더 적합합니다. 모든 페이지가 미리 렌더링되어 사용자 요청 시 서버의 부담 없이 빠르게 제공되기 때문입니다.

결론

Next.js의 서버 사이드 렌더링은 SEO 개선, 빠른 초기 로드 시간, 사용자 맞춤화와 같은 상황에서 큰 장점을 제공합니다. 하지만 서버 자원의 부담이 증가할 수 있으므로 모든 상황에서 SSR이 적합한 것은 아니며, 상황에 맞는 렌더링 방식을 선택하는 것이 중요합니다.

 

 

728x90