ABOUT

성능과 운영 안정성을 함께 끌어올리는 개발자입니다.

92% Positional Error Reduction
79% p95 Latency Improvement
90%+ Long Tasks Reduction

2022.02 · 한국장학재단

우수 멘티

한국장학재단 사회 리더 대학생 멘토링 IT

2022.10 · 동작구청

우수 인재상

동작구청 우수 SW 인재

2025.05 · (주) 그랩

프로그래밍 우수상

(주) 그랩 우수 프로그램 개발

2025.05 · AWSKRUG

AWS한국사용자모임 발표

AI agent 스크립트 튜닝 관련 발표

ComputerScience

Development

Engineering

Trouble Shooting

GUESTBOOK

첫 마음부터
함께 나누는 온기

방명록 작성하러 가기

SUBSCRIBE

최신소식을
편하게 만나보세요.

SPA

각자 할일을 제대로

 

What ?

SPA

SPA(Single Page Application)**는 웹 애플리케이션 개발 방식 중 하나로, 단일 HTML 페이지에서 동작하는 웹 애플리케이션을 의미합니다. 사용자가 웹 페이지를 탐색할 때 전체 페이지를 새로 로드하지 않고, 필요한 부분만 동적으로 업데이트하여 사용자 경험을 개선하는 방식입니다.


