inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

재고시스템으로 알아보는 동시성이슈 해결방법

갱신 손실 문제가 일어날 것 같은 로직에는 무조건 동시성 제어를 해줘야할까요?

해결된 질문

707

동해물과백두산이마르고닳도록

작성한 질문수 27

1

안녕하세요 선생님, 먼저 좋은 강의 감사드립니다.


강의를 들으며 갱신 손실 문제를 해결하기 위한 여러 방법들을 학습하며 문득 이런 고민이 생겼습니다.

갱신 손실 문제가 일어날 것 같은 로직(예: 재고 감소)을 구현할 때, 구현 단계에서부터 동시성 제어를 처음부터 고려해야하는가? 고려한다고 했을 때, 트래픽이 얼마나 될지 모르는 상황에서 어떤 방법을 사용할 것인가?


이에 대한 제 생각은 이렇습니다.

저는 이렇게 생각했는데, 선생님께서는 위와 같은 상황이라면 어떻게 구현하실 건지 궁금합니다. 또 일단 갱신 손실 문제를 핸들링 하는 상황이라면 Redis나 Named Lock이 아닌 Optimistic Lock, Pessimistic Lock 을 가장 먼저 고려하실 건지도 궁금합니다.

읽어주셔서 감사합니다. :)

java spring 동시성

답변 2

1

최상용

haero77 님 안녕하세요.
정합성이 중요한 작업을 할때는 말씀하신대로 처음 설계할 때부터 동시성제어를 고려하여 설계해야 합니다.
또한, 순간적인 트래픽이 많지 않을 것이라고 생각되는 경우에는 (레이스컨디션이 적게 일어날 것이라고 예상되는 경우) Optimitic Lock 을 제일 먼저 고려할 것 같습니다.
그리고 운영하면서 Optimitic Lock 을 이용할 때 충돌이 많이 발생한다면, Pessimistic Lock 혹은 Redis 를 이용한 Lock 을 고려 할 것 같습니다.

두번째 경우는 순간적인 트래픽이 많을 것이라고 생각 되는경우에는 (레이스컨디션이 빈번하게 일어날 것이라고 예상되는 경우) 설계단계부터 redis 를 고려하여 설계할 것 같습니다.

감사합니다 :)

1

인프런 AI 인턴

적합한 방법이라고 생각합니다. 우선적으로 Optimistic Lock을 사용하여 성능을 최적화시키고, 만약 일부 이슈가 발생할 경우 Pessimistic Lock을 사용해 동시성 제어를 하면 됩니다. 이렇게 하면 트래픽이 많은 상황에서도 안정적인 동작을 보장할 수 있습니다. 또한 갱신 손실 문제를 핸들링하는 상황에서 Redis나 Named Lock의 사용 여부는 구체적인 구현 방법에 따라 다를 수 있으며, 상황에 따라 적합한 방법을 선택하는 것이 좋습니다.

레디선 테스트코드에서 채널이름은 없어도 되는건가요?

0

43

2

낙관적 락을 사용할 떄 차이점

0

123

2

동시성 검증 코드에 관한 문의

0

96

2

단일연산

0

70

2

낙관적락vs. 레디스락

0

108

2

안녕하세요. 레디슨 질문있습니다..!!

0

67

2

@Lock(OPTIMISTIC)이 필요한 이유

0

90

2

get_lock 의 timeout이 3000초 이던데 너무 긴거 아닌가요?

0

132

2

DataSource Hikari 사용 이유

0

147

2

saveAndFlush 사용 이유 문의

0

113

3

비관적 락 VS 네임드 락

0

160

3

application.yaml 에 redis 정보

0

100

2

왜 클래스 이름에 Facade 가 붙나요?

0

185

2

@Transactional 으로 인한 동시성 문제 발생 원인이 궁금합니다.

0

220

2

@modifying 이용한 동시성 제어

0

168

2

DB락과 분산락

0

262

2

NamedLock 테스트 실패

0

186

2

테스트에서 트랜잭션 어노테이션 질문 있습니다.

0

173

2

optimistic Lock 재시도 질문입니다.

0

232

2

낙관적 락 테스트 실패

0

242

2

오류?

0

1627

4

LettureLockStockFacadeTest에서 오류가 발생합니다.

1

268

2

Pessimistic Lock 전체 테스트 오류 문의

0

360

3

비관적 락 vs 레디스(Lettuce)락 비교 관련 질문

0

461

2