inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

가장 쉬운 동시성 문제 - Race Condition

낙관적 락으로 해결할 수 없는 상황

분산 락이 필요한 이유

35

syhan7516

작성한 질문수 7

0

안녕하십니까.

 

먼저, 동시성 문제 강의를 알기 쉽게 설명해주셔서 너무 감사합니다!

 

다름이 아니라 "낙관적, 비관적 락으로 충분한데 꼭 분산 락이 필요한가요?" 라는 부분에서 질문 드립니다.

 

낙관적, 비관적 락으로 해결할 수 없는 상황을 말씀해주시며 설명해주시는데, 해당 상황이 현재 데이터베이스가 아닌 외부에 존재하는 데이터를 대상으로 정합성, 무결성을 전제로 설명하시는 거 맞을까요?

 

그러면 결국 분산 락 사용의 이유는 분산 환경에서 낙관적, 비관적 락은 데이터베이스 외부에 대한 데이터 관리가 불가능하기 때문에 필요하다고 생각하면 될까요?

redisson

답변 1

0

조요피

정리하신 내용이 맞습니다.

낙관적, 비관적 락으로 해결할 수 없는 상황은 데이터베이스가 보장하는 원자성의 범위를 벗어나는 지점에서 발생합니다.

말씀하신 대로, DB 락은 특정 DB 인스턴스 내부의 데이터 정합성만 책임집니다. 외부에 존재하는 데이터(타 서비스 API, 외부 스토리지 등)에 대해서는 무력합니다.

  • 비관적 락의 한계

    • 내 DB의 특정 행을 잠궈도 외부 API가 실행되는 것 자체를 막지는 못합니다.

       

  • 낙관적 락의 한계

    • DB 반영 직전에 충돌을 감지하더라도, 이미 외부 시스템에 명령이 전달되었다면 되돌리기 어렵습니다.

분산 환경에서 분산 락이 필요한 이유는 물리적으로 분리된 여러 프로세스 사이의 실행 순서를 강제할 전역적인 중재자가 필요하기 때문입니다.

결론: DB가 모든 것을 통제할 수 없으니, 분산 락으로 어플리케이션 계층 위에서 질서를 잡아주는 역할을 합니다.


으아 ㅠ 답변이 늦어서 너무 죄송합니다. 강의 첫 질문이라 제가 알림을 놓쳤습니다.

🙇‍♂🙇‍♂

질문 주셔서 감사합니다.

다음에는 더 빨리 답변할 수 있도록 하겠습니다.

죄송합니다.

코드자료 활용 깃

1

30

2

섹션 2 확률변수 자료 문의

1

26

1

오실로스코프 측정

1

42

2

38번 문제 보기 3,4번

1

34

3