본문 바로가기

동시성 문제 해결 방법2

[Springboot] Redis로 동시성 문제 해결하기 [최상용님의 재고 시스템으로 알아보는 동시성 이슈 해결방법을 학습 후 정리한 내용입니다.] 순서 Redis 라이브러리 알아보기 작업환경 세팅 Lettuce 사용하기 Redisson 사용하기 정리 1. Redis 라이브러리 알아보기 Redis를 사용하여 동시성 문제를 해결하는 대표적인 라이브러리에는 2가지가 존재한다. Lettuce Redisson Lettuce Setnx 명령어를 활용하여 분산락을 구현한다. 기존의 값이 없을 때만 Set을 하는 명령어이다. Setnx는 Spin Lock방식이므로 retry 로직을 개발자가 작성해야 한다. Spin Lock이란, Lock 을 획득하려는 스레드가 Lock을 획득할 수 있는지 확인하면서 반복적으로 시도하는 방법이다. Redisson Pub-sub기반으로 Loc.. 2023. 5. 9.
[Springboot] Synchronized, Database로 동시성 문제 해결하기 [최상용님의 재고 시스템으로 알아보는 동시성 이슈 해결방법을 학습 후 정리한 내용입니다.] 순서 재고 시스템 생성과 문제 발생 Synchronized 사용하기 Database 사용하기 - Pessimistic Lock Database 사용하기 - Optimistic Lock Database 사용하기 - Named Lock 1. 재고 시스템 생성과 문제 발생 재고 시스템을 만들기 위해서 도메인과 서비스를 만들어보자. 도메인의 경우 id, productId, quantity 필드를 가지며, quantity를 받아서 감소시키는 비즈니스 로직이 도메인 상에 존재한다. [Domain] @Entity public class Stock { @Id @GeneratedValue(strategy = GenerationTy.. 2023. 5. 9.