

SPA는 CSR(Client Side Redering) 방식으로 렌더링한다.JSON 형식으로 전달받아 페이지를 갱신한다.(페이지의 갱신은 화면 깜빡거림없이 기존 페이지의 내부를 수정하여 보여주는 형식으로 이루어진다.)SPA를 일반적으로 CSR(Client Side Rendering) 방식으로 렌더링한다고 말한다.속도와 응답시간(높은 성능)
전체 페이지를 다시 렌더링하지 않고, 변경되는 부분만을 갱신하므로 새로고침이 발생하지 않아 네이티브 앱과 유사한 사용자 경험(UX)을 제공할 수 있다.
모바일 친화(모바일 퍼스트 전략)
모바일 앱도 SPA와 동일한 구조로 개발이되므로 Bacekend 코드를 재사용할 수 있다.
로컬스토리지 캐시
SPA는 모든 로컬 스토리지를 효과적으로 캐시할 수 있게 된다.
초기 구동 속도
SPA는 렌더링되는 최초 시점에 Web Application이 필요한 모든 정적 리소스(Static Resource)를 모두 다운로드하기 때문에, 초기 구동 속도가 MPA에 비해 상대적으로 느리다.
SEO(검색엔진 최적화) 이슈
SPA는 검색엔진이 색인할 만한 컨텐츠가 없기 때문에 최적화 하기 힘들다.
⚠️ SSR 방식으로 해결은 가능하다.
보안 문제
패킷 캡처 후 XSS(Cross Site Script) 공격 코드 삽입할 수 있는 위험이 있다.
⚠️ 프론트엔드 비즈니스 로직 최소화, 서버 검증 로직 추가로 해결 가능하다.
React, Angular, Vue

request) 할 때마다 Server로부터 정적 리소스(html, javscript, css)를 다운로드 한다.MPA는 SSR(Sever Side Rendering) 방식으로 렌더링한다.SEO 친화적이다.
MPA를 사용하면 여러 페이지가 생성되기 때문에, 더 많은 수의 키워드를 타겟팅하여 색인할 수 있다.(검색 엔진이 작동하는 방식에 더 적합하다.)
확장성이 상대적으로 높다.
다중 페이지로 원하는 만큼 페이지를 추가할 수 있다.
페이지 이동시 전체 페이지를 다시 렌더링하기 때문에, 응답시간이 느리다.
정적 리소스(html, css, javascript)가 새로 다운로드 받아지기 때문이다.
보안 및 유지보수
다중 페이지로 추가되어 있는 모든 페이지가 안전한지 확인해야하므로, 보안 및 유지보수에 어려움이 상대적으로 크다.
JSP, PHP
| SPA | MPA | |
|---|---|---|
| 렌더링 방식 | CSR | SSR |
| 구현 언어 | JS Framework (Vue, React Angular) | HTML, JSP, PHP 등 |
| 보안 | 코드 노출이 쉽다 | 서버사이드 언어를 사용하면 노출되지 않는다. |
| 렌더링 속도 | 상대적으로 느림 | 상대적으로 빠름 |
| 서버 응답 속도 | 상대적 빠름 | 상대적 느림 |
| UX 친화도 | 높다 | 낮다 |
| UI 개발 및 유지보수 | 쉽고 빠르게 해당 부분만 가능 | 전체 페이지를 수정해야 하므로 오래 걸림 |
| 브라우저 의존성 | IE8이하 미지원 | 웹 브라우저에 비교적 독립적 |
| 캐싱 가능 | 한번에 받아와 캐싱 | 캐싱하기 어렵다.(세션) |
| SEO 최적화 | 비교적 어렵다 (SSR써야 가능) | 최적화에 용이함. |