상품 특가 이벤트를 개최하고자 한다. 다음과 같은 방법이 있습니다..
이벤트 로직 : 스케쥴러를 이용하여 할인 상품을 주기적으로 바꾸어 이벤트를 개최합니다..
방법 1.(Product Table update 하는 방법)
DiscountProduct 테이블을 하나 생성 - 필수
- 이벤트 발생시 DiscountProduct에 row를 추가하고 이벤트 대상 Proudct id를 해당 필드에 저장.
- View에서는 DiscountProduct테이블에 담겨 있는 상품들은 상단에 표시
- 이벤트 대상 Product의 할인율을 update. — 이부분이 조금 걱정 (1000만건이라면 시간이 오래걸리나?) - 이벤트 개최시간이라 시간이 좀 늦어도 괜찮지않나. → 10분이 걸려도 이벤트 시간 자체가 10분 뒤에 열릴 뿐 문제가 발생하진 않음.
- 장바구니에 해당 product를 담는다.
- 계산을 할 때 해당 DiscountProduct가 유효한지 체크하고, product * 할인률로 계산을 진행한다.
- 이벤트 끝나고 다시 되돌리기 — 스케쥴러로 product테이블에 담긴 product들의 할인율을 0으로 바꿈 Discountproduct의 데이터를 sortdelete
방법 2.(Product Table 건드리지 않는 방법)
Event 테이블을 하나 생성 - 필수 - redis 활용
→ 동시성 문제? (트래픽이 몰리는 경우)