
백엔드
올리브영 쿠폰 발급 개선 이야기
두줄요약
쿠폰 발급 수량 조회의 DB 경합을 줄이기 위해 Redis를 1차 조회로 도입했습니다. 6월 세일 트래픽 부하를 완화하고 운영 안정성을 높이는 방향으로 개선했습니다.
문제 상황
- 쿠폰 발급 피크 시간대에 발급 수량 조건 체크가 DB 경합을 유발하는 구조
- 6월 세일처럼 00시와 12시에 트래픽이 몰리며 DB 부하가 커지는 상황
해결 방법
- 발급 수량 조회를 DB 우선에서 Redis 1차 조회, 실패 시 DB 조회로 변경
- Redis의 자료 구조 활용과 빠른 메모리 조회를 통해 발급 처리 병목 완화
주의할 점
- Redis는 Collection 단위 expire, 메모리 파편화, write 시 메모리 사용 증가에 주의 필요
- 싱글 스레드 특성상 오래 걸리는 명령어와 대용량 조회 사용 시 성능 저하 가능성 존재
적용해볼 점
- 전시/발급 기간 외에는 수량 데이터를 DB로 대체하고 Redis 보관 범위 최소화
- 운영 안정성 확보를 위해 Datadog 기반 모니터링도 함께 고려
