SPA vs MPA, CSR vs SSR, React를 활용한 SPA 구현

원도훈·2024년 10월 14일
1
post-thumbnail

SPA vs MPA

웹 애플리케이션을 개발하는 방식은 크게 SPA(Single Page Application)와 MPA(Multi Page Application)로 나눌 수 있습니다. 두 구조는 사용자 경험, 개발 복잡도, 유지보수 등의 측면에서 매우 다른 특성을 가지며, 각각의 장단점이 있습니다. 또한 CSR(Client-Side Rendering)과 SSR(Server-Side Rendering)과 같은 렌더링 방법도 이에 밀접한 관련이 있습니다. 이번 글에서는 SPA와 MPA의 개념과 장단점을 비교하고, React와 같은 프레임워크가 SPA를 어떻게 구현하는지, 그리고 CSR과 SSR의 차이점에 대해 살펴보겠습니다.

1. SPA와 MPA의 개념 및 장단점

SPA(Single Page Application)

SPA는 하나의 HTML 페이지에서 필요한 부분만 동적으로 업데이트하여 페이지 전환이 이루어지지 않는 웹 애플리케이션 구조입니다. 사용자가 요청할 때마다 서버로부터 전체 HTML 파일을 새로 받지 않고, 자바스크립트를 이용해 필요한 데이터만 받아와 화면에 렌더링합니다.

장점

  • 빠른 페이지 전환: 새로고침 없이 페이지가 변경되므로 빠른 사용자 경험을 제공합니다.

  • 적은 서버 부하: 처음 한 번만 HTML, CSS, JS 파일을 로드하고 이후에는 필요한 데이터만 요청하기 때문에 서버 부하가 줄어듭니다.

  • 더 나은 사용자 경험: 매끄러운 전환과 애니메이션을 구현하기에 유리합니다.

단점

  • 초기 로딩 속도: 초기 로딩 시 필요한 모든 리소스를 한 번에 로드하므로 로딩 속도가 느릴 수 있습니다.

  • SEO 문제: 자바스크립트를 통해 렌더링하기 때문에 검색 엔진이 콘텐츠를 크롤링하는 데 어려움을 겪을 수 있습니다.

MPA(Multi Page Application)

MPA는 각각의 페이지가 별도의 HTML 파일을 갖는 구조입니다. 사용자가 페이지를 이동할 때마다 서버에 요청을 보내고 새로운 HTML 파일을 받아옵니다.

장점

  • SEO 친화적: 각 페이지가 고유한 URL을 가지고 있어 검색 엔진이 콘텐츠를 쉽게 크롤링할 수 있습니다.

  • 복잡한 애플리케이션에 적합: 많은 페이지와 다양한 기능을 가진 웹사이트에 적합합니다.

단점

  • 느린 페이지 전환: 매 페이지 전환 시마다 서버에서 새로운 HTML 파일을 받아와야 하므로 페이지 전환이 느립니다.

  • 더 많은 서버 부하: 각 요청마다 전체 페이지를 로드해야 하기 때문에 서버에 부하가 많이 걸릴 수 있습니다.

2. SPA와 MPA의 차이점

  • 페이지 전환 방식: SPA는 클라이언트 측에서 페이지를 업데이트하고, MPA는 서버에서 새로운 페이지를 로드합니다.

  • SEO: MPA는 SEO에 유리하지만, SPA는 검색 엔진에 잘 노출되기 위해 SSR을 사용하거나 특정 설정이 필요합니다.

  • 사용자 경험: SPA는 페이지 전환이 매끄럽고 빠른 사용자 경험을 제공하며, MPA는 매번 새로운 페이지를 로드하기 때문에 전환 속도가 느릴 수 있습니다.

3. React가 SPA를 구현하는 방법

