동시성(Concurrency) 제어 - 비관적 락, 낙관적 락, 분산 락
개발을 하다보면, 하나의 자원에 다수의 사용자가 동시에 접근하는 상황이 꽤나 자주 발생한다.같은 자원(예를 들어, DB)에 동시에 접근할 경우, 충돌이 발생하여 데이터 일관성이 깨지거나 시스템 상 치명적인 오류를 발생시키기도 한다. 대표적인 예시로는 은행 시스템이 있다.나의 계좌(100,000원)에서 입금(20,000원)과 출금(10,000원)이 동시에 발생하고 있다고 생각해보자.내가 출금 요청을 하는 중에 입금 요청이 들어왔고, 요청이 완료되었다. 그 후에 출금 요청이 완료되었다.이 경우에 기댓값은 100,0000 - 10,000 + 20,000 = 110,000원이 될 것이다. 그러나 이 경우에는 90,000원이 결과로 나오게 된다.왜 그럴까? 출금 연산을 시작했을 때, 서버는 DB에서 100,00..
2026. 1. 6.