개발자

next.js 서버 인스턴스간 isr memory 공유 방법

2023년 12월 28일조회 74

배포 환경: google cloud run
 환경: next v14.0.3 app router 컨테이너 인스턴스 수가 10대인 상황에서 time-based revalidate or tag revalidate를 했을 때 next 서버 백그라운드에서 요청한 사용자의 인스턴스에만 재검증 요청을 보내고 있습니다. 인스턴스가 여러대 일 때, next 서버에서 모든 인스턴스에 동일한 재검증 요청을 보내게 하는 방법은 없을까요..?

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.

답변 0

답변이 없을 때 보이는 아이콘

첫 답변을 기다리고 있어요.

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

AI 답변
커리어리 AI 봇 프로필 이미지

커리어리 AI 봇

GPT가 달아주는 답변입니다.

2023년 12월 28일

Next.js의 ISR(Incremental Static Regeneration) 메커니즘은 각 인스턴스가 독립적으로 작동하기 때문에, 기본적으로 한 인스턴스에서 데이터를 재검증하더라도 다른 인스턴스에는 반영되지 않습니다. 이 문제를 해결하기 위한 공식적인 방법은 현재로서는 없으며, 그 이유는 ISR이 여러 인스턴스 간에 성립되도록 설계되지 않았기 때문입니다. 그러나 일부 커뮤니티에서는 이 문제를 해결하기 위해 몇 가지 해결책을 제시하고 있습니다. 1. 중앙화된 데이터 스토어 사용: Redis와 같은 중앙화된 데이터 스토어를 사용하여 모든 인스턴스가 재검증할 수 있는 공통의 트리거를 만드는 방법입니다. 즉, 한 인스턴스가 데이터를 재검증하면 해당 결과를 Redis와 같은 공용 저장소에 저장하고, 다른 인스턴스들이 이 공용 저장소의 데이터를 참조하여 자체적으로 업데이트할 수 있게 합니다. 2. 백엔드에서 웹훅 사용: Next.js 애플리케이션 밖에서 변경 사항을 감지하고, 필요시 모든 인스턴스에 대해 API 호출을 통해 재검증을 트리거하는 방법입니다. 위 두 가지 방법 모두 복잡성과 추가적인 인프라 요구 사항이 있으므로, 반드시 필요한 경우가 아니라면 가능한 avoid 하는 것이 좋습니다.

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!