박치기 공룡

CSR, SSR, SSG 뭐가 다르냐~~?

예찬예찬 2025. 4. 22. 00:35
728x90
반응형

개요

웹페이지 렌더링 방식은 웹 애플리케이션의 속도와 효율성을 높여 사용자 경험(UX)을 개선하기 위해 발전해 왔다.
대표적으로 CSR(Client-Side Rendering), SSR(Server-Side Rendering), SSG(Static Site Generation) 세 가지 렌더링 방식이 등장했고 각 방식은 사용자에게 페이지를 제공하는 과정에서의 차이점을 가지고 있으며, 각각의 장단점이 있다. 이러한 차이점과 각 방식의 특징을 자세히 알아보도록 하자.


렌더링 방식의 변화

 

과거의 웹 애플리케이션은 정적 렌더링 방식을 사용하여, URL에 요청이 오면 해당하는 정적 HTML 파일을 전달하는 형식이였다. 이런 방식은 페이지를 단순하게 제공하는 데에 적합하지만, 페이지 내부의 콘텐츠를 동적으로 변경하거나 유연하게 유지하기 어려운 단점이 있다.

Nginx Apache와 같은 서버에서도 정적 렌더링이 지원되지만, 이 방식은 요청이 들어올 때마다 서버가 정적인 HTML 파일을 제공하기 때문에 동적 컨텐츠 변경이 어려운 한계를 가지고 있다.

이 문제를 해결하기 위해 AJAX와 같은 비동기 기술이 등장했고, 서버와 클라이언트 간에 데이터를 주고받아 페이지 일부만 갱신하는 것이 가능해졌다. 이를 바탕으로 gmail, Google Maps와 같이 SPA (Single Page Application)이 개발되었다.

SPA(Single Page Application)간단히 말해 한 페이지 내에서 필요한 데이터를 서버에서 받아와 부분적으로만 업데이트 하는 방식

![SPA 예) 네이버 지도]

SPA 예) 네이버 지도


CSR (Client Side Rendering)

Client-Side Rendering의 약자로, 클라이언트 측에서 모든 렌더링을 수행하는 방식이다.
CSR은 클라이언트가 최초로 서버에서 HTML을 요청하면, 빈 HTML과 함께 JS 파일을 전달받고 이를 클라이언트에서 실행하여 렌더링한다.

위 그림은 CSR의 단계를 그림으로 만들어 보았다

  1. 클라이언트가 페이지 요청 → 서버는 JS 링크가 포함된 HTML 파일을 전송
  2. 클라이언트는 JS 파일을 다운로드하고 실행해 빈 화면을 렌더링 후 콘텐츠를 로딩
  3. 필요한 데이터를 JSON으로 받아와 동적 HTML 생성

장점

  • 동적 페이지 전환이 빠르고 부드러움
  • 클라이언트 측에서 데이터 관리 및 처리 용이

단점

Initial Loading may take too long

서버로부터 받아야 할 데이터가 많으면 첫 화면을 보기까지 시간이 많이 걸릴 수 있다

Low SEO (Search Engine Optimization)

구글 네이버 같은 검색 엔진은 서버에 등록된 웹사이트의 html을 분석해 검색 결과에 반영한다.
근데 CSR로 받은 html은 텅텅 비어있어 판단하기 어려워지는 문제점이 있음.

적합한 서비스

대화형 웹 애플리케이션

  • CSR은 동적인 데이터 업데이트가 빈번하고 사용자가 클릭과 페이지 전환을 빠르게 수행하는 웹 애플리케이션에 적합하다.
  • 예시 사이트: Facebook, Twitter, Gmail
    • 이유: CSR은 페이지를 처음 로드할 때만 시간이 걸리지만, 이후에는 데이터를 비동기로 받아와 필요한 부분만 업데이트함. Facebook이나 Twitter 같은 SNS에서는 사용자가 빠르게 다양한 콘텐츠를 넘기고 클릭하므로, 클라이언트 측에서 데이터 요청을 즉시 처리하는 CSR이 UX에 유리하다.

SSR (Server Side Rendering)

Server-Side Rendering의 약자로, 서버에서 페이지를 렌더링하여 완성된 HTML 파일을 클라이언트로 전송하는 방식이다.
페이지 요청이 있을 때마다 서버에서 렌더링 작업을 수행하여 HTML을 제공한다.

