핵심은 원칙 5개를 따로 외우는 것이 아니라, 충돌을 줄이는 단계와 남은 충돌을 회복하는 단계를 요청 흐름에 맞춰 배치하는 것입니다.
SERIALIZABLE로 올리지 말고 요구사항에 맞춥니다.
불필요하게 오래 잡히는 잠금과 과한 검증 비용을 먼저 제거합니다.
A -> B처럼 자원 획득 순서를 통일해 데드락 가능성을 낮춥니다.
UPDATE balance = balance - N으로 읽기-계산-쓰기를 한 연산으로 묶습니다.
상태 변경 순간의 경쟁 조건을 사람 손의 순서가 아니라 DB 규칙으로 제어합니다.
운영 장애를 줄이되, 끝없는 재시도로 시스템을 더 불안정하게 만들지 않습니다.
순서를 기억하면 쉽습니다. 먼저 줄이고, 갱신 순간의 규칙을 고정하고, 마지막에 제한적으로 재시도합니다.