최근 리액트를 공부하면서 SPA
에 대해서 공부하게 되면서 자연스럽게, 서버 사이드 렌더링과 클라이언트 사이드 렌더링 등 개념에 대해서 확실히 알고 넘어가야겠다는 생각이 들었다. 그래서 보통 이런 개념을 쌓을 때는 서로 비교하면서 공부하는 것이 효율적이기 때문에 SSR과 CSR의 특징을 서로 비교하면서 알아보려고 한다.
SSR은 서버 사이드 렌더링을 말한다. 쉽게 말해서 서버에서 사용자에게 보여줄 페이지들을 모두 구성해서 보여주는 방식이다. SSR을 사용했을 때, 모든 데이터가 준비되어 연결된 서비스 페이지를 클라이언트에게 바로 보여준다. 그렇기 때문에 서버에서 해야할 일들이 굉장히 많아지고, 자연스럽게 CSR에 비해서 페이지를 구성하는 속도는 상대적으로 늦다. 하지만 사용자에게 완결된 콘텐츠를 보여주는 관점으로 볼 때는 오히려 CSR보다 빠르다고 할 수 있다. 거기에 SEO(Search Engine Optimization)에도 CSR보다는 SSR이 더 효율적이다.
CSR은 클라이언트 사이드 렌더링으로 서버에서 하는 일을 조금 줄여서 클라이언트 사이드(브라우저)에서도 처리하는 방식이다. 그렇기 때문에 CSR은 SSR에 비해서 초기 페이지의 속도는 빠르다. 하지만 서비스에서 필요한 데이터를 계속해서 추가로 요청하고 재구성 하는 방식이기 때문에, 페이지 완료시점으로 볼 때는 SSR보다 느리다.
SPA는 한 개의 페이지로 이루어진 단일 페이지 애플리케이션으로, 현재의 페이지를 동적으로 작성함으로써 새로운 페이지를 받아오지 않고 사용자와 소통하는 웹 애플리케이션이다. 연속되는 페이지 간의 사용자 경험을 향상시키고, 웹 애플리케이션이 데스크톱 애플리케이션처럼 동작하도록 도와준다. SPA의 세부적인 특징은 다음과 같다.
위와 같이 이렇게 프론트와 백을 분리 시킬 수 있다.
MPA는 여러 페이지로 이루어진 어플리케이션이다. 서버로 부터 완전한 페이지를 받아오고, 이후에 데이터가 추가되거나 변경되거나 할 때는 다른 완전한 페이지로 이동한다. MPA는 일반적으로 SSR에 가깝다고 할 수 있다.
쉽게 말하면, 둘은 같다고 비교하기에 적합한 대상은 아니다. SPA와 MPA, CSR과 SSR같은 경우는 비교대상으로, 페이지를 여러개 쓰는지 하나만 쓰는지와 렌더링을 클라이언트에서 하는지 서버에서 하는지로 나뉘어 비교될 수 있지만 SPA와 CSR은 적절한 비교 대상은 아니다. SPA는 단일 페이지에서 렌더링을 바꿔가며 하기 위해 CSR방식을 사용한 것이고, MPA에서는 동적이지 않은 페이지를 상황에 맞게 클라이언트에 제공하기 위해서 SSR방식을 택한 것이다.
SPA라고 해서 무조건 CSR만 적용하는 것은 아니고 SSR을 적용하기도 하는 경우가 있다. 특히 SEO(Search Engine Optimization)의 경우 SSR이 뛰어나기 때문에 사용하기도 한다. SPA에 SSR을 쉽게 적용하기 위해서 최근에는 서버 사이드렌더링을 제공하는 Next.js
와 같은 것을 이용하기도 한다. 다음에는 Next.js
에 대해서도 공부하여 포스트해볼 것이다.
참고 글