✨ 배경
2026-07-26 dev 환경 unique-snail Upstash 인스턴스가 DNS NXDOMAIN 상태로 확인됨. .env/.env.dev 가 같은 URL 을 공유하고 있어 prod 도 동반 사망. 502 재발 방지 코드는 #525 에서 별도 처리 중.
원인은 Upstash free tier 의 비활성 DB 자동 삭제 정책. Redis command 가 며칠간 하나도 없으면 삭제 대상. 우리 서비스의 방문자 tracking 은 봇 UA 를 걸러내기 때문에 (BOT_UA_PATTERN) uptime monitor / health check 들의 요청이 Redis 명령으로 이어지지 않음. 실 유저 트래픽이 없는 시기엔 Upstash 가 진짜로 조용해짐.
✨ 해결 방향
가장 lazy 한 조합:
GET /health/redis 엔드포인트 추가 — redisClient.ping() 만 실행. 인증 없음 (정보 유출 없음). 짧은 타임아웃 폴백 (redis client 재연결 대기로 hang 되지 않도록).
- GitHub Actions cron 주 1회 위 엔드포인트 호출. 실 유저 트래픽과 무관하게 Redis 활동 발생 → Upstash "활성" 유지.
✨ 개발 목록
✨ 기타
- 현재는 dev 만 대상. prod 를 별도 유료 Upstash DB 로 분리하면 keepalive 자체가 불필요. 무료 유지하면 워크플로에 prod URL 도 추가.
SKIP_PATH_PREFIXES 가 이미 /health prefix 를 스킵하므로 방문자 카운트에 오염 없음.
- 봇 UA (
curl, python-requests 등) 는 visitor middleware 가 어차피 skip 하니 cron 이 방문자 지표에 노이즈 남기지 않음.
✨ 배경
2026-07-26 dev 환경
unique-snailUpstash 인스턴스가 DNS NXDOMAIN 상태로 확인됨..env/.env.dev가 같은 URL 을 공유하고 있어 prod 도 동반 사망. 502 재발 방지 코드는 #525 에서 별도 처리 중.원인은 Upstash free tier 의 비활성 DB 자동 삭제 정책. Redis command 가 며칠간 하나도 없으면 삭제 대상. 우리 서비스의 방문자 tracking 은 봇 UA 를 걸러내기 때문에 (
BOT_UA_PATTERN) uptime monitor / health check 들의 요청이 Redis 명령으로 이어지지 않음. 실 유저 트래픽이 없는 시기엔 Upstash 가 진짜로 조용해짐.✨ 해결 방향
가장 lazy 한 조합:
GET /health/redis엔드포인트 추가 —redisClient.ping()만 실행. 인증 없음 (정보 유출 없음). 짧은 타임아웃 폴백 (redis client 재연결 대기로 hang 되지 않도록).✨ 개발 목록
src/index.ts—/health/redis라우트 (기존/health옆). Promise.race 로 2s 타임아웃, 성공 200 / 실패 503..github/workflows/redis-keepalive.yml— 주 1회 cron +workflow_dispatch. dev 엔드포인트 curl (-f로 실패 감지).pnpm build확인.✨ 기타
SKIP_PATH_PREFIXES가 이미/healthprefix 를 스킵하므로 방문자 카운트에 오염 없음.curl,python-requests등) 는 visitor middleware 가 어차피 skip 하니 cron 이 방문자 지표에 노이즈 남기지 않음.