SSR

SSR 선택 비용

요청 시 렌더링은 최신성과 개인화에 강하지만 매 요청마다 서버 작업이 필요하다. 어디까지 동적으로 만들지 좁히는 것이 핵심이다.

01

동적 이유를 증명한다

사용자 쿠키, 헤더, 실시간 데이터처럼 요청마다 달라지는 입력이 실제로 필요한지 확인한다.

02

동적 범위 축소

전체 route를 no-store로 만들기보다 최신성이 필요한 fetch나 section만 분리한다.

03

응답 시간을 관측한다

SSR은 서버 계산과 외부 API 지연이 사용자 대기 시간으로 바로 드러난다.

cookies
사용자 문맥 쿠키나 세션을 읽으면 요청별 렌더링 필요성이 커진다.
캐시 공유가 어려워진다.
headers
요청 정보 지역, agent, 인증 같은 요청 속성을 반영할 수 있다.
정적 최적화와 충돌할 수 있다.
no-store
캐시 비활성 매번 새 데이터를 가져오지만 서버 부하가 커진다.
필요한 fetch에만 적용한다.
streaming
부분 응답 느린 영역을 나눠 먼저 보여 줄 수 있다.
fallback 설계와 연결된다.

동적 입력 · 범위 · 부하 점검

동적 입력 요청마다 바뀌는 값이 실제로 화면 결정에 필요한가.
범위 route 전체가 아니라 특정 데이터만 동적으로 처리할 수 있는가.
부하 외부 API와 DB 호출이 트래픽 증가를 감당하는가.

동적 fetch

const account = await fetch(url, { cache: 'no-store' });
// 개인화 데이터처럼 요청마다 달라지는 값에만 제한적으로 사용한다.