Engineering2024-04-20 · 12 min 읽기
Rethinking Rendering Patterns in 2025
ISR, SSR, CSR? When to use what for maximum business impact.
Rethinking Rendering Patterns in 2025
웹 개발의 렌더링 패턴은 계속 진화하고 있습니다. SSR, CSR, ISR, PPR... 언제 무엇을 사용해야 할까요?
렌더링 패턴 총정리
1. Static Site Generation (SSG)
// 빌드 타임에 HTML 생성
export default async function Page() {
const posts = await fetchPosts(); // 빌드 시 실행
return <BlogList posts={posts} />;
}
적합한 경우:
- 블로그, 마케팅 페이지
- 자주 변경되지 않는 콘텐츠
- 최고의 성능이 필요할 때
2. Incremental Static Regeneration (ISR)
export const revalidate = 3600; // 1시간마다 재생성
export default async function Page() {
const products = await fetchProducts();
return <ProductList products={products} />;
}
적합한 경우:
- 이커머스 제품 페이지
- 뉴스/콘텐츠 사이트
- 정적의 이점 + 최신 데이터 필요
3. Server-Side Rendering (SSR)
export const dynamic = 'force-dynamic';
export default async function Page({ searchParams }) {
const query = searchParams.q;
const results = await search(query);
return <SearchResults results={results} />;
}
적합한 경우:
- 검색 결과 페이지
- 개인화된 콘텐츠
- 실시간 데이터가 필수인 경우
4. Client-Side Rendering (CSR)
'use client';
export default function Dashboard() {
const { data } = useSWR('/api/analytics', fetcher);
return <Charts data={data} />;
}
적합한 경우:
- 대시보드, 관리자 페이지
- 높은 인터랙티비티
- SEO가 중요하지 않은 경우
2025년의 새로운 패턴: PPR
Partial Prerendering은 정적과 동적의 경계를 허뭅니다.
import { Suspense } from 'react';
export default function Page() {
return (
<div>
<Header /> {/* 정적 - 빌드 시 생성 */}
<Suspense fallback={<Skeleton />}>
<DynamicContent /> {/* 동적 - 스트리밍 */}
</Suspense>
<Footer /> {/* 정적 */}
</div>
);
}
선택 가이드
결론
"항상 SSR을 써야 해" 또는 "CSR이 나빠"라는 일반화는 위험합니다. 비즈니스 요구사항을 분석하고, 페이지별로 최적의 전략을 선택하세요.