작성
·
16
0
TCC 구현하기(2) - 동시성문제 해결하기에서 갑자기 왜 분산락 사용에서 Optimistic Lock 사용으로 변경되었는지 알 수 있을까요?
답변 2
0
백종인님 안녕하세요.
강의에서 사용했던 분산락은 1개의 주문에 대한 처리를 보장하기 위하여 사용하였습니다.
A 상품의 재고가 5개가 있다고 가정해보고 1번 주문이 A 상품을 4개구매, 2번 주문이 B 상품을 2개구매 한다고 가정해보겠습니다.
분산락은 1번주문과 2번주문이 각 1번씩 주문되는것을 보장해줍니다. 하지만 A 상품의 재고는 보장해주지 못합니다. -> A 상품이라는 리소스에 여러개의 접근이 '동시에' 가능하기 때문입니다.
A상품이라는 리소스에 여러개의 접근이 동시에 가능한것을 방어하기 위하여 optimistic lock 을 활용하였습니다.
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다. 백종인님
질문해 주셔서 감사합니다. Optimistic Lock
을 사용하는 이유는 주로 시스템의 성능 최적화와 특정 환경에서의 효율적인 동시성 관리를 위해서입니다. 일반적으로 분산락
은 여러 시스템 간의 자원 접근을 관리하기 위한 방법으로 사용되지만, Optimistic Lock
은 데이터 충돌이 적은 환경에서 더욱 효과적으로 동작합니다.
Optimistic Lock의 주요 장점은 다음과 같습니다:
분산락
을 사용하는 것은 여러 시스템에서 동일한 리소스에 대해 접근할 때, 동시성 관리를 좀 더 강력히 해야 할 경우에 유용합니다. 하지만 Optimistic Lock은 동시성 문제가 빈번하지 않을 때의 대안으로 선택될 수 있습니다.
예를 들어, TCC(트랜잭션 수율 계산) 구현 시에 작업이 서로 독립적이며 충돌이 드물다고 판단되면 Optimistic Lock
을 선택하여 시스템의 성능을 최대한 끌어올릴 수 있습니다.
이와 관련된 질문 및 답변을 통해 더욱 상세한 정보를 원하신다면 다음 링크를 참고하실 수 있습니다:
- Optimistic Lock 버전 관리 질문 - Optimistic Lock이 동시성 문제를 어떻게 해결할 수 있는지에 대한 설명이 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.