학습/DB1 [redis] redisson을 통한 분산 락 저는 입사 후 광고 플랫폼의 어드민 쪽을 담당하여 개발하고 있는데요. 트래픽은 적지만, 다수의 심사자가 동시에 동일한 요청을 할 경우 동시성 문제가 발생할 여지를 안고 있었습니다. 심사의 상태값을 변경할 수 있는 기능을 예로 들어보겠습니다. 해당 기능은 심사자의 잘못된 심사와 같은 휴먼 에러를 해결하기 위해 개발되었습니다. 승인된 심사를 거절로 바꾸거나, 거절된 심사를 승인으로 바꿀 수 있는데요. 이 때 심사 이력을 남기기 위해 기존 심사 데이터의 상태를 변경하지 않고, 원하는 상태의 새로운 심사를 생성하여 기록합니다. 이 때 어떤 심사자가 심사 완료 버튼을 순식간에 여러 번 클릭하면서 동일한 요청을 여럿 보내게 되면 "원하는 상태의 새로운 심사"가 다수 생성되는 동시성 문제가 발생했습니다. 결과적으로는.. 2021. 1. 24. 이전 1 다음