본문 바로가기
728x90

Redisson2

Java 동시성 이슈를 해결할 수 있는 방법 - Lock 개요최근 동시성 처리에 대한 관심이 생겨 자바에서 동시성 이슈를 처리하는 방법에 대해 공부해 보았고, 일부 내용을 정리해 두려고 한다. 각 방법별로 테스트를 위해 간단한 재고 감소 로직을 구현해 테스트하였다. 재고 감소 테스트 코드이번 글에서는 동시성을 해결할 수 있는 방법 별로 실제 동시성이 해결되는지를 확인하기 위해. 간단한 재고 감소 코드를 작성하여 테스트하였다. 재고 감소를 위해 Stock이라는 엔티티를 생성한 뒤, 주어진 id에 해당하는 재고를 quantity만큼 감소시키는 아래 메서드를 작성하여 테스트하였다.@Transactionalpublic void decrease(Long id, Long quantity) { Stock stock = stockRepository.findById(id).o.. 2025. 7. 31.
결제 동시성 이슈 해결 - 분산락과 Redisson 개요회사 차세대 프로젝트에서 발송 요청 시 가결제 동시성 이슈로 인한 사용자 가결제 금액 - 잔액간 불일치 이슈가 발생했다. 발생한 가결제 이슈 프로세스를 정리하면 아래와 같다. 사용자가 2건의 60원짜리 가결제 요청P1: 가결제 금액 조회 ⇒ 0원P2: 가결제 금액 조회 ⇒ 0원P1: 가결제 처리 후 commit ⇒ 사용자 가결제 금액 60원P2: 가결제 처리 후 commit ⇒ 사용자 가결제 금액 120원보유 금액 100원 이 되어 유저 잔액(-20원) 조회 시 오류 발생위 이슈는 공유 자원인 DB에 동시에 여러 프로세스가 접근하여 값을 수정하다보니 발생한 동시성 이슈인데, 이 이슈를 Redis를 활용한 분산락을 통하여 해결하였다. 이번 글에서는 DB 접근 동시성 이슈를 해결하기 위한 방안과 분산락,.. 2024. 10. 3.