<aside> <img src="/icons/reorder_gray.svg" alt="/icons/reorder_gray.svg" width="40px" />
목차
</aside>
경매 데이터에는 만료 시각이 설정되어 있습니다. 서버는 만료 시각이 지난 경매를 파악하여 제때 마감 처리하여, 사용자의 혼란 없이 서비스가 운영되도록 해야 합니다.
또한, 경매 진행 중에 활용하는 Redis 자원을 제때 제거하여 자원을 효율적으로 사용할 수 있게 해야 합니다.
경매가 종료 되었고 사용자가 결과에 대한 알림을 받지 못한다면, 사용자는 번거로운 조회 과정을 거쳐야 합니다. 이런 불편을 해소하기 위해서 경매 마감 작업과 함께 사용자에게 알림을 발행해주어야 합니다.
경매 마감/알림 서비스가 만족해야 할 서비스적, 구조적 요구사항은 다음과 같습니다.
<aside> ✅
<aside> ⏳
주기적으로 만료된 경매 조회(Fixed Rate Polling)
➕ 간단한 구현
➖ 종료된 경매가 없어도, 일정 시간마다 DB에 접근, 메모리 점유
➖ 종료된 경매를 찾고 메시지를 발송하는 작업이 특정 시간에 집중 → 서버 부하 집중🔺
</aside>
<aside> 📅
경매 만료 시각에 특정 동작 예약(Spring TaskScheduler)
➕ 일정 시간마다 불필요하게 실행되는 Job 없음 → 메모리 등의 자원 효율성🔺
➕ 특정한 시간으로 경매 마감/알림 발송
작업이 몰리지 않기 때문에 부하 분산 효과
➖ 서버 재시작 시 예약된 알림 유실, 이에 대응하기 위한 추가 메커니즘 필요
➖ 알림을 취소하려면 ConcurrentMap으로 ScheduledFuture 객체 기억해야 함 → 메모리 자원 점유🔺
</aside>
<aside> 🔁
경매 만료 시각에 이벤트 예약(Amazon EventBridge Scheduler)
➕ TaskScheduler에서 만족할 수 있는 요구사항 모두 충족 가능
➕ 서버의 문제와 상관 없이 이벤트 유지 가능 → 알림 관리 안정성🔺
➕ 알림 취소 기능 지원, WAS에서 ScheduledFuture 기억할 필요 없음 → 전체 시스템 영향🔻
➖ AWS 서비스 의존도가 올라감
</aside>