최근 FE Conf 2025에서 발표된 '쿼리를 라우트까지 전파시키기(RPQ)' 패턴에 대한 내용을 공유합니다. 해당 발표는 RSC 환경에서의 데이터 패칭 문제(워터폴, 래핑 헬)를 해결하기 위해 쿼리를 컴포넌트 레벨에서 라우트 레벨로 승격시키는 아키텍처를 제안했습니다.
그러나, 이 제안은 '좋아 보이는 것'들(Toss의 데이터 패칭 전략 + 기존 라이브러리 패턴)을 나열하고 섞는 데 그쳐, 근본적인 문제 해결에 대한 깊은 고민이나 철학적 일관성이 부족하다는 한계를 보였습니다. '왜' 이런 패턴이 필요한지에 대한 명확한 논리적 근거보다는 '이렇게 하면 좋아 보일 것'이라는 피상적인 접근이 주를 이루었습니다.
우리는 이 발표의 핵심 비판점을 분석하고, 실제 프로덕트 아키텍처에 적용할 때 어떤 점을 주의해야 하는지 논의해야 합니다.
발표의 핵심적인 문제는 **'설계의 방향성 부재'**입니다. 발표자가 언급했듯, Toss와 다른 라이브러리에서 좋아 보이는 패턴을 단순히 조합했습니다. 이는 다음과 같은 의문을 남깁니다.
generateStaticParams, fetch 함수나 SvelteKit의 load 함수 등에서 구현하고 있는 기본 철학입니다. 새로운 개념을 제시하기보다는 기존 패턴에 TanStack Query를 덧붙인 것에 불과했습니다.Suspense가 기본적으로 제공하는 이점입니다. RPQ가 추가적으로 해결하는 병렬성 문제가 무엇인지, 그리고 그로 인해 얻는 실제적인 이점이 무엇인지 명확하게 설명하지 못했습니다.layout.js와 page.js에서 동시에 fetch를 수행하여 워터폴을 방지)과 매우 유사합니다. 발표는 이것이 '새로운 패턴'인 것처럼 포장했지만, 이는 App Router의 근본적인 설계 철학을 그대로 답습한 것입니다.useQuery 호출이 훨씬 효과적입니다. 매니페스트를 유지보수하는 오버헤드 또한 무시할 수 없습니다.