피드로 돌아가기
Dev.toBackend
원문 읽기
Cron 기반 리마인더 전환으로 API 지연시간 60% 감소
Building VS — 2026-06-23
AI 요약
Context
예약 생성 시 알림 발송을 동기적으로 처리하여 외부 SMS 게이트웨이의 ETIMEDOUT 및 메인 스레드 블로킹 발생. 알림 조회 엔드포인트의 무거운 Join 쿼리로 인해 200ms 이상의 높은 응답 지연 및 UI 프리징 현상 노출.
Technical Solution
- 요청 생명주기에서 알림 로직을 완전히 분리하여 30분 주기 Cron Job으로 전환한 비동기 처리 구조 설계
booking-reminders.service.ts내에 24시간 및 1시간 전 전송 대상자를 정밀하게 필터링하는 Two-tier 스케줄링 로직 구현- BullMQ 도입 시 발생하는 Redis 관리 오버헤드와 Dead-letter Queue 복잡성을 배제하고 단순 Cron 기반의 상태 기반 쿼리로 대체
- 무거운 Aggregation 쿼리를 Materialized View로 전환하여 조회 성능 최적화 및 컨트롤러 코드 52% 축소
- JWT 기반의 Tokenized Confirmation Flow를 도입하여 예약 확정 상태 변경의 무결성 확보
- Frontend의 NotificationBell 컴포넌트에 효율적인 폴링 메커니즘을 적용하여 불필요한 전수 조회를 방지
실천 포인트
1. 외부 API 연동 로직이 Request-Response 사이클을 블로킹하는지 확인
2. 실시간성이 절대적이지 않은 알림은 상태 필드(e.g., reminder_sent)를 활용한 배치 처리 검토
3. 복잡한 Join이 반복되는 조회 엔드포인트에 Materialized View 적용 가능성 분석
4. 인프라 복잡도 증가(Redis 등) 대비 실제 성능 이득의 Trade-off 정밀 측정