가장 도전적이었던 백엔드 프로젝트에서 동시성 문제를 파악하고 해결한 과정을 정리한 결
졸업 프로젝트에서 실시간 경매 플랫폼 백엔드를 혼자 설계하고 구현했습니다. 가장 도전적인 부분은 동시 입찰 처리였습니다. 동시에 두 사용자가 같은 금액으로 입찰할 때 둘 다 낙찰로 처리되는 버그가 부하 테스트에서 발견됐고, 원인이 SELECT-UPDATE 사이 레이스 컨디션이었습니다. PostgreSQL의 FOR UPDATE SKIP LOCKED를 써서 입찰 행에 배타적 락을 걸고, 트랜잭션 안에서 금액 비교·업데이트를 원자적으로 처리하도록 바꿨습니다. 이후 초당 500건 동시 입찰 테스트에서도 중복 낙찰이 0건이 됐습니다. 이 경험으로 동시성 버그는 개발 환경에서 잘 안 보이고 실제 부하에서 드러나므로, 처음부터 락 전략을 설계에 포함시키는 것이 중요하다고 보게 됐습니다.