Date: 2026-06-17 Status: Accepted
홈 화면은 글 목록을 정적으로 생성하면서 getPopularViewsInRecentDays로 최근
조회수 데이터를 함께 읽는다. 로컬이나 CI 빌드 환경에 Supabase 환경 변수가
있으면 정적 생성 중 외부 fetch가 발생하고, 네트워크가 제한된 환경에서는 빌드
로그에 조회수 조회 실패가 남는다.
조회수는 홈의 인기순 정렬을 보조하는 데이터다. 글 목록 자체와 페이지 생성은
조회수 집계 없이도 동작해야 하며, 빌드가 외부 런타임 데이터 소스의 일시 장애나
네트워크 정책에 묶이는 것은 바람직하지 않다.
getPopularViewsInRecentDays는 production build phase에서 Supabase 조회를
시도하지 않고 빈 배열을 반환한다. 홈의 인기순 정렬은 조회수 데이터가 없으면
기존 날짜순 fallback을 사용한다.
런타임에서 호출되는 조회수 증가, 단일 조회수 읽기, 인기순 조회 API의 기본 동작은 유지한다. 테스트 환경에서는 조회수 운영 로그를 출력하지 않아 실패 경로 테스트가 stderr를 오염시키지 않게 한다.
npm run build가 Supabase 네트워크 접근 여부와 무관하게 재현 가능해진다.- 빌드 로그에 조회수 fetch 실패가 남지 않는다.
- 정적 빌드 산출물의 홈
인기순은 빌드 시점 조회수가 아니라 날짜순 fallback을 사용한다. - 실시간 인기순이 제품 요구사항이 되면 홈을 동적 route로 전환하거나 별도 route handler를 통해 클라이언트에서 조회수 집계를 가져오는 설계를 다시 검토해야 한다.
- 홈을
force-dynamic으로 전환: 런타임 조회수는 최신화되지만 현재 정적 생성 특성과 캐시 가능성을 포기한다. - 빌드 중 fetch 실패 로그만 숨김: 빌드 로그는 조용해지지만 외부 네트워크 의존은 그대로 남는다.
- 조회수 기반 인기순 제거: 가장 단순하지만 기존 UI 옵션의 의도를 없앤다.