본 글은 김영한 님의 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 강의를 토대로 작성하였습니다.
Client Side Ren 의 약자로 서버에서 완성된 html 파일을 내려주는 것이 아닌 브라우저에서 html 파일을 구성하는 방식을 말한다. (서버에서 완성된 html 파일을 내려주는 방식이 SSR)
그렇다면 브라우저는 무엇을 보고 html을 만들까?
또한 서버에서는 어떠한 정보를 브라우저(클라이언트)로 내려주는 것일까?
CSR 방식의 화면 구성 순서는 다음과 같다.
정리하면,
1. User가 Website 요청을 보냄.
2. CDN이 HTML 파일과 JS로 접근할 수 있는 링크를 클라이언트로 보낸다.
CDN : aws의 cloudflare를 생각하면 됨. 엔드 유저의 요청에 '물리적'으로 가까운 서버에서 요청에 응답하는 방식
3. 클라이언트는 HTML과 JS를 다운로드 받는다.
(이때 SSR과 달리 유저는 아무것도 볼 수 없다.)
다운 받은 빈 Html에 다운받은 js 로직을 적용하여 html을 브라우저에서 만들어 낸다.
4. 생략
5. 다운이 완료된 JS가 실행된다. 데이터를 위한 API가 호출된다.
(이때 유저들은 placeholder를 보게된다. 요청하는 API를 HTML api라고 함.)
6. 서버가 API로부터의 요청에 응답한다.
7. API로부터 받아온 data를 placeholder 자리에 넣어준다. 이제 페이지는 상호작용이 가능해진다.
출처: https://hahahoho5915.tistory.com/52
React.js를 따로 공부해본 적은 없어서 피부로 와 닿지는 않지만, 대략 어떤 느낌인지 알 것 같다.
Sever Side Rendering 의 약자로 위에서 설명했듯이 서버에서 완성된 html을 브라우저로 내려주어 브라우저는 이를 렌더링만 하는 방식을 말한다.
이렇게, 각 방식마다 장단점이 있으니, 상황에 맞게 적절한 방식을 사용하는 것이 중요할 것 같다.
추가로 SEO를 고려한다면 SSR이 더 좋을 수도 있다.
SEO란?
검색엔진최적화
검색엔진최적화(SEO로도 불림)는 웹사이트와 웹페이지를 검색엔진이 쉽게 발견(디스커버리)하고, 읽어가서(크롤링), 색인하고(인덱싱), 상위 노출(랭킹)시켜 자연 유입되는 트래픽의 양과 질을 높일 수 있도록 관련 검색 알고리즘의 특성을 고려해서 웹사이트의 구조나 콘텐츠를 개선하는 일련의 작업을 말한다.
출처: https://www.ascentkorea.com/what-is-seo/
CSR 방식은 js를 다운 받아 화면을 모두 만들어야 메타데이터가 바뀌지만 SSR은 이미 서버에서 가져올 때 다 만들어져서 가져오므로 메타데이터 정보를 가져오기 더 용이하다.