재고, 잔액, 좌석, 쿠폰, 카운터를 먼저 표시한다.
동시성 버그는 재현보다 설계 단계 예방이 싸다
타이밍에 의존하는 버그는 운영에서만 터지기 쉽다. 경합 경로를 미리 식별하고 쓰기 방식과 재시도 정책을 정한다.
읽고 계산하고 절대값 쓰는 패턴을 줄인다.
조건부 UPDATE와 영향받은 행 수 확인을 기본으로 둔다.
낙관적 충돌, deadlock, serialization failure에 backoff를 둔다.
같은 키에 동시 요청을 몰아 주요 경로를 검증한다.
원칙: “언젠가 충돌한다”를 전제로 성공 조건, 실패 조건, 재시도 조건을 코드로 표현한다.