데이터 패칭
데이터 패칭
💡 왜 배워야 할까요?
개념
Next.js 14+의 App Router에서 제공하는 고급 캐싱과 ISR(Incremental Static Regeneration) 기능은 현대 웹앱의 필수 기술입니다. 대용량 트래픽 처리와 사용자 경험 최적화에 직결되어 네이버, 쿠팡, 토스 같은 대기업에서 핵심 성능 지표로 평가받습니다.
왜 중요한가?
커머스 상품 목록처럼 자주 변경되는 데이터를 매번 서버에서 가져오면 응답 시간이 3초를 넘어 이탈률이 50% 증가합니다. 또한 뉴스 사이트나 블로그처럼 콘텐츠 업데이트는 필요하지만 실시간성이 덜 중요한 경우, 적절한 revalidate 전략으로 CDN 비용을 70% 절약할 수 있습니다.
핵심 개념
Next.js의 데이터 패칭은 '똑똑한 냉장고'와 같습니다. 냉장고가 음식의 유통기한을 체크해서 상한 것만 새로 사오듯, Next.js는 데이터의 '신선도'를 관리해서 오래된 것만 서버에서 새로 가져옵니다. fetch 캐싱은 데이터를 저장하는 냉장고 역할이고, revalidate는 유통기한 체크하는 센서 역할입니다.
핵심 포인트
- ▸fetch()는 기본적으로 Request Memoization과 Data Cache 두 단계로 캐싱됨
- ▸revalidate 옵션으로 데이터 신선도 주기를 컨트롤 (초 단위)
- ▸App Router에서는 generateStaticParams와 결합해 동적 라우팅까지 최적화 가능
💡 ⚠️ 흔한 실수
- ▸revalidate 시간을 너무 짧게 설정해서 캐싱 효과를 못 보는 경우 (5초 이하는 대부분 불필요)
- ▸캐시 태그를 안 써서 전체 캐시를 날려야 하는 비효율적 운영 (revalidatePath 남발)
- ▸generateStaticParams와 revalidate를 함께 안 써서 동적 라우팅 최적화를 놓치는 경우
💡 🎯 면접 준비
Q: Next.js에서 ISR과 SSG의 차이점과 언제 각각 사용하는지 설명해보세요
Q: 대용량 트래픽 상황에서 Next.js 캐싱 전략을 어떻게 수립하겠습니까?
Q: revalidateTag와 revalidatePath의 차이점과 사용 시나리오를 말해보세요
힌트: ISR은 빌드 후에도 데이터 갱신이 가능한 하이브리드 방식이라고 설명하고, 실무 사례(커머스 상품 목록 등)를 들어 설명. 캐싱 레벨별 차이점(Request Memoization vs Data Cache)과 태그 기반 무효화의 장점을 구체적으로 언급하면 고득점.