BuySell - 선착순 쿠폰발급 (2)

2024. 3. 20. 11:19·내일배움캠프 프로젝트

 

어제 고민해보았던 내용 정리

튜터님께 여쭤보니 동시성 제어를 하는 방법을 몇가지 알려주셨다.

 

쿠폰 발급 과정

 

1. 쿠폰을 미리 생성 -> 선착순 발급

2. 쿠폰 발급 요청 시 쿠폰생성 -> 선착순 발급

 

1번을 선택하기로 했다.

 

phantom write를 방지하기 위한 방법 isolation level을 설정하는 것인데

격리수준을 serializable을 사용할지, repeatable read를 사용할지에 대한 고민도 생긴다.

 

serializable을 사용하면 가용성의 저하가 발생하기에 잘 사용하지 않는다.

repeatable read를 사용하면 선착순 요구사항을 지키기 어렵다. (먼저 신청한 A는 실패했는데 B는 성공할 가능성이 있음)

 

그리고 Redis를 사용하는 방법

싱글쓰레드인 Redis를 사용하면 선착순 요구사항을 충족시킬 수 있다.

 

그리고 지금 프로젝트에서 postgreSQL을 사용하는데, default isolation이 read commit이라 repeatable read를 사용하려면

isolation level을 설정해야하는데, 지금 당장 이 부분 다루는 것 보다 Redis의 count를 사용해 해결하는 방법이 좋아보인다.

 

관련 내용을 조금 찾아봐야겠다.

'내일배움캠프 프로젝트' 카테고리의 다른 글

BuySell - S3 이미지 업로드  (1) 2024.03.28
BuySell - 선착순 쿠폰 발급기능 (3)  (0) 2024.03.24
BuySell - 선착순 쿠폰발급  (0) 2024.03.20
Buysell - 별점기능 구현(2)  (0) 2024.03.20
BuySell - 별점기능 구현  (0) 2024.03.13
'내일배움캠프 프로젝트' 카테고리의 다른 글
  • BuySell - S3 이미지 업로드
  • BuySell - 선착순 쿠폰 발급기능 (3)
  • BuySell - 선착순 쿠폰발급
  • Buysell - 별점기능 구현(2)
공부처음하는사람
공부처음하는사람
  • 공부처음하는사람
    lazzzykim
    공부처음하는사람
  • 전체
    오늘
    어제
    • 분류 전체보기 (127)
      • Kotlin (31)
      • Java (55)
      • Spring (18)
      • Algorithm (3)
      • TroubleShooting (1)
      • 내일배움캠프 프로젝트 (14)
      • Setting (2)
      • ... (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
  • 링크

  • 인기 글

  • 태그

    빈 생명주기
    김영한
    중첩클래스
    kotlin
    언체크예외
    싱글톤
    제네릭
    김영한의 실전 자바
    배열
    Di
    래퍼클래스
    생성자 주입
    @Component
    spring
    OCP
    다형성
    캡슐화
    김영한의 실전자바
    java
    내일배움캠프
  • hELLO· Designed By정상우.v4.10.3
공부처음하는사람
BuySell - 선착순 쿠폰발급 (2)
상단으로

티스토리툴바