React는 컴포넌트 기반의 라이브러리로, SPA를 쉽게 구현할 수 있는 도구를 제공합니다. React Router와 같은 라이브러리를 사용하여 URL의 변경에 따라 필요한 컴포넌트만 업데이트함으로써 SPA 형태로 동작합니다.

  • React의 상태 관리: React는 상태(state)를 기반으로 UI를 업데이트합니다. 상태가 변경되면 해당 컴포넌트를 다시 렌더링하여 사용자에게 최신의 UI를 제공합니다. 상태 관리는 기본적인 useState 훅 외에도 Redux, Context API 등을 통해 이루어질 수 있습니다.

  • Virtual DOM 사용: React는 Virtual DOM을 사용해 실제 DOM의 변경을 최소화합니다. 상태가 변경되면 Virtual DOM에서 변화가 필요한 부분만 계산하고, 이를 실제 DOM에 반영하여 효율적인 렌더링을 제공합니다.

4. CSR vs SSR

CSR(Client-Side Rendering)

CSR은 클라이언트 측에서 자바스크립트를 사용하여 렌더링을 수행하는 방식입니다. 사용자가 웹페이지를 방문하면 기본적인 HTML 파일과 자바스크립트 파일이 로드되고, 이후 자바스크립트가 HTML을 생성하여 화면에 렌더링합니다.

장점

  • 빠른 인터랙션: 초기 로딩 이후에는 서버와의 통신 없이 빠른 인터랙션이 가능합니다.

  • 더 나은 사용자 경험: 애니메이션 및 비동기 요청을 활용해 매끄러운 사용자 경험을 제공합니다.

단점

  • 초기 로딩 지연: 클라이언트에서 모든 렌더링이 이루어지므로 초기 로딩 시간이 길어질 수 있습니다.

  • SEO 문제: CSR 방식은 검색 엔진이 콘텐츠를 렌더링하기 어려워 SEO에 불리할 수 있습니다.

SSR(Server-Side Rendering)

SSR은 서버에서 HTML을 렌더링하여 클라이언트에 전송하는 방식입니다. 페이지 요청 시 서버에서 HTML을 생성하고 이를 클라이언트에게 전달하므로 초기 화면 로딩 속도가 빠릅니다.

장점

  • 빠른 초기 렌더링: 서버에서 미리 렌더링된 HTML을 제공하므로 초기 로딩이 빠릅니다.

  • SEO 친화적: 검색 엔진이 렌더링된 HTML을 쉽게 크롤링할 수 있어 SEO에 유리합니다.

단점

  • 서버 부하: 모든 요청에 대해 서버에서 HTML을 렌더링하므로 서버에 부하가 걸릴 수 있습니다.

  • 사용자 경험 제한: 매 페이지 전환 시 서버 요청이 필요하므로 인터랙션이 다소 제한적일 수 있습니다.

5. CSR과 SSR의 차이점

  • 렌더링 위치: CSR은 클라이언트 측에서, SSR은 서버 측에서 렌더링이 이루어집니다.

  • 초기 로딩 속도: SSR은 초기 로딩 속도가 빠르지만, CSR은 초기 로딩 이후 인터랙션이 더 빠릅니다.

  • SEO: SSR은 렌더링된 HTML을 제공하므로 SEO에 유리하고, CSR은 SEO에 불리할 수 있습니다.

결론

SPA와 MPA는 각각 다른 목적과 요구사항에 맞춰 선택할 수 있는 웹 애플리케이션의 구조입니다. SPA는 매끄러운 사용자 경험을 제공하는 반면, MPA는 SEO에 강점을 가지고 있습니다. 또한 CSR과 SSR은 렌더링 방식에 따라 각각의 장단점을 가지며, 프로젝트의 요구사항에 따라 적절한 방식을 선택하는 것이 중요합니다. React는 주로 SPA와 CSR을 기반으로 작동하지만, SSR을 활용하여 SEO 문제를 해결할 수 있는 옵션도 제공합니다. 이러한 개념들을 잘 이해하고 상황에 맞는 선택을 하는 것이 성공적인 웹 애플리케이션 개발의 핵심입니다.

profile
개발

0개의 댓글