락을 잘 골랐는데 왜 더 위험해졌을까 — 주문 트랜잭션의 락 3개를 1개로 줄인 이야기TL;DR이커머스 주문 흐름에 동시성 제어를 붙이면서, 도메인마다 "맞는 락"을 골랐더니 하나의 트랜잭션에 비관적 락 2개 + 낙관적 락 1개가 공존하게 됐다. 데드락 위험, 락 보유 시간 증가, 팀원이 알아야 할 규칙 증가. 결국 "락을 잘 고르는 것"보다 "공유 자원 자체를 줄이는 것"이 더 근본적인 해법이었고, 원자적 UPDATE로 트랜잭션 내 락을 1개로 줄였다.동시성 문제가 뭔지부터 고민을 시작했다.과제를 받고 처음 든 생각은 단순했다. "공유 자원이면 동시성 문제가 생긴다." 재고, 포인트, 쿠폰, 좋아요, 여러 사용자가 건드리는 데이터를 쭉 나열했다.근데 이 정의가 틀렸다. 상품 상세를 100명이 동시에 조..