[TIL] SPA, MPA, CSR, SSR

홍효정·2020년 12월 22일
0

TIL

목록 보기
32/40

3세대 웹 - SPA 의 등장


기존에는 동일한 서버에서 html, css, js를 매번 전송해야하는 방식이었다.

하지만 웹 서비스의 발전으로 SPA(Single Page Application) 가 나타나면서 자바스크립트로 html 태그를 동적으로 생성할 수 있게 되었다.

그로인해 html, css, js 영역과 데이터 영역이 분리되기 시작하고 개발업무 또한 프론트엔드와 백엔드로 나뉘어서 발전하게 된다.



SPA와 MPA의 차이점


📌 SPA (Single Page Application)

  • html 파일이 한 개이다.
  • 페이지를 이동할때 서버로부터 html 파일을 받아서 이동하는것이 아닌, 자바스크립트 내의 특정 함수를 타서 <div id="root" /> 의 내용을 교체한다.
  • 페이지 이동시 화면 깜박임 X

📌 MPA (Multi Page Application)

  • 정적 웹사이트로 구성된 html 파일이 여러 개이다.
  • 페이지 이동시 화면 깜박임 O



CSR과 SSR의 차이점


📌 CSR (Client Side Rendering)

  • 웹 페이지의 렌더링이 클라이언트(브라우저)측에서 일어나는것을 의미한다.
  • 백엔드 서버에서 최초 호출시에만 html, css, js를 받아오고 그 후에는 사용자의 상호작용에 따라서 필요한 만큼의 데이터만 요청한다.

장/단점

  1. 최초 호출 이후에는 동적으로 빠르게 렌더링 하기 때문에 사용자 UX가 뛰어나다.
  2. 필요한 만큼의 데이터만 요청하기 때문에 서버 부하의 위험이 적다.
  3. SEO(검색엔진 최적화) 문제가 발생할 수 있다.

📌 SSR (Server Side Rendering)

  • CSR과 반대로 서버측에서 렌더링을 한 뒤 브라우저에 보여지는 방식이다.

장/단점

  1. SEO 측면에서 유리하다.
  2. 매번 페이지를 요청할 때마다 새로고침 되기 때문에 사용자 UX가 다소 떨어진다.
  3. 사용자의 상호작용에 따라 서버에 계속 새로 요청을 하기 때문에 트래픽, 서버 부하가 커진다.



SEO(Search Engine Optimization)


왜 SPA의 CSR에서 SEO 문제가 생길까?

우리가 평상시처럼 CRA로 프로젝트 초기세팅을 완료하여 build 할 경우 그 사이트는 Only CSR 로 실행된다. 그렇게되면 아래와 같이 CSR의 실행단계에서 구글봇이 웹 사이트에 대한 정보를 가져오지 못하고 그 경우 SEO 문제가 발생하게된다.

  1. 브라우저는 최초 요청에서 html, js, css 확장자의 파일을 차례로 다운로드.

  2. 최초로 불러온 html의 내용은 비어있음. (html, body 태그만 존재)

    이 단계에서 구글봇이 빈 html을 크롤링 하기때문에 검색 노출이 안되는 문제 발생.

  3. js 파일의 다운로드가 완료된 다음, 해당 js 파일이 dom을 빈 html 위에 그리기 시작.



CSR + SSR? ⇒ Next.js (like CRA)


  • 그렇다면 SSR과 CSR을 섞어 쓸 수는 없나요?
  • 사용할 수 있다! ⇒ 생산성을 위해 Next.js가 주로 채택
    • SSR의 CRA 간단히 구성 가능
    • 원티드, 토스, 배민, 카카오커머스 등 사용 중

Next.js by Vercel - The React Framework

profile
HHJ velog 🍔

0개의 댓글