[사전 준비]

  • docker : zookeeper, kafka, redis 이미지

[시나리오]

  1. 유저 회원가입
  2. 로그인
  3. 쿠폰 발급
    • 쿠폰 발급 성공
      • redis에 저장되는 것 : userID, 쿠폰 발급 수(count변수)
    • 쿠폰 발급 실패
      1. 쿠폰 한정 수량 초과
      • count변수(쿠폰 발급 수)가 n개 이상 시 오류
      • 시연 방식
        • 쿠폰 수량이 100개인 경우 : test로 100명이 쿠폰 발급을 받았다고 가정 → 101명부터 “쿠폰 한정 수량 초과 에러” 발생
      1. 쿠폰 중복 발급 (한 사람이 두 번 이상 쿠폰 발급)
        • redis에 저장되어 있는 userID가 다시 쿠폰 발급 시도 시 오류
        • 시연 방식
          • 한 유저가 쿠폰 발급 1번 성공 후 2번째부터 “쿠폰 중복 발급 에러” 발생
  4. optional) 조회 기능 → 쿠폰 발급 여부 확인

[쿠폰 발급 에러 확인 방법]

  1. 쿠폰 한정 수량 초과
    • CouponCountRepository에서 apply(쿠폰 발급)할 때마다 increment해서 쿠폰 발급 개수 확인 → count 변수 사용
  2. 쿠폰 중복 발급
    • 한 번 발급 받았으면 redis에 userId가 저장되므로 조회 후 발급 여부 확인
  3. 동시성 문제 → 아마 redis & kafka를 씀으로써 해결..?

[DB]

  1. UserTable
  2. CouponTable

[해결해야할 것]

  1. DB 저장 시 30초 이상의 delay가 발생