상현에 하루하루
개발자의 하루

SSR, CSR 도대체 무엇이 좋을까?

( 업데이트: )

단순히 나의 욕심 때문에 이런 고민을 시작하게 되었다.

SSR로 구성하면 서버에 비중을 높여서 고성능 서버를 사용해 사용자에게 쾌적한 환경을 제공? 하지만 고성능 서버를 운영 및 관리하려면 그만한 비용이 들어가기 때문에 초기 스타트업이나 개인이 사용하기에는 적절하지 않다.

그렇다고 CSR로 클라이언트의 비중을 높이는 방식으로 구현을하면 사용자에게 쾌적한 환경을 제공할 수 있다는 보장이 없다. 여러 환경에서 테스트 해보고 최적화를 해야하는 부담도 있다.

그러면 도대체 어떤 것을 써야 할까? 고민이 시작되었다.

어떤 것을 기준으로 정해야 할까?

나혼자 고민 하기보다는 의견을 공유받고싶어서 여러 사람들에게 물어봤다.

다양한 의견을 들어보니 기준은 SEO를 기준으로 생각하는 것 같았다. (FE개발자 관점)

생각의 변화

내가 고민하던 SSR, CSR의 고민은 잘못된 방향이었다.
이미 서비스의 방향에 따라서 결정되어 있었다!

지금 까지는 블로그를 기준으로 CSR과 SSR을 고민하다 보니까 혼동이 온 것 같다. 😅
반대로 생각해 보았다 SSR 서비스를 CSR로 구성할 수있을까?

SSR은 무엇이 있을까? 쇼핑몰을 기준으로 생각해 보았다.

일단 서비스의 형태를 생각해 보니 유저와 유저가 선택한 데이터로 통신을 하고 데이터로서 페이지를 구성해야 한다. 미리 정의해서 만들어 놓고 Client에서 렌더링하는 방식으로는 수천 수백가지의 가지수를 고려해 만들 수가 없다.

보안상에 문제가 생긴다. 결제라는 민감한 문제를 해결해야하는데 Client쪽에서 이런 작업을 한다면 조작도 가능하고 이런 부분을 체크할 수 없다는 것이 문제였다.

SSR은 CSR로 구성하기에는 제한적이고 CSR은 SSR로 구성해도 크게 문제가 없다는 것이다.

나만의 기준

  1. 제작해야 할 서비스가 SSR이 도입되어야 하는지 먼저 체크
    – 보안상 Client 쪽에서 구성할 수 없는 로직이 필요한지?
    – 데이터로 HTML 구성해서 내보내야 하는지?
    – SEO가 필요한지?
  2. CSR or SSR 어떤 것을 사용할지 선택
    어떤 스택을 사용할지는 선호하는 방향으로 선택하면 될 것같다!

데이터가 자주 바뀌지 않는 정적인 영역들에 대해서는 필수적으로 SSR(ex. 제품 상세페이지, Q&A 페이지…)