본문 바로가기
취준/CS 기술면접 준비

SPA(Single Page Application)

by 윤숩 2025. 1. 5.
728x90
728x90

SPA(Single Page Application)

: 하나의 HTML 페이지에서 콘텐츠를 동적으로 업데이트하며 동작하는 웹 애플리케이션입니다. SPA에서는 새로고침 없이 필요한 데이터를 로드하여 페이지 전환을 처리하며, 사용자 경험을 향상시키는 데 주로 사용됩니다.


SPA의 특징

  1. 단일 HTML 파일
    • 서버에서 단일 HTML 파일을 로드한 후, 이후의 모든 페이지 전환은 클라이언트에서 JavaScript로 처리.
    • HTML, CSS, JavaScript 등의 리소스가 초기 로드 시 대부분 다운로드됨.
  2. 비동기 데이터 로드
    • AJAX 요청이나 Fetch API를 사용하여 필요한 데이터를 서버에서 비동기적으로 가져와 화면에 표시.
  3. 라우팅 관리
    • 클라이언트 측에서 라우팅을 처리하여 URL 변경 시 새로고침 없이 콘텐츠를 전환.
    • React Router, Vue Router 등 라이브러리를 사용하여 구현.
  4. 빠른 사용자 경험
    • 새로고침 없이 콘텐츠를 업데이트하므로, 전통적인 다중 페이지 애플리케이션(MPA)보다 더 빠르고 부드러운 사용자 경험 제공.

SPA 작동 원리

  1. 초기 로드
    • 클라이언트가 서버에 요청을 보내면, 서버는 단일 HTML 파일과 JavaScript 파일을 전달.
  2. JavaScript 실행
    • 브라우저는 JavaScript를 실행하여 애플리케이션의 초기 상태를 렌더링.
  3. 사용자 상호작용
    • 사용자가 버튼 클릭이나 링크 이동과 같은 상호작용을 하면, 필요한 데이터를 서버에서 가져와 화면을 업데이트.
  4. DOM 업데이트
    • 페이지 전체를 다시 로드하지 않고, 변경된 부분만 DOM에 업데이트.

SPA의 장점

  1. 빠른 페이지 전환
    • 새로고침 없이 콘텐츠를 업데이트하므로 사용자 경험이 부드럽고 반응이 빠름.
  2. 효율적인 서버 요청
    • 필요한 데이터만 서버에서 가져오므로, 네트워크 트래픽이 줄어듦.
  3. 더 나은 사용자 경험
    • 애플리케이션처럼 동작하므로 데스크톱 애플리케이션과 유사한 경험 제공.
  4. 클라이언트 중심 로직
    • 클라이언트 측에서 데이터를 처리하므로 서버 부담 감소.

 

SPA의 단점

  1. SEO 문제
    • 검색 엔진은 초기 HTML만 크롤링할 수 있으며, JavaScript로 렌더링된 콘텐츠를 인식하지 못할 수 있음.
    • 해결 방법: SSR(Server-Side Rendering) 또는 프리렌더링 도입.
  2. 초기 로딩 시간 증가
    • 초기 로딩 시 모든 JavaScript와 데이터를 로드해야 하므로 로딩 시간이 길어질 수 있음. 특히 애플리케이션 규모가 커질수록 초기 로딩 속도가 느려질 가능성이 큽니다
  3. 브라우저 의존성
    • JavaScript에 의존하므로, JavaScript를 비활성화한 환경에서는 정상적으로 작동하지 않을 수 있음.
  4. 복잡한 상태 관리 
    • 클라이언트 측에서 애플리케이션 상태를 유지하고 관리해야 하므로, 대규모 애플리케이션에서는 복잡성이 증가.

SPA와 관련된 주요 기술 및 프레임워크

  1. 프레임워크
    • React: 페이스북에서 개발한 UI 라이브러리.
    • Vue.js: 가볍고 유연한 SPA 개발 프레임워크.
    • Angular: 구글에서 개발한 완전한 SPA 프레임워크.
  2. 라우팅
    • React Router: React 기반 라우팅 라이브러리.
    • Vue Router: Vue.js 전용 라우팅 라이브러리.
  3. 상태 관리
    • Redux: React 생태계에서 주로 사용되는 상태 관리 라이브러리.
    • Vuex: Vue.js에서 사용하는 상태 관리 도구.
    • Recoil, MobX: SPA의 상태 관리를 돕는 대안.
  4. 데이터 통신
    • AJAX: 서버와 비동기 통신을 위한 기술.
    • GraphQL: 효율적인 데이터 쿼리를 제공하는 언어 및 런타임.
    • REST API: SPA와 서버 간 데이터 교환을 위한 표준.

 

SPA와 대안(MPA, SSR, CSR) 비교

특징 SPA (Single Page Application) MPA (Multi-Page Application) SSR (Server-Side Rendering)
페이지 전환 속도 빠름 느림 보통
SEO 친화성 낮음 (추가 작업 필요) 높음 높음
초기 로딩 속도 느림 빠름 보통
복잡성 높은 구현 복잡성 상대적으로 간단 중간
사용자 경험 부드러운 인터랙션 새로고침으로 인한 지연 발생 부드럽지만 페이지 전환 필요

 


SPA는 빠르고 부드러운 사용자 경험을 제공하는 데 적합하지만, SEO나 초기 로딩 속도가 중요한 프로젝트에서는 SSR이나 하이브리드 접근 방식을 도입하는 것이 더 적합할 수 있습니다. 프로젝트의 요구 사항에 따라 SPA를 선택하거나, SSR 및 기타 대안과 조합하는 전략을 고려해야 합니다. 😊

728x90
728x90

댓글