상품 특가 이벤트를 개최하고자 한다. 다음과 같은 방법이 있습니다..

이벤트 로직 : 스케쥴러를 이용하여 할인 상품을 주기적으로 바꾸어 이벤트를 개최합니다..

방법 1.(Product Table update 하는 방법)

DiscountProduct 테이블을 하나 생성 - 필수

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

방법 2.(Product Table 건드리지 않는 방법)

Event 테이블을 하나 생성 - 필수 - redis 활용

→ 동시성 문제? (트래픽이 몰리는 경우)