장점

CSR을 사용했을 때보다 첫화면 로딩이 빠름

  • 모든 데이터를 다 받지 않아도 첫 화면만 받으면 바로 렌더링이 가능함

효율적인 SEO

  • 모든 콘텐츠가 html에 담겨있어 검색엔진이 판단하기 수월함

단점

Blinking issue, Non-rich site interactive

  • 정적 사이트에서 발생한 화면 전환시 깜빡이는 이슈 존재
  • 좋지 않은 UX

Server side overhead

  • 사용자가 많을수록 서버에 과부하가 걸리기 쉬움
  • 사용자가 클릭을 할 때마다 서버에 요청 → 서버는 HTML 뚝딱뚝딱 만들어야 함

Need to wait before interacting

  • 동적으로 데이터를 처리하는 자바스크립트를 아직 로드 하지 못했을 때 그와 관련된 반응은 없을 수 있음

적합한 서비스

SEO가 중요한 콘텐츠 사이트

  • SSR은 SEO가 중요한 사이트나, 즉각적인 초기 로딩이 필요한 경우에 적합하다. 특히, 검색엔진 크롤러가 페이지를 쉽게 인덱싱할 수 있도록 SSR을 통해 완성된 HTML을 제공한다.
  • 예시 사이트: eBay, Medium, Netflix
    • 이유: eBay와 같은 전자 상거래 사이트나 Medium 같은 블로그 사이트에서는 페이지가 검색 결과에 잘 나타나는 것이 중요하다. SSR은 완성된 HTML을 서버에서 전송하여 검색 엔진이 더 쉽게 인덱싱할 수 있도록 돕고, 페이지 로딩 시 즉각적으로 콘텐츠를 보여주기 때문에 사용자 경험도 개선된다.

SSG

Static Site Generation의 약자로, 미리 생성된 정적 HTML 파일을 서버에 배포하는 방식이다.
빌드 단계에서 모든 페이지가 미리 렌더링되며, 요청 시 정적 파일을 제공하는 방식으로 동적 콘텐츠 업데이트가 빈번하지 않은 사이트에 유리하다.

장점

  • 빠른 로딩시간
  • 서버 부하 적음
  • SEO 유리

단점

  • 동적 업데이트 어려움
  • 컨텐츠 업데이트 어려움

적합한 서비스

정적 콘텐츠가 많은 사이트

  • SSG는 고정된 콘텐츠가 주를 이루고 페이지의 빈번한 업데이트가 필요하지 않은 사이트에 적합하다. 정적 파일로 미리 생성된 페이지를 배포함으로써 빠르게 콘텐츠를 제공할 수 있다.
  • 예시 사이트: 마케팅 랜딩 페이지, 블로그 사이트, 개인 포트폴리오
    • 이유: 마케팅 랜딩 페이지나 개인 블로그는 주로 정적인 콘텐츠를 제공하며, 콘텐츠 변경이 적다. SSG는 미리 생성된 HTML 파일을 CDN을 통해 빠르게 제공해 사용자가 페이지를 요청할 때 즉시 응답할 수 있도록 한다. 특히, 트래픽이 많은 블로그의 경우 CDN 배포로 서버 비용을 절감할 수 있다.

요약

렌더링 방식설명장점단점

CSR 클라이언트 측에서 렌더링 수행 동적 페이지 전환 빠름, 데이터 관리 용이 초기 로딩 느림, SEO 문제
SSR 서버에서 렌더링 수행 빠른 초기 로딩, SEO에 유리 서버 부하, 깜빡임 문제
SSG 정적 HTML 파일 사전 렌더링 빠른 응답, 서버 부하 적음, SEO에 유리 동적 업데이트 어려움

 


참고

https://hahahoho5915.tistory.com/52

https://velog.io/@ka0son/%EB%A0%8C%EB%8D%94%EB%A7%81-%EC%82%BC%ED%98%95%EC%A0%9C-CSR-SSR-SSG-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0

https://blog.itcode.dev/posts/2022/06/12/csr-ssr-ssg

https://velog.io/@altmshfkgudtjr/CSR-SSR-SSG-%EC%A1%B0%ED%99%94%EB%A5%BC-%EC%9D%B4%EB%A3%A8%EB%8B%A4

https://www.youtube.com/watch?v=iZ9csAfU5Os

728x90
반응형