Front-End

SSR (서버 사이드 렌더링) vs SPA (싱글 페이지 애플리케이션)

봉의일상 2025. 2. 16. 10:41

1. 개요

SSR(Server-Side Rendering)과 SPA(Single Page Application)는 웹 애플리케이션을 구성하는 두 가지 주요 방식이다. 각각의 방식은 성능, 개발 편의성, 배포 방식 등에 차이를 보인다. 본 글에서는 SSR과 SPA의 특징, 장단점, 사용 사례를 비교하고, 어떤 환경에서 어떤 방식을 선택하는 것이 적절한지 살펴본다.


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

1. 개념

SSR은 웹 페이지의 HTML을 서버에서 렌더링한 후 클라이언트에게 제공하는 방식이다. 즉, 브라우저가 요청을 보내면 서버에서 HTML을 생성하고, 이를 클라이언트에 전달하는 구조이다.

2. 주요 특징

  • 초기 로딩 속도가 빠름: 서버에서 HTML을 완성하여 보내므로 클라이언트에서 즉시 화면을 렌더링할 수 있다.
  • JAR 파일 하나로 배포 가능: Spring Boot 기반 애플리케이션의 경우, java -jar 명령어만으로 실행 가능하여 배포가 간편하다.
  • SSR을 적용한 프레임워크: Spring Boot + Thymeleaf, Next.js (React 기반)

3. 장점

빠른 초기 로딩: 클라이언트에서 JS 실행 없이 즉시 렌더링 가능.

단순한 배포: CI/CD가 없더라도 JAR 배포로 간편하게 운영 가능.(스프링부트)

4. 단점

서버 부하 증가: 요청마다 HTML을 생성해야 하므로 서버의 부담이 커질 수 있음.

인터랙티브 UI 구현 제한: 클라이언트 측에서 동적인 UI를 구현하려면 추가적인 JS 작업이 필요.


3. SPA (싱글 페이지 애플리케이션)

1. 개념

SPA는 최초 로딩 시 HTML, CSS, JavaScript를 한 번에 다운로드하고 이후에는 API 호출을 통해 동적으로 데이터를 주고받으며 페이지를 렌더링하는 방식이다.

2. 주요 특징

  • 첫 로딩 속도가 느릴 수 있음: 초기 로딩 시 모든 리소스를 내려받아야 하므로 속도가 느릴 수 있음.
  • 클라이언트 측 렌더링: 이후 화면 전환이 빠르고 부드러움.
  • SPA를 적용한 프레임워크: React, Vue.js, Angular

3. 장점

빠른 페이지 전환: 클라이언트에서 상태를 관리하며 UI를 갱신하므로 UX가 뛰어남.

더 나은 사용자 경험: 백엔드 API와의 효율적인 통신으로 데이터 업데이트가 빠름.

재사용 가능한 컴포넌트 구조: React, Vue 등의 프레임워크를 활용하여 유지보수가 쉬움.

4. 단점

초기 로딩 속도 느림: 모든 JS와 리소스를 한 번에 다운로드해야 하므로 초기 로딩이 느릴 수 있음.

배포 과정 복잡: 프론트엔드와 백엔드가 분리되어 있어 배포 시 CI/CD가 필요할 가능성이 큼.


4. SSR vs SPA 비교

항목 SSR (서버 사이드 렌더링) SPA (싱글 페이지 애플리케이션)
렌더링 방식 서버에서 HTML 생성 클라이언트에서 JS 실행 후 렌더링
초기 로딩 속도 빠름 느릴 수 있음
페이지 전환 속도 서버 요청 필요 (다소 느림) 클라이언트에서 즉시 렌더링 (빠름)
배포 편의성 JAR 하나로 배포 가능 프론트엔드 & 백엔드 분리 운영 필요
서버 부하 요청마다 HTML 생성 (서버 부담) API 호출 위주로 서버 부담 적음
UX 기본적인 웹사이트에 적합 대화형 애플리케이션에 적합

5. 어떤 방식을 선택할 것인가?

사용 사례 추천 방식
CI/CD 없이 빠르게 배포해야 하는 프로젝트 SSR (JAR 배포 가능)
모바일 앱과 함께 운영되는 웹 서비스 SPA (React/Vue + API)
높은 인터랙션이 필요한 대시보드 SPA

6. 결론

SSR과 SPA는 각각의 장점과 단점이 있으며, 프로젝트의 목적과 요구 사항에 따라 선택해야 한다. 배포가 단순해야 하는 경우 SSR이 적합하며, 사용자 경험(UX)과 빠른 페이지 전환이 중요한 경우 SPA가 적합하다. 특히, CI/CD가 없는 환경에서는 JAR 하나로 쉽게 배포할 수 있는 SSR(Spring Boot 기반)이 큰 장점이 될 수 있다.