Files
2nd/10_Wiki/Topics/단일 페이지 애플리케이션(SPA) 렌더링 설계.md
T

5.0 KiB

단일 페이지 애플리케이션(SPA) 렌더링 설계

📌 Brief Summary

단일 페이지 애플리케이션(SPA)의 렌더링 설계는 주로 클라이언트 사이드 렌더링(CSR) 방식을 채택하여 브라우저가 자바스크립트를 통해 동적으로 사용자 인터페이스를 생성하도록 하는 아키텍처를 말합니다 [1], [2]. 이 방식은 서버로부터 기본적인 HTML 셸과 자바스크립트를 한 번에 전달받은 후, 클라이언트 환경에서 페이지의 라우팅과 데이터 표시를 처리합니다 [3], [4], [2]. 화면 전체를 새로고침하지 않아 앱처럼 매끄러운 사용자 경험을 제공하지만, 초기 로드 시간과 검색엔진 최적화(SEO) 측면에서는 약점이 있습니다 [3], [5], [6]. 이러한 특성 때문에 SPA 설계에서는 가상 DOM(Virtual DOM) 활용, 상태 업데이트 배칭(Batching), 하이드레이션(Hydration) 등의 렌더링 성능 최적화 기술이 필수적으로 동반됩니다 [7], [8], [9].

📖 Core Content

  • 클라이언트 사이드 렌더링(CSR)의 동작 방식 SPA 렌더링의 핵심은 렌더링의 주도권이 서버에서 브라우저로 넘어간다는 점입니다. 사용자가 페이지를 요청하면 서버는 본문 내용이 거의 없는 뼈대 형태의 최소 HTML 파일과 자바스크립트 파일을 보냅니다 [4], [2]. 브라우저가 이 자바스크립트 코드를 다운로드, 파싱 및 실행한 뒤에야 동적으로 데이터를 가져오고 사용자 인터페이스를 구축하여 화면에 렌더링합니다 [3], [2].
  • SPA 렌더링 설계의 장단점(Trade-offs)
    • 장점: 전체 페이지를 다시 렌더링하지 않고 필요한 부분만 동적으로 업데이트하기 때문에 상호작용 속도가 매우 빠르고 부드러운 전환이 가능합니다 [10], [5]. 또한 서버는 초기 정적 파일과 API 응답만 제공하면 되므로 서버 부하 및 호스팅 비용이 크게 감소합니다 [10], [11], [12]. 이러한 특성 때문에 SEO보다 상호작용이 중요한 대시보드나 SaaS 플랫폼에 최적화되어 있습니다 [10], [13].
    • 단점: 자바스크립트 번들을 모두 다운로드하고 파싱하기 전까지는 사용자가 빈 화면이나 로딩 스피너만 보게 되어 초기 로딩 속도(First Contentful Paint)가 매우 느립니다 [3], [10], [6], [14]. 더불어 크롤러가 자바스크립트를 실행하지 못하면 빈 페이지만 인식하게 되어 SEO에 매우 불리합니다 [3], [15], [6].
  • 가상 DOM(Virtual DOM)을 통한 DOM 조작 최적화 SPA는 페이지 업데이트 과정에서 DOM 트리를 빈번하게 조작합니다. 그러나 DOM 트리를 직접 변경할 경우 브라우저의 레이아웃(Reflow)과 페인트(Repaint) 작업이 연쇄적으로 발생하여 렌더링 파이프라인의 성능이 크게 저하될 수 있습니다 [16], [7], [17], [18]. 이를 해결하기 위해 React와 같은 SPA 프레임워크는 메모리상에 가상 DOM을 두고, UI 상태 변경 시 두 트리 간의 차이점(Diffing)을 O(n)의 복잡도로 비교하여 실제 변경된 부분만 한 번에 DOM에 반영합니다 [19], [7], [20], [21].
  • 렌더링 병목 해결 및 동시성(Concurrent) 설계 사용자 상호작용이 많은 SPA에서 무거운 데이터 처리나 업데이트가 렌더링을 차단하는 것을 막기 위해, 최신 렌더링 설계는 다음과 같은 기법들을 사용합니다.
    • 자동 배칭(Automatic Batching): 여러 상태 업데이트를 단일 렌더링으로 묶어 DOM 렌더링 횟수를 대폭 줄입니다 [8], [22], [23].
    • 파이버(Fiber) 아키텍처와 우선순위 분할: 렌더링 작업을 중단하거나 재개할 수 있는 작은 '작업 단위'로 분할하고, 사용자 입력과 같은 긴급한 업데이트에 높은 렌더링 우선순위를 부여하여 메인 스레드 차단을 방지합니다 [24], [25], [26], [27].

🔗 Knowledge Connections

  • Related Topics: Client-Side Rendering (CSR), Virtual DOM, Reflow and Repaint, Hydration
  • Projects/Contexts: React, Vue 등의 프레임워크를 기반으로 하며 SEO보다는 동적이고 즉각적인 인터랙션이 필수적인 대시보드, SaaS 플랫폼, 내부 비즈니스 도구 등을 구축하는 맥락 [4], [13].
  • Contradictions/Notes: SPA의 기본 렌더링 방식인 순수 CSR은 초기 로딩과 SEO에 치명적인 약점이 있기 때문에, 최근에는 초기 로딩 시 서버에서 완성된 HTML을 보내고 이후 브라우저에서 상호작용을 연결(Hydration)하는 서버 사이드 렌더링(SSR)이나 정적 사이트 생성(SSG)을 페이지 특성에 맞춰 혼합(Hybrid)하여 사용하는 방식으로 발전하고 있습니다 [28], [9], [29], [30], [31].

Last updated: 2026-04-25