07. Next.js & RSC: 서버 컴포넌트 문파
Next.js
RSC
SSR
브라우저의 짐을 서버로 옮기고, 7가지 핵심 패턴으로 풀스택 리액트의 정점을 정복하라.
서버 사이드 렌더링(SSR)과 RSC: 브라우저의 짐을 서버로 옮기기
무엇인가: 서버에서 컴포넌트를 미리 실행하여 HTML을 생성하거나 데이터를 직렬화해 전달하는 방식. RSC(React Server Components)는 번들에 포함되지 않아 클라이언트에 JS가 전송되지 않는다.
왜 쓰는가: 초기 로딩(LCP) 향상, SEO 최적화, 클라이언트 번들 크기 획기적 감축을 위해. 데이터베이스나 파일 시스템에 서버에서 직접 접근하여 waterfall 없이 데이터를 가져온다.
언제 쓰는가:
보안이 중요한 데이터 호출, 초기 로딩 속도가 핵심인 서비스, 대규모 동적 페이지. 'use client'는 상태·이벤트·브라우저 API가 필요한 최소 단위에만 선언하라.
1관문. Server-Client Composition
RSC에서 DB 데이터를 fetch하고 그 데이터를 RCC로 전달하는 조합 패턴을 구현하라.
2관문. Server Actions & Optimistic UI
Server Action으로 폼을 처리하고 useOptimistic으로 서버 응답 전에 UI를 먼저 업데이트하라.
3관문. Streaming & Suspense
loading.js와 Suspense 경계를 전략적으로 배치하여 빠른 TTFB와 점진적 UI 로딩을 구현하라.
4관문. Request Memoization
동일 렌더 사이클에서 중복 fetch가 자동으로 제거되는 원리를 확인하고 활용하라.
5관문. PPR (Partial Prerendering)
정적 레이아웃을 즉시 전송하고 동적 콘텐츠를 Suspense 스트리밍으로 채우는 PPR을 구현하라.
6관문. SEO & Metadata API
generateMetadata로 동적 라우트의 title과 openGraph 이미지를 동적으로 생성하라.
7관문. Hydration Mismatch
서버/클라이언트 HTML 불일치 에러를 진단하고 올바른 방법으로 수정하라.