들어가며
웹 개발에 있어서 렌더링은 웹 페이지의 HTML, CSS, JavaScript 등을 해석하여 사용자가 보는 최종적인 화면을 생성하는 과정을 의미합니다.
이번 글에서는 CSR(Client Side Rendering), SSR(Server Side Rendering), 그리고 SSG(Static Site Generation)라는 세 가지 주요 렌더링 방식에 대해 알아보겠습니다.
CSR (Client Side Rendering)
CSR은 클라이언트(브라우저)에서 자바스크립트를 이용해 동적으로 페이지를 렌더링하는 방식입니다.
작동 방식
- 사용자가 웹 페이지에 접속하면 서버로부터 최소한의 HTML과 모든 자바스크립트 파일을 받아옵니다.
- 브라우저에서 자바스크립트가 실행되며 필요한 데이터를 API를 통해 받아와 동적으로 페이지를 렌더링합니다.
- 브라우저에 표시합니다.
장점
- 한 번 페이지가 로드된 후에는 페이지 간 전환이 빠릅니다.
- 사용자의 상호작용에 따라 필요한 부분만 즉시 렌더링할 수 있습니다.
- 서버 부하를 줄일 수 있습니다.
- 페이지 일부를 더 빠르게 보여줄 수 있습니다.
단점
- 초기 페이지 로딩 속도가 상대적으로 느립니다. 번들링이 완료된 모든 자바스크립트 파일이 다운로드되고 실행될 때까지 사용자는 빈 화면만 볼 수 있습니다.
- 초기 HTML 파일이 비어있어 SEO에 불리합니다.
- 클라이언트의 성능이 웹 애플리케이션의 성능에 큰 영향을 미칩니다.
CSR은 SEO에 크게 구애받지 않고, 복잡한 상호작용이 많은 경우에 적합합니다.
예시
- 실시간으로 데이터가 업데이트되는 대시보드
- 사용자의 입력에 따라 내용이 바뀌는 웹 애플리케이션
- 복잡한 상호작용을 가진 웹 게임
SSR (Server Side Rendering)
SSR은 서버에서 HTML을 완전히 렌더링 한 후 클라이언트에 전달하는 방식입니다. 사용자가 웹 페이지에 접속하면 서버에서 이미 완성된 페이지를 받아 바로 보여줄 수 있습니다.
작동 방식
- 사용자가 웹 페이지에 접속하면 서버로부터 완전히 렌더링 된 정적 HTML 파일을 받아옵니다.
- 브라우저에 표시합니다.
- 동시에 서버로부터 필요한 자바스크립트를 받아 정적 HTML에 동적인 기능을 추가합니다. 이를 '하이드레이션 Hydration'이라 합니다.
장점
- 초기 페이지 로딩 속도가 CSR 방식에 비해 빠릅니다.
- SEO에 유리합니다.
- 클라이언트의 부담이 덜합니다.
단점
- 페이지를 이동할 때마다 서버에서 새 HTML을 전달해야 하므로 페이지 간 전환이 느립니다.
- 사용자의 요청이 많으면 서버에 부하가 가해질 수 있습니다.
SSR은 데이터가 자주 변경되고, SEO가 필요한 경우에 적합합니다.
예시
- 포털 사이트
- 이커머스 사이트
SSG (Static Site Generation)
SSG는 일반적으로 빌드 시점에 서버에서 HTML을 렌더링 하여 정적 파일을 생성하는 방식입니다. 이렇게 생성된 정적 파일들은 미리 서버에 저장되어, 사용자 요청 시 즉시 전달됩니다.
작동 방식
- 서버에서 HTML을 렌더링 하여 정적 파일을 생성합니다.
- 사용자가 웹 페이지에 접속하면 서버로부터 미리 생성된 HTML 파일을 받아옵니다.
- 브라우저에 표시합니다.
장점
- 매우 빠른 페이지 로딩 속도를 제공합니다.
- SEO에 유리합니다.
단점
- 기존 방식에서는 사이트의 내용이 변경될 때마다 전체 사이트를 다시 빌드해야 합니다.
- 동적 라우팅이 필요한 경우 제한적일 수 있습니다.
- 실시간 업데이트가 제한적입니다.
단, 최근의 일부 프레임워크에서는 이러한 단점을 극복하기 위한 기능을 제공하고 있습니다. 예를 들어, Next.js는 On-Demand Revalidation(ODR) 기능을 제공하여, 전체 사이트를 다시 빌드하지 않고도 특정 페이지를 업데이트할 수 있게 합니다. 또 런타임에 동적 라우팅이 필요한 페이지를 발견한 경우 해당 페이지를 생성하도록 할 수 있습니다.
SSG는 정적인 콘텐츠를 다루는 웹 사이트에 적합합니다. 동시에, ODR 같은 기능을 이용하면 동적인 업데이트가 필요한 경우에도 유용하게 활용할 수 있습니다.
예시
- 블로그
- 기업 홈페이지
- 문서 페이지
정리
- CSR(Client Side Rendering): SEO에 크게 구애받지 않고, 복잡한 상호작용이 필요한 웹 애플리케이션에 적합합니다.
- SSR(Server Side Rendering): 데이터가 자주 변경되고, SEO가 필요한 웹 애플리이션에 적합합니다.
- SSG(Static Site Generation): 정적인 콘텐츠를 다루는 웹 사이트에 적합합니다.
마치며
웹 페이지의 렌더링 방식은 사용자 경험은 물론 성능을 결정짓는 중요한 요소입니다. 해당 페이지의 요구 사항에 따라 적절한 방식을 선택하는 게 좋습니다.
잘못된 내용이 있다면 지적 부탁드립니다.
감사합니다 :D
'Web' 카테고리의 다른 글
웹 스토리지 이해하기 (0) | 2024.03.05 |
---|---|
HTTP 세션 이해하기 (0) | 2024.02.20 |
HTTP 쿠키 이해하기 (0) | 2024.02.13 |
REST API? 그게 뭔가요? (0) | 2024.02.06 |
HTTP에 대해 알아보자 (1) | 2024.01.30 |