SPA의 특징

  1. 단일 페이지 구조:
    • 앱 전체가 하나의 HTML 파일에서 동작합니다.
    • 초기 로드 시 모든 필요한 리소스(HTML, CSS, JavaScript)를 한 번에 로드하거나, 필요한 리소스를 나중에 로드합니다.
  2. 클라이언트 중심 렌더링:
    • 서버는 데이터(API)를 제공하고, 페이지의 렌더링은 JavaScript(주로 프레임워크나 라이브러리 사용)에서 처리합니다.
  3. 페이지 전환이 빠름:
    • 새 페이지로 이동할 때 필요한 데이터만 서버에서 가져오고, 기존 HTML 구조는 재사용됩니다.
    • 브라우저가 전체 페이지를 새로고침하지 않으므로 전환이 빠르고 매끄럽습니다.
  4. AJAX 통신:
    • 비동기 JavaScript 요청을 통해 서버와 데이터를 주고받습니다.
    • 서버는 데이터를 JSON 형식으로 반환하며, 클라이언트는 이를 사용해 화면을 업데이트합니다.
  5. URL 관리:
    • SPA는 브라우저의 히스토리 API(ex. pushState, replaceState) 또는 해시(#)를 사용해 URL을 관리합니다.
    • URL이 바뀌더라도 페이지 전체를 새로 로드하지 않습니다.

SPA의 작동 방식

  1. 초기 로딩:
    • 사용자가 앱에 접속하면, 서버가 단일 HTML 페이지와 관련된 CSS, JavaScript 파일을 클라이언트로 전송합니다.
  2. 페이지 렌더링:
    • 클라이언트에서 JavaScript가 실행되며 초기 화면을 렌더링합니다.
  3. 동적 전환:
    • 사용자가 다른 페이지로 이동하려고 하면, 서버에 필요한 데이터만 요청하고 화면을 업데이트합니다.
    • 이 과정에서 브라우저의 새로고침은 발생하지 않습니다.
  4. URL 관리:
    • URL은 업데이트되지만, 실제로는 같은 페이지에서 화면만 변경됩니다.

SPA의 장점

  1. 빠른 사용자 경험:
    • 페이지 전체를 새로 로드하지 않고, 필요한 데이터만 가져와 UI를 업데이트하기 때문에 빠르고 매끄러운 사용자 경험을 제공합니다.
  2. 효율적인 서버 요청:
    • 클라이언트에서 데이터를 캐싱할 수 있어 서버와의 데이터 요청을 줄일 수 있습니다.
  3. 모바일 앱과 유사한 UX:
    • SPA는 모바일 앱처럼 동작하며, 매끄러운 전환과 즉각적인 반응성을 제공합니다.
  4. 코드 재사용성:
    • 클라이언트와 서버 간 역할 분리가 명확해져, 백엔드 API를 재사용하거나 프론트엔드 로직을 쉽게 확장할 수 있습니다.
  5. SEO 제한 극복 가능:
    • 전통적으로 SPA는 SEO에 불리했지만, 최신 기술(SSR, Prerendering)을 사용하면 이를 극복할 수 있습니다.

SPA의 단점

  1. 초기 로딩 시간:
    • 초기 로드 시 필요한 리소스가 많아, 로딩 속도가 느려질 수 있습니다.
  2. SEO(Search Engine Optimization):
    • SPA는 JavaScript로 렌더링하기 때문에 검색 엔진이 내용을 제대로 크롤링하지 못할 수 있습니다.
    • 이를 해결하기 위해 서버사이드 렌더링(SSR)이나 정적 프리렌더링을 도입해야 합니다.
  3. 브라우저 호환성 문제:
    • 브라우저가 JavaScript를 비활성화하면 앱이 동작하지 않을 수 있습니다.
    • 오래된 브라우저에서는 일부 최신 기능이 지원되지 않을 수 있습니다.
  4. 복잡한 상태 관리:
    • 클라이언트 측에서 데이터를 관리하고 UI를 업데이트해야 하므로, 상태 관리가 복잡해질 수 있습니다.
    • 이를 해결하기 위해 Redux, Vuex, MobX 같은 상태 관리 라이브러리를 사용합니다.
  5. 추적 및 분석 도구 통합 어려움:
    • SPA는 URL이 변경되어도 전체 페이지가 새로 로드되지 않으므로, Google Analytics 같은 추적 도구가 기본적으로 작동하지 않을 수 있습니다.

SPA를 지원하는 주요 프레임워크/라이브러리

  1. React.js:
    • Facebook에서 개발한 UI 라이브러리로 컴포넌트 기반 개발을 지원합니다.
    • React Router로 SPA를 구현할 수 있습니다.
  2. Vue.js:
    • 사용이 간편하고 직관적인 SPA 프레임워크입니다.
    • Vue Router와 함께 SPA를 구현합니다.
  3. Angular:
    • Google에서 개발한 완전한 프레임워크로, 대규모 SPA 개발에 적합합니다.
  4. Svelte:
    • 빌드 타임에 렌더링을 생성하여 빠르고 가벼운 SPA를 만들 수 있습니다.

SPA와 MPA(Multi Page Application)의 차이

특징SPAMPA

페이지 로드 한 번의 HTML 로드, 필요한 데이터만 갱신 요청 시마다 전체 HTML 새로 로드
성능 초기 로드 느림, 이후 빠름 페이지마다 새로고침 발생, 느릴 수 있음
SEO 어려움 (SSR로 해결 가능) 기본적으로 SEO에 유리
복잡성 클라이언트 측 코드 복잡 서버 측 코드 복잡
사용 사례 대화형 애플리케이션 (예: Gmail, Trello) 정보 중심 사이트 (예: 블로그, 뉴스 사이트)

SPA의 사용 사례

  1. 대화형 애플리케이션:
    • Google Docs, Gmail, Trello, Slack처럼 빠른 상호작용이 필요한 애플리케이션.
  2. 대시보드 애플리케이션:
    • 관리자 페이지, 통계 페이지 등 실시간 데이터 갱신이 필요한 앱.
  3. PWA(Progressive Web App):
    • 모바일과 유사한 동작을 제공하는 웹 애플리케이션.

요약

SPA는 사용자 경험을 개선하고 웹 애플리케이션을 더 빠르고 대화형으로 만들 수 있지만, 초기 로딩 속도와 SEO 문제 등 몇 가지 단점을 해결해야 합니다. React, Angular, Vue와 같은 프레임워크는 이러한 단점을 보완하며 SPA를 구현하는 데 유용한 도구를 제공합니다.

728x90