비즈니스 요구사항에 따라 UUID나 DB 시퀀스처럼 시스템이 자동 생성하는 방식 대신 (라벨 + 날짜 + 순번) 조합의 패턴 기반 채번 방식을 주로 사용하는데, 이번에 사원번호 자동채번 로직에 외부 시스템 연동이 추가되면서 동시성으로 인한 중복 에러가 발생했습니다. 분산락으로 해결할 수 있었지만 동시 요청이 많을수록 병목이 심해지는 문제가 있었고, Redis Set의 특성을 활용해 락 없이 동시성을 보장하는 방향으로 개선하였습니다. * 순번을 DB 시퀀스로도 사용하지만 실패로 인한 Gap이 발생할 수 있어서 비즈니스를 충족하지 못 합니다.
문제 상황: 동시 등록 요청과 중복 채번 사원번호는 라벨 + 입사일(6자리) + 순번(2 or 3자리) 구조입니다. (예: X26031901) 자동채번은 입사일 기준 MAX + 1로 발급되고, 수동입력도 가능한 구조였습니다.
동시에 사원을 등록하는 케이스가 거의 없었기 때문에 동시성 문제를 크게 고려하지 않았습니다. 하지만 외부 시스템 연동이 추가...