![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bgWxwE/btsCpPGFhsM/ODA93BD5G9IOAVmsiLkAP0/img.png)
synchronized vs Pessimistic Lock vs Distributed Lock DB의 무결성을 보장하기 위해서는 다양한 방법이 있다. 물론 synchronized는 적합한 방법은 아니지만 왜 적합하지 않은지에 대해 살펴보고, 그 뒤 비관적 락(Pessimistic Lock)과 분산락(Distributed Lock)을 통해 성능 비교를 해보자. 재고 차감 로직을 통한 DB 부정합 문제 살펴보기 위 ProductService는 주문 관련 비즈니스 로직 중 하나로 "상품 조회 -> 상품의 재고 차감 가능 여부 확인 -> 재고 차감"의 순서로 이루어지는 로직이다. 해당 비즈니스 로직을 통해서 어떻게 DB 부정합 문제가 발생하게 되는지 테스트 코드를 작성해보자. 위 테스트 코드는 한 번에 100개..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cvWnqZ/btsz8rcfmkz/N3i6RwtDUyccxhJoGubgtK/img.png)
트랜잭션 이상 현상에 따른 정합성 문제 트랜잭션과 잠금 트랜잭션과 잠금 트랜잭션 트랜잭션은 꼭 여러 개의 변경 작업을 수행하는 쿼리가 조합됐을 때만 의미 있는 개념은 아니다. 트랜잭션은 하나의 논리적인 작업 셋에 하나의 쿼리가 있든 두 개 이 oneny.tistory.com 위 트랜잭션과 잠금에 대한 이론을 공부하고 프로젝트에 이 트랜잭션과 잠금을 어떻게 적용할 수 있을지 테스트해보려고 한다. 상품 구매 상황에서 발생 가능한 문제 두 명의 사용자가 동시에 하나의 상품을 구매했다고 가정해보면 다음과 같은 로직의 순서가 이루어진다. 구매하려는 상품 조회해서 재고가 있는지 확인 사용자의 주문 데이터 생성 구매하려는 상품 재고 차감 물론 결제 로직도 추가해야하지만 그것보다는 사용자가 상품 구매하는 상황에서 발생..
- Total
- Today
- Yesterday
- transaction
- sql
- NeXTSTEP
- spring webflux
- 넥스트스탭
- mysql
- pessimistic lock
- 분산 락
- 구름톤챌린지
- 카프카
- 람다
- redis session
- nginx
- 자바 네티
- postgresql
- Kafka
- 스프링 네티
- spring session
- TDD
- socket
- 구름톤 챌린지
- 트랜잭션
- mdcfilter
- Synchronized
- jvm 메모리 구조
- 비관적 락
- Java
- 네티 스레딩 모델
- annotation
- nginx configuration
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |