[Frontend] SPA(Single Page Application)란?

다훈·2025년 3월 20일
post-thumbnail

SPA란?

SPA(Single Page Application)단일 페이지로 구성된 모던 웹 애플리케이션을 의미합니다.
기존의 웹사이트는 여러 개의 HTML 페이지로 이루어져 있지만, SPA는 하나의 페이지에서 모든 콘텐츠를 동적으로 관리합니다.

SPA의 동작 방식

  1. 최초 접속 시 핵심 정적 리소스(HTML, CSS, JavaScript)를 다운로드
  2. 이후 페이지 이동 시 필요한 데이터만 가져와서 업데이트 (전체 페이지 새로고침 없이 변경)
  3. 빠르고 부드러운 웹 경험 제공

SPA를 구현하는 대표적인 프레임워크 & 라이브러리

  • React
  • Vue.js
  • Angular

이러한 JavaScript 프레임워크들은 SPA 개발에 필요한 다양한 기능과 도구를 제공하여, 복잡한 웹 애플리케이션을 효율적으로 만들 수 있도록 도와줍니다.


SPA와 MPA의 차이점

MPA(Multi Page Application)란?

MPA는 전통적인 웹 애플리케이션 방식으로, 사용자가 페이지를 이동할 때 서버에서 새로운 HTML 페이지를 요청하고 렌더링하는 방식입니다.

MPA의 특징
1. 페이지 이동 시마다 서버에서 새로운 HTML을 받아옴
2. 초기 로딩 속도는 빠르지만, 페이지 간 이동 속도가 느릴 수 있음
3. 서버 부하가 높아질 가능성이 있음

SPA vs MPA 비교

비교 항목SPA (Single Page Application)MPA (Multi Page Application)
페이지 로딩 방식최초 로딩 후 필요한 데이터만 갱신매번 새로운 HTML 페이지 로드
네트워크 요청최소화 (비동기 데이터 요청)페이지 이동마다 새 요청 발생
사용자 경험(UX)빠르고 부드러운 인터랙션페이지 이동 시 로딩 시간 발생
서버 부담서버 부담이 적음 (클라이언트에서 데이터 처리)서버에서 매번 렌더링하여 부담 증가
적합한 경우대규모 웹 애플리케이션, 빠른 반응이 중요한 서비스간단한 정보 제공 서비스

SPA는 빠른 인터랙션이 필요한 웹 애플리케이션에 적합하며, MPA는 간단한 콘텐츠 기반 서비스에 적합합니다.


SPA의 주요 특징

1. 동적 콘텐츠 로딩

  • 전체 페이지를 다시 로드하지 않고, 서버에서 필요한 데이터만 비동기적으로 가져와서 업데이트
  • 페이지 이동 시 빠른 로딩 속도를 제공하여 더 부드러운 사용자 경험(UX) 제공

2. 클라이언트 사이드 라우팅

  • JavaScript 기반 라우팅을 통해 화면을 전환
  • MPA처럼 서버에서 새로운 페이지를 요청하지 않고도 화면을 변경 가능
  • React Router, Vue Router, Angular Router 등 다양한 클라이언트 사이드 라우팅 라이브러리 활용 가능

3. 상태 관리

  • 애플리케이션 상태를 클라이언트에서 관리
  • Redux, Vuex, Recoil, Pinia 등의 상태 관리 라이브러리와 함께 사용하여 서버와의 데이터 동기화 가능
  • 빠른 인터랙션 제공

4. 재사용 가능한 컴포넌트

  • 컴포넌트 기반 구조를 사용하여 유지보수성과 확장성이 뛰어남
  • React, Vue, Angular 등의 프레임워크에서는 UI를 독립적인 컴포넌트로 개발 및 재사용 가능
  • 생산성 향상 및 코드 관리 용이

SPA를 사용하면 좋은 경우

  • 사용자 인터랙션이 많고, 빠른 반응성이 필요한 서비스
  • 대규모 웹 애플리케이션
  • 모바일 친화적인 웹 앱 (PWA)
  • JavaScript 기반의 프론트엔드 개발이 익숙한 경우

예시:

  • Facebook, Twitter, Gmail, Trello, Google Maps
  • 대시보드, 관리자 페이지, SaaS 웹 애플리케이션

결론

  • SPA는 단일 페이지에서 필요한 데이터만 로딩하여 빠른 웹 경험을 제공하는 방식입니다.
  • MPA는 전통적인 방식으로, 페이지 이동 시 서버에서 새로운 페이지를 요청합니다.
  • 웹 애플리케이션의 목적과 요구사항에 따라 SPA 또는 MPA를 선택하는 것이 중요합니다.

빠른 반응성과 인터랙션이 중요한 경우 SPA, 간단한 정보 제공 사이트라면 MPA 방식을 고려하세요!

profile
Devlog

0개의 댓글