[동시성] 동시 요청에서 ACTIVE 데이터는 어떻게 하나만 보장할까?
AI 위험 분석에 사용할 프롬프트를 DB에서 버전별로 관리하는 기능을 구현했다.프롬프트를 새로 등록하면 기존 ACTIVE 프롬프트를 RETIRED 상태로 변경하고, 새로운 버전을 ACTIVE 상태로 저장하는 방식이다. 예를 들어 v1이 활성화된 상태에서 새로운 프롬프트를 등록하면 다음과 같이 변경된다.등록 전v1 ACTIVE등록 후v1 RETIREDv2 ACTIVE 이 구조에서 지켜야 할 중요한 조건이 하나 있었다.동일한 prompt_key에는 ACTIVE 상태의 프롬프트가 항상 하나만 존재해야 한다.단일 요청에서는 문제가 없었지만, 동일한 프롬프트에 대한 등록 요청이 동시에 들어오면 이 조건이 깨질 가능성이 있었다.1. 동시 요청에서 Race Condition 재현하기기존 프롬프트 등록 로직은 크게 다..