RSC를 프로덕션에 도입한 지 3개월이 지났다. 번들 크기는 확실히 줄었지만, 멘탈 모델의 전환 비용이 생각보다 컸다.

좋았던 점

  • 데이터 페칭이 컴포넌트 안으로 들어오면서 워터폴이 눈에 보이게 됐다
  • 클라이언트 번들에서 마크다운 파서, 날짜 라이브러리가 빠졌다

불편한 점

"use client" 경계를 어디에 그을지가 매번 논쟁거리다. 서버 컴포넌트에서 클라이언트 컴포넌트로 함수를 넘길 수 없다는 제약은 알면서도 계속 걸려 넘어진다.

// 이건 안 된다 — 함수는 직렬화되지 않는다
<ClientList onSelect={(id) => db.update(id)} />

결론: 새 프로젝트라면 추천, 기존 SPA 마이그레이션이라면 신중하게.