putlfAbsent()의 한계와 변경감지 개선
백엔드
putlfAbsent()의 한계와 변경감지 개선
두줄요약
실시간 모니터링에서 계산식 메타데이터 동기화 문제를 다뤘습니다. `putIfAbsent()` 한계를 보완하기 위해 `replace()`로 변경 감지와 이벤트 발행을 개선했습니다.
문제 상황
- 실시간 모니터링 시스템에서 계산식 메타데이터를 서비스 간 동기화해야 하는 요구
putIfAbsent()기반 구조로는 계산식 변경 감지와 변경 이벤트 발행이 불가능한 한계- 센서 신호 구성에 따라 동일한 계산식의 내용이 달라질 수 있는 운영 시나리오
원인 분석
- 초기에는 계산식이 최초 생성 후에는 변경되지 않는다는 전제
putIfAbsent()는 기존 키가 있으면 비교나 갱신 없이 종료- 동시 수정 상황에서 단순 조회 후 비교 방식은 중복 이벤트 위험
해결 방법
replace(key, oldValue, newValue)로 기존 값과 일치할 때만 교체- 교체 성공 시에만 변경 이벤트 발행
- 다중 스레드 환경에서 변경 감지와 중복 이벤트 방지 동시 처리
