콘텐츠로 이동
Study Note웹 개발 일반

2. 화면은 어디서 그려지는가

HTML을 누가, 언제 만드느냐 — 렌더링 전략은 이 한 문장이 전부다

이 장에서 처음 나오는 말5개
CSRClient-Side Rendering
브라우저가 JS로 화면을 전부 그리는 방식. 서버는 거의 빈 HTML만 준다.
SSRServer-Side Rendering
요청이 올 때마다 서버가 완성된 HTML을 만들어 주는 방식.
SSGStatic Site Generation
빌드 시점에 HTML을 미리 다 만들어 두고 CDN에서 나눠 주는 방식.
SPASingle-Page Application
첫 문서 로드 뒤 화면 전환을 브라우저 JS가 처리하는 앱. 첫 화면은 CSR일 수도, 서버 렌더링일 수도 있다.
하이드레이션Hydration
서버가 보낸 정적 HTML에 브라우저에서 JS를 붙여 클릭·입력이 살아나게 하는 과정. "마른 HTML에 물을 준다"는 비유다.

문제 설정 — 왜 갈래가 생겼는가

섹션 제목: “문제 설정 — 왜 갈래가 생겼는가”

1장의 마지막 단계(⑧~⑨)를 확대하면 질문이 하나 나온다. 브라우저가 받는 HTML은 완성품인가, 빈 껍데기인가?

원래 웹은 전부 완성품이었다(서버가 페이지마다 HTML을 만들어 주는 전통 방식). 그러다 앱처럼 매끄러운 상호작용을 원하게 되면서 JS가 화면을 전부 그리는 SPA가 유행했고, 그 대가(첫 화면 지연, 검색 노출 문제)가 아파지자 다시 서버로 돌아오는 흐름이 생겼다. 지금의 프레임워크들은 이 갈래를 라우트·데이터·컴포넌트 경계에서 섞어 쓰게 해 준다.

서버 응답: <div id="root"></div> + app.js (수백 KB~수 MB)
브라우저: JS 다운로드 → 파싱 → 실행 → API 호출 → 그제서야 화면
  • 장점 — 서버가 단순하다(정적 파일만 주면 끝). 화면 전환이 빠르고 앱 같다
  • 대가 — 첫 화면 전에 JS 실행과 데이터 요청이 필요해질 수 있다. 검색 엔진도 JS를 렌더할 수 있지만 발견·색인 비용이 커져 SEO가 불리할 수 있다
  • 맞는 곳 — 로그인 뒤에서만 쓰는 내부 도구, 관리자 화면. 첫 로딩과 SEO가 안 중요한 곳

SSG의 “다시 빌드해야 바뀐다”가 아픈 지점에서 나온 절충이 ISR(Incremental Static Regeneration, 증분 정적 재생성)이다. 정적 페이지를 서빙하되 일정 주기로 뒤에서 다시 생성한다. 상품 목록처럼 “몇 분 늦어도 되는” 페이지에 맞는다.

하이드레이션 — SSR의 숨은 비용

섹션 제목: “하이드레이션 — SSR의 숨은 비용”

SSR이 보낸 HTML은 보이기만 하고 아직 동작하지 않는다. JS가 로드되어 이벤트를 붙이는 하이드레이션이 끝나야 클릭이 먹는다. “화면은 떴는데 버튼이 안 눌리는” 구간이 이것이다. 이 비용을 줄이려는 시도들 — 필요한 부분만 하이드레이션(아일랜드), 서버 컴포넌트 — 이 최근 프레임워크 경쟁의 중심이다.

HTML이 도착해 화면은 보이지만 JS를 다운로드·실행해 하이드레이션이 끝나야 상호작용이 가능해지는 세 단계

서버 컴포넌트 — 갈래의 최신 진화

섹션 제목: “서버 컴포넌트 — 갈래의 최신 진화”

React 서버 컴포넌트(RSC)는 “컴포넌트 단위로 서버/브라우저 실행 위치를 고른다”는 접근이다. 서버에서만 도는 컴포넌트는 JS가 브라우저로 아예 안 간다. 이 덱에서는 이름만 알아 두면 된다 — 본편은 프론트엔드 덱 2장이다.

검색 노출과 첫 화면 속도가 중요하지 않으면 CSR, 중요하면 내용이 사용자마다 다른지로 SSR과 정적 계열을 가르고, 정적 계열은 다시 바뀌는 빈도에 따라 SSG와 ISR로 나뉘는 선택 흐름
  • 렌더링 전략은 한 문장 — HTML을 누가 언제 만드는가 (브라우저 / 서버가 매번 / 빌드 때 미리)
  • 고르는 축은 둘 — 자주 바뀌는가, 사용자마다 다른가
  • SSR에는 하이드레이션이라는 숨은 비용이 있다 — 보이는 것과 동작하는 것 사이의 틈
  • ISR·서버 컴포넌트는 갈래 사이의 절충이다 — 요즘 프레임워크는 페이지마다 다르게 고른다
  • 내부 도구에 SSR은 과잉, 공개 서비스에 CSR은 부족 — 용도가 전략을 정한다