Next.js SSR 환경에서 트래픽 폭주로 인한 서비스 장애를 겪음
ISR(Incremental Static Regeneration)과 Redis를 도입하여 TPS 4.6배 향상 달성
Nginx를 활용한 정적 리소스 서빙 최적화로 응답 시간 36% 단축
ISR(Incremental Static Regeneration)은 정적 페이지를 부분적으로 재생성하는 방식이다. 구체적으로, 첫 요청 시 캐싱된 HTML을 반환하고, revalidate 시간이 지나면 STALE 데이터를 반환하며 백그라운드에서 새 HTML을 생성한다. 따라서 SSR의 유연성과 SSG의 성능을 모두 얻을 수 있다.
운영 환경에서 인메모리 캐시 분리 문제로 Redis를 도입했다. 따라서 여러 인스턴스 간 캐시 동기화를 통해 STALE 문제를 해결했다. 반면, Redis 사용은 관리 포인트와 비용 증가라는 트레이드오프를 발생시킨다. 결과적으로, 서비스 규모에 따라 적절한 캐싱 전략을 선택해야 한다.
CMS 수정 시 revalidatePath와 Prefetch를 활용하여 온디맨드 재검증을 구현했다. 구체적으로, API Router를 통해 캐시를 무효화하고, curl을 사용하여 페이지를 미리 로드했다. 하지만, 배포 시 Thunder Herd 문제가 발생하여, generateStaticParams를 활용한 해결 방안을 모색 중이다.