동시성 이슈 고민
Oracle Database를 사용하는 주택금융공사 차세대 프로젝트 때 일이다.주택금융공사 사내 프로그램을 개발중이었고,예산 파트를 맡았었고... 예산 출납이 빈번히 일어났었다.(각종 경비, 급여, 추경, 예산 배정 그리고 이를 따라가는 지옥의 차변대변)빈번히 일어나는
은 버전 관리를 통해 Lock을 거는 방식이다.장점 실제로 데이터베이스에 Lock을 거는 것이 아니기 때문에 데드락에 대한 부담이 없다단점업데이트 실패 시 로직을 개발자가 직접 만들어줘야 함업데이트 실패 시 계속 재시도를 하기 때문에 충돌이 많은 경우에 비관적 락보다
이름을 가진 락을 획득한 후 해제될 때까지 다른 세션은 이 락을 획득할 수 없다.트랜잭션이 종료될 때 락이 자동해제 되지 않기 때문에 별도로 락을 해제\_\_해주거나 선점 시간이 끝나야 해제 됨실제 사용 시 다른 데이터소스를 분리하여 사용해야 함Connection Po

setnx 명령어 터미널 테스트NameLock과 유사한 방식으로 구현 됨예제 소스
redisson library 추가오늘 날짜 기준 최신 버전https://mvnrepository.com/artifact/org.redisson/redisson-spring-boot-starterLettuce보다 부하가 적음Lock 관련 클래스를 제공해주기 때

이미 데이터가 존재하는 경우 update할 대상 row를 선점하는 방식이야 간단하게 이해가 되지만(특히 공연이나 영화 예매와 같이..)애초에 사내 정책으로 결정 limit값 이하까지만 데이터 입력을 허용하는 것은 결이 조금... 달랐습니다.커뮤니티 가입 인원 100명