SSR은 Server Side Rendering의 줄임말이다.
사용자가 페이지를 요청했을 때 서버가 HTML을 만들어서 보내고, 브라우저는 그 결과를 먼저 보여준다.
즉, 첫 화면의 기본 모양은 서버 쪽에서 준비해주는 방식이다.
예를 들어 뉴스 기사, 상품 상세, 랜딩 페이지처럼 처음 보여주는 콘텐츠가 중요한 화면에서 자주 이야기된다.
CSR은 Client Side Rendering의 줄임말이다.
처음에는 비어 있거나 최소한의 HTML을 받고, 이후 자바스크립트가 실행되면서 브라우저에서 화면을 완성한다.
싱글 페이지 애플리케이션에서 많이 쓰는 방식이고, 화면 전환이 부드럽고 상호작용이 많은 서비스와 잘 맞는다.
사용자는 서버가 만들어준 HTML을 먼저 볼 수 있어서 "아무것도 안 보이는 시간"이 줄어들 수 있다.
검색 엔진이 읽기 쉬운 HTML을 바로 제공할 수 있어서 공개 콘텐츠 페이지에 적합하다.
오픈그래프 같은 메타 정보가 중요한 페이지에서도 SSR이 자주 선택된다.
요청마다 HTML을 만들어야 하니 서버 비용과 응답 시간 관리가 중요해진다.
HTML만 보내면 끝이 아니라, 이후 자바스크립트가 붙으면서 인터랙션 가능한 상태로 만드는 과정이 필요하다.
브라우저 전용 API를 바로 쓰기 어렵고, 서버와 클라이언트 환경 차이도 신경 써야 한다.
대시보드, 관리자 화면, 협업 도구처럼 상태 변화가 많은 서비스에서 자연스럽다.
프론트는 API를 받아 화면을 그리고, 백엔드는 데이터 제공에 집중하는 구조를 만들기 쉽다.
라우팅과 부분 갱신이 부드럽고 앱처럼 느껴지기 쉽다.
자바스크립트 다운로드, 파싱, 실행이 끝나야 의미 있는 화면이 보일 수 있다.
요즘 검색 엔진이 자바스크립트를 어느 정도 처리하긴 하지만, 공개 콘텐츠 서비스에서는 여전히 신중하게 봐야 한다.
렌더링 작업이 브라우저 쪽에 많이 실리기 때문이다.
실무에서는 둘 중 하나만 고집하기보다, 공개 페이지는 SSR 쪽으로, 로그인 이후 앱 영역은 CSR 쪽으로 가져가는 혼합 전략도 많다.
쇼핑몰을 생각해보면,
그래서 "서비스 전체를 무조건 SSR" 혹은 "전부 CSR"로 보기보다 페이지 성격별로 나눠 생각하는 게 현실적이다.
SSR은 서버에서 HTML을 렌더링해서 내려주는 방식이고, CSR은 브라우저에서 자바스크립트로 화면을 완성하는 방식입니다. SSR은 초기 콘텐츠 노출과 SEO 측면에서 유리하고, CSR은 상호작용이 많은 애플리케이션에서 사용자 경험이 좋은 편입니다. 저는 공개 콘텐츠 페이지와 내부 앱 화면의 성격이 다르기 때문에, 실무에서는 둘을 혼합해서 쓰는 경우가 많다고 이해하고 있습니다.