SSR과 CSR

SungWoo·2024년 12월 11일
1

CS

목록 보기
5/9
post-thumbnail

오늘날 웹 애플리케이션을 개발한다고 하면 대부분 React, Vue, Angular와 같은 자바스크립트 기반 프레임워크를 사용해 SPA를 개발한다. SSR과 CSR 개념에 대해 다루기 전에 웹 애플리케이션의 페이지 구성 방식(SPA, MPA)에 대해 짚어보자.

SPA 와 MPA

SPA(Single Page Application)

하나의 페이지로 구성된 웹 애플리케이션이며, SPA로 개발된 웹사이트는 카테고리에 있는 각 메뉴를 선택하면 보통 헤더는 고정되어 있는 상태로 메인화면 혹은 클릭한 부분만 바뀐다.

MPA(Multi Page Application)

탭을 이동할 때마다 서버로부터 새로운 HTML을 새로 받아와서 페이지 전체를 렌더링 하는 전통적인 웹 페이지 구성 방식이다.


SSR(Server-Side-Rendering)

서버로부터 완전하게 만들어진 HTML 파일을 받아와 페이지 전체를 렌더링하는 방식

동작 과정

  1. 클라이언트가 초기 화면을 로드하기 위해 서버에 요청을 보냄
  2. 서버는 화면 표현에 필요한 데이터를 DB에서 얻어와 템플릿 엔진을 통해 HTML을 작성
  3. 렌더링이 가능한 완벽한 HTML, CSS, JS코드를 브라우저에 응답
  4. 브라우저에서는 전달 받은 페이지 리소스(HTML, CSS, JS)를 기반으로 파싱을 수행
  5. 이후 GUI 렌더링을 수행하고 화면이 보여짐

장점

  • 하나의 서버 애플리케이션으로 Front, Back을 구성할 수 있어 설계가 쉽고 간단한 구조를 가지므로 개발 난이도가 낮고, 빠르게 구축 가능하다.
  • 검색 엔진(SEO)에 의해 해석 될 수 있는 구조, 크롤링도 가능하게 만든다.
  • 클라이언트의 부담이 적고, 빠른 초기 로딩을 가진다. (필수적인 요소를 먼저 가져옴)

단점

  • Front와 Back 요소가 결합되어 있어 Front 변경으로 인해 Back 코드도 변경된다.
  • 매번 페이지를 요청할 때 마다 새로고침 되기 때문에 UX가 다소 떨어질 수 있다.
  • 서버측 부하가 증가한다.(요청할 때마다 서버에서 페이지를 구성하는 모든 리소스를 준비해서 응답)

CSR(Client-Side-Rendering)

사용자의 요청에 따라 필요한 부분만 응답받아 렌더링하는 방식

  1. 클라이언트는 초기화면을 로드하기 위해 서버에 요청을 보낸다.
  2. 서버는 JS파일로 화면을 렌더링하기 위한 일부 파일만 응답
  3. 응답 받은 JS를 파싱하여 렌더링에 필요한 데이터(DB 컬럼)와 리소스(CSS, 이미지)를 다시 서버로 요청하여 추가적인 리소스를 전달받음
  4. 전달 받은 리소스를 기반으로 클라이언트에서 조립하여 GUI 렌더링을 수행

장점

  • Front/Back 코드가 분리되어 있어 잦은 Front 변경에도 Back은 영향이 없음
  • 빠른 속도와 서버 부하 감소 (변경 부분 데이터만 가져옴으로, SSR보다 속도가 빠름)
  • 사용자 친화적(페이지 안에 컨텐츠를 클릭하여 다음 단계로 전환 하는 과정에서 링크가 없기 때문에 깜빡임 없이 부드러운 이동 가능)

단점

  • Front/Back을 분리하여 설계하므로 초기 개발 시 소요 시간 및 개발 비용 증가
  • 전통적인 구조보다 레퍼런스가 적어 수준 높은 엔지니어링 기술을 요구한다.
  • 검색 엔진(SEO)에 노출될 수 없다.
  • 높은 클라이언트 부담, 초기 로딩 속도가 SSR보다 느릴 수 있다.

마무리

SPA와 MPA는 각각 페이지 로딩 방식과 사용자 경험에서 차이를 보인다. SPA는 클라이언트에서 동적으로 페이지를 업데이트하여 부드러운 사용자 경험을 제공하지만, 초기 로딩 속도나 SEO에 불리할 수 있다. MPA는 서버에서 각 페이지를 렌더링해 SEO나 초기 로딩 속도에 유리하지만, 페이지 전환 시 새로고침이 발생하여 사용자 경험이 다소 떨어질 수 있다.

SSR과 CSR은 이 두 가지 렌더링 방식에서 서버와 클라이언트의 역할 차이를 보여주며, 웹 애플리케이션의 요구사항에 따라 적절한 방식을 선택하는 것이 중요하다.


참조

profile
어제보다 더 나은

0개의 댓글