웹 개발에서 SSR, SSG, CSR은 각각 다른 렌더링 방식으로, 사용자 경험과 성능에 큰 영향을 미칩니다. 각 방식의 정의와 장단점을 알아보겠습니다.
정의
서버에서 HTML을 렌더링한 후 클라이언트로 전달하는 방식입니다. 사용자가 요청을 보낼 때마다 서버에서 HTML 파일을 생성하여 반환합니다. 이는 주로 전통적인 웹 애플리케이션에서 사용됩니다.
작동 방식
클라이언트가 서버에 요청을 보냅니다.
서버가 요청에 따라 필요한 데이터를 데이터베이스에서 조회합니다.
서버에서 데이터를 바탕으로 HTML을 생성하고 클라이언트에 반환합니다.
클라이언트는 받은 HTML을 브라우저에 렌더링합니다.
장점
SEO 최적화: 서버에서 렌더링된 HTML이 바로 전달되므로 검색 엔진 크롤러가 쉽게 접근 가능.
빠른 초기 로드: HTML이 즉시 로드되므로 첫 화면 렌더링이 빠름.
실시간 데이터 처리 용이: 요청마다 새로운 데이터를 렌더링하여 최신 데이터를 제공 가능.
단점
높은 서버 부하: 요청마다 렌더링을 수행하므로 트래픽이 많을 경우 서버 부담 증가.
느린 페이지 전환: 페이지 전환 시마다 전체 HTML을 다시 요청해야 하므로 느려질 수 있음.
복잡한 서버 설정 필요: 서버 측에서 렌더링 환경을 설정해야 함.
정의
빌드 시 HTML을 미리 생성하여 정적 파일로 저장하고, 사용자가 요청할 때 이를 전달하는 방식입니다. JAMstack 아키텍처에서 자주 사용됩니다.
작동 방식
개발자가 빌드 프로세스를 실행합니다.
데이터와 템플릿을 결합하여 HTML 파일을 생성합니다.
생성된 정적 HTML 파일을 CDN에 배포합니다.
클라이언트 요청 시 CDN에서 즉시 HTML을 반환합니다.
장점
빠른 성능: 정적 파일은 서버 부하 없이 빠르게 전달 가능.
SEO 최적화: SSR과 유사하게 HTML이 미리 렌더링되어 제공됨.
저렴한 유지 비용: 서버 리소스를 적게 사용하며, CDN을 활용하면 비용 절감 가능.
단점
동적 데이터 처리의 어려움: 데이터가 자주 변경되는 페이지에는 적합하지 않음.
긴 빌드 시간: 페이지가 많아질수록 빌드 시간이 증가.
재배포 필요: 콘텐츠 변경 시 빌드 후 다시 배포해야 함.
정의
초기에는 최소한의 HTML과 JavaScript만 전달하고, 클라이언트 측에서 JavaScript로 렌더링을 수행하는 방식입니다. 주로 SPA(Single Page Application)에서 사용됩니다.
작동 방식
클라이언트가 최소한의 HTML과 JavaScript 파일을 서버로부터 받습니다.
클라이언트 측에서 JavaScript가 실행되며 필요한 데이터를 API를 통해 가져옵니다.
가져온 데이터로 DOM을 구성하고 화면을 렌더링합니다.
이후 페이지 전환은 클라이언트 측에서만 이루어집니다.
장점
빠른 페이지 전환: 클라이언트에서 렌더링하므로, API 요청으로 필요한 데이터만 가져와 페이지 전환 속도가 빠름.
풍부한 인터랙션: 클라이언트 측에서 다양한 동적 기능 구현 가능.
서버 부하 감소: 서버에서 렌더링하지 않으므로 부하가 적음.
단점
SEO 문제: 초기 HTML에 콘텐츠가 없으므로 검색 엔진 크롤러가 데이터를 인식하지 못할 수 있음.
느린 초기 로드: JavaScript 로드 및 실행 시간이 필요.
JavaScript 의존성: JavaScript가 비활성화된 환경에서는 작동하지 않음.

SSR: SEO가 중요한 실시간 데이터 페이지에 적합.
SSG: 블로그, 문서 사이트처럼 정적 콘텐츠가 많은 페이지에 적합.
CSR: 대화형 웹 애플리케이션, SPA(Single Page Application)에 적합.
프로젝트의 요구 사항과 특성에 맞는 렌더링 방식을 선택하는 것이 중요합니다.