본문 바로가기
Sprint_FESI11/Project

웹이 SSR(서버가 코드를 해석해서 HTML을 만들어주는 구조) 를 유지하는 존재 이유

by Toddler_AD 2025. 10. 16.

서버가 코드를 해석해서 HTML을 보내면, “사용자에게 더 빠르고 즉각적인 첫 화면”을 보여줄 수 있기 때문입니다.

그리고 그 안에는 3가지 이유가 숨어있어요 👇


🧩 1️⃣ 사용자가 “즉시 볼 수 있도록” 하기 위해 (초기 로드 속도)

❌ CSR 방식 (브라우저가 직접 해석)

  1. 클라이언트가 요청
  2. 서버가 빈 HTML + JS 코드 전송
  3. 브라우저가 JS를 다운로드 → 실행 → API 요청 → 화면 그림
    ➡ 사용자는 그동안 “하얀 화면”을 봅니다.

✅ SSR 방식 (서버가 미리 해석)

  1. 서버가 React, JSP, ASP.NET 같은 코드를 직접 실행
  2. 완성된 HTML을 바로 클라이언트로 전송
    ➡ 브라우저는 JS를 받기도 전에 이미 완성된 화면을 보여줄 수 있음.

🔹 즉, SSR은 “보여주는 속도”를 극단적으로 단축합니다.
UX(사용자 경험)과 SEO(검색엔진 최적화)에 매우 유리하죠.


🧩 2️⃣ 검색엔진(SEO)과 SNS 미리보기 때문

검색 엔진(Google, Naver)은 HTML 문서의 내용을 읽습니다.
그런데 CSR은 JS를 실행해야 내용이 나오죠.
(검색봇은 JS를 완벽히 실행하지 못함)

비교 CSR SSR
초기 HTML 거의 비어있음 (<div id="root"></div>) 완성된 HTML (<h1>안녕하세요</h1>)
SEO 불리 유리
SNS 미리보기(meta tag) 표시 안됨 즉시 표시됨

🔹 그래서 블로그, 쇼핑몰, 뉴스, 커머스 사이트는 SSR을 택합니다.
(검색 노출, 링크 미리보기 모두 HTML 기반)


🧩 3️⃣ 보안과 인증을 서버에서 직접 처리하기 위해

서버가 직접 코드를 해석하면,

  • 로그인 세션 검증
  • 권한 체크
  • DB 접근
    등을 HTML 생성 과정에서 바로 수행할 수 있습니다.

즉,

서버 렌더링 단계에서 “이 사용자는 로그인 중인가?”를 미리 판단하고
로그인된 상태에 맞는 화면(마이페이지, 로그아웃 버튼 등)을 즉시 내려줄 수 있습니다.

CSR에서는 이런 판단을 브라우저에서 하므로,

  • “로그인 상태 깜빡임” (로그인 안 된 화면 → 로그인 화면으로 바뀜)
  • “비공개 페이지가 잠깐 보였다 숨겨짐”
    같은 현상이 자주 일어나죠.

SSR은 이걸 원천 차단합니다 ✅


⚙️ 4️⃣ “서버 부하”는 있지만, “사용자 수 기준 이득”이 큽니다

맞아요. 서버가 직접 코드를 해석하니까 서버 부하는 늘어납니다.
하지만 이건 “사용자 경험과 검색 최적화에 투자하는 비용”이에요.

그리고 현실적으로는 이렇게 부하를 줄입니다 👇

전략 설명
캐싱 (Cache) 같은 HTML은 메모리/Redis/CDN에 저장해 재사용
Static Generation (SSG) 자주 바뀌지 않는 페이지는 미리 HTML로 만들어 둠
Edge Rendering CDN 수준에서 SSR 실행 (서버 부하 분산)
Incremental Static Regeneration (ISR) 일정 주기로만 다시 렌더링

즉, 요즘 SSR은 단순한 서버 렌더링이 아니라
서버에서 렌더링은 하되, 부하를 최소화하는 전략적 SSR”입니다.


🧠 요약 정리

이유 설명
1. 빠른 첫 화면 (UX) 브라우저가 JS 실행 전에도 바로 화면 표시 가능
2. SEO / SNS 대응 HTML 완성본으로 검색엔진·미리보기 대응
3. 보안 / 인증 제어 서버가 사용자 인증을 직접 검증 가능
4. 부하는 있지만 관리 가능 캐싱·SSG·Edge로 분산 처리

결론 한 줄로 정리하자면:

서버가 코드를 해석해서 HTML을 만들어 보내는 이유는
“사용자에게 빠르고 완전한 첫 화면을 보여주기 위해서”이며,
“검색엔진과 보안 측면에서도 훨씬 유리하기 때문”입니다.

 

'Sprint_FESI11 > Project' 카테고리의 다른 글

소켓(Socket) vs HTTP Client  (0) 2025.10.16
CSR vs SSR vs SSG vs Edge  (0) 2025.10.16
JSP vs ASP vs SSR  (0) 2025.10.16
토큰 기반 렌더링 흐름  (0) 2025.10.16
서버는 렌더링만 하는데, 왜 토큰을 가지고 있지?  (0) 2025.10.16