요즘에는 React Anguler Vue와 같이 SPA(single page application)같은 자바스크립트 프레임워크를 사용하여 개발한다. CSR과 SSR에 대해서 알아보기 전에 SPA와 MPA대해 먼저 알아보자.
하나의 페이지로 구성된 웹 어플리케이션으로 헤더는 고정 되어 있고 필요한 부분만 렌더링할 수 있다.
MultiPageApplication의 약자로 탭을 이동할 때 마다 서버로부터 새로운 Html을 새로 받아와서
새롭게 렌더링 하는 전통적인 웹 페이지 구성 방식이다.
SPA와 MPA는 웹 애플리케이션 페이지 관리 방식에 대한 개념이며 CSR과 SSR은 웹 페이지 렌더링 방식과 관련된 개념이다
SPA에서는 CSR 렌더링 방식을
MPA는 SSR 렌더링 방식을 사용한다.
CSR은 초기 로딩시 필요한 모든 리소스를 브라우저에 불러와서 클라이언트 측에서 동적으로 페이지를 렌더링하는 방식이다.
구글의 크롤러봇은 JS까지 실행할 줄 알기때문에 CSR 웹사이트의 크롤링도 가능하다고 한다.
하지만 완벽하지 않은 단계이고 아직 JS를 실행할 수 없는 크롤러 봇들을 위해서 SSR을 사용

CSR의 단점 보완
- 애플리케이션의 JavaScript 코드를 여러 개의 작은 번들로 분할하는code splitting, chunk 분리를 이용한다.
- JavaScript 번들에서 사용되지 않는 코드를 제거하는 최적화 tree-shaking을 사용한다.
- pre-rendering : 프리렌더링을 사용하면 웹 페이지를 미리 렌더링하여 정적인 HTML 파일로 생성할 수 있습니다. 이 정적 파일은 서버에서 미리 생성되어 클라이언트에게 전달한다. 때문에 초기 로딩 속도와 SEO를 개선하는데 도움이 되지만,
동적인 요소가 포함된 페이지는 재프리렌더링일 필요할 수도 있기 때문에 적합하지 않을 수 있다.- CSR을 사용하고 있는 SPA에 SSR이나 SSG를 도입한다.
MPA는 새로운 요청이 있을때마다 서버에서 이미 렌더링된 정적 리소스를 받아오기 때문에 SSR 렌더링 방식을 사용한다.

그렇다면 SPA는 CSR이고, MPA는 SSR이라고 생각하면 된다? 꼭 그렇지만은 않다.
SPA는 반드시 CSR 방식으로 구현되는 것은 아니다. 서버 측에서 초기 렌더링을 수행하여 서버 측에서 렌더링 된 HTML을 제공하는 SSR 방식과 결합될 수도 있다.
마찬가지로 MPA가 항상 SSR 방식으로 구현되는 것도 아니다. 클라이언트에서 필요한 데이터를 비동기적으로 가져와서 페이지를 업데이트하는 CSR 방식과 결합 될 수도 있다.
SSG는 정적 사이트 생성(Static Site Generation)으로 웹 애플리케이션을 구축하는 또 다른 접근 방식이다.
SSG는 서버에서 HTML을 보내준다는 측면 에서는 SSR과 비슷하지만 언제 페이지를 만드냐에 차이가 있다.
SSR은 요청 시 서버에서 즉시 HTML을 만들어서 동적으로 페이지를 생성하기 때문에 데이터가 달라지거나 자주 바뀌어서 미리 만들어두기 어려운 페이지에 적합하다.
SSG는 페이지들을 서버에 미리 만들어둔 뒤에 클라이언트가 요청시에 서버는 단순히 정적 파일을 제공하는 역할을 한다.
미리 생성된 정적 HTML 파일을 사용하는 방식이므로 바뀔 일이 거의 없는 페이지에 적합하다.
사용자와 상호 작용이 많고 대부분 페이지가 고객 개인 정보 데이터를 기준으로 구성되는 서비스 라면 검색 엔진 최적화에 크게 신경을 쓸 필요가 없는 경우가 있다. 이런 경우에는 CSR을 선택하는게 좋은 방법이고
회사 홈페이지나 포털 홈페이지에 상위에 노출되게 하고 싶은 경우 그리고 페이지 내용이 자주 바뀐다면 SSR 페이지 내용이 자주 바뀌지 않다면 SSG가 적합하다.
만약 사용자에 따라 페이지 내용도 달라지고 빠른 인터랙션과 검색 엔진 최적화를 모두 잡고 싶다면 CSR + SSR을 사용하고 싶다면 클라이언트와 서버 양쪽에서 렌더링을 수행하는 유니버설 렌더링(Universal Rendering)으로 구현해보는 것도 괜찮은 방법이다.
출처
https://velog.io/@vagabondms/%EA%B8%B0%EC%88%A0-%EC%8A%A4%ED%84%B0%EB%94%94-SSR%EA%B3%BC-CSR%EC%9D%98-%EC%B0%A8%EC%9D%B4
https://www.youtube.com/watch?v=YuqB8D6eCKE