[스프링부트 #19] SSR에서 REST API로(모든 프론트엔드를 아우르는 백엔드 설계)

도경원's avatar
Aug 25, 2025
[스프링부트 #19] SSR에서 REST API로(모든 프론트엔드를 아우르는 백엔드 설계)

1. 브라우저 중심의 SSR(Server-Side Rendering)

  • 브라우저가 클라이언트일 때, 서버는 HTML을 생성해 보내는 SSR 방식을 사용한다.
  • 이때 서버 구조는 Controller 패키지와 Domain 패키지를 나누어 설계했다.
  • Controller는 브라우저 요청에 맞춰 HTML을 내려주기 때문에, 보통 web 패키지로 명명
    • 이유: 브라우저 전용 로직이기 때문이다.

2. 프론트엔드 환경의 변화

  • 예전에는 주요 프론트 클라이언트가 브라우저였지만, 지금은 훨씬 다양해졌다.
    • 키오스크
    • 자동차 LCD
    • 스마트폰/태블릿
    • 스마트워치
    • 스마트 미러 등
  • 이런 환경에서는 브라우저 전용 Controller(web 패키지)만으로 한계가 있다.
  • 따라서 app, device 등 다양한 프론트엔드 유형에 맞춘 패키지 구성이 필요해진다. (원래는 web (controller))

3. React와 같은 SPA의 등장

  • React 같은 프론트엔드 프레임워크가 등장하며, 브라우저에서도 HTML을 서버에서 만드는 대신 JavaScript로 화면을 그리게 된다.
  • 이로 인해 서버는 HTML 대신 데이터(JSON)만 제공한다.
  • 결과적으로 서버 역할이 JSON API 제공으로 단순화했고, 이를 REST API라고 부른다.

4. REST API의 목적

  • 직접적인 목적: JSON 데이터 제공 (Object → 문자열 변환 → 전송)이다.
  • 궁극적인 목적: 모든 프론트 디바이스(브라우저, 앱, IoT, 차량 등)에 대응 가능한 리소스 서버가 되는 것이다.
  • JSON은 전 세계의 통신 공용어와 같은 역할을 하며, 언어/플랫폼 간 호환성을 제공한다. 즉, 오브젝트를 문자열로 바꿔서 통신하기 위해서이다. 통신을 위한 중간데이터라고 보면된다.
정리하자면,
과거는 브라우저 중심 → SSR, HTML 제공
현재는 디바이스 다양화 + SPA 프레임워크 → REST API, JSON 제공
 
Share article

Gyeongwon's blog