백오프(Backoff) 전략이란?백오프(Backoff) 전략은 네트워크 지연, 시스템 과부하, 락 경합 등의 상황에서 요청을 일정 시간 대기 후 재시도하는 기법입니다. 단순히 반복해서 요청하는 것보다, 점진적으로 대기 시간을 증가시켜 시스템 부하를 줄이고 자원의 효율적인 활용을 보장하는 것이 목표입니다.특히 Redis 기반의 분산락을 사용할 때, 여러 프로세스가 동시에 같은 락을 획득하려고 하면 충돌(경합)이 발생할 수 있습니다. 이때 백오프 전략을 적용하면 락 획득 재시도 간격을 조정하여 효율적으로 락을 관리할 수 있습니다. 백오프 전략이 필요한 이유락 경쟁(Concurrency Issue) 완화여러 프로세스가 동시에 락을 획득하려고 할 때, 무작위로 빠른 재시도를 하면 서버 부하가 증가하고 성능이..
분산락 개념분산 시스템에서 여러 개의 프로세스가 동일한 자원에 접근할 때 데이터 정합성을 보장하기 위해 락(Lock)이 필요합니다. 분산락(Distributed Lock)은 여러 개의 노드 또는 프로세스가 공유 자원에 동시에 접근하는 것을 방지하는 메커니즘입니다. 분산락이 필요한 이유여러 프로세스가 동일한 데이터에 접근하여 변경할 경우, 데이터 불일치 문제를 방지하기 위해 필요합니다.분산 환경에서 특정 리소스를 하나의 프로세스만 수정할 수 있도록 제어할 필요가 있습니다.중복 실행 방지: 동일한 작업이 여러 번 수행되지 않도록 제한할 수 있습니다. Redis 분산락의 문제점과 해결책락 해제 실패 문제프로세스가 비정상 종료되거나 Redis 장애가 발생할 경우 락이 해제되지 않을 수 있습니다. 이를 방지하..
분산락을 사용할 때 락 해제 실패(lock release failure) 문제는 큰 위험 요소가 될 수 있습니다. 만약 락이 정상적으로 해제되지 않으면 데드락(Deadlock) 이 발생하거나 리소스가 불필요하게 점유되는 문제가 생길 수 있습니다. 아래에서 주요 원인과 해결책을 설명드릴게요. 락 해제 실패의 주요 원인애플리케이션 비정상 종료락을 획득한 애플리케이션이 예상치 못한 종료 (Crash, OOM, Kill Signal) 가 발생하면 락이 유지됩니다.락을 잡은 프로세스가 락을 해제하지 못하고 종료될 경우, 다른 프로세스가 락을 기다리면서 데드락이 발생할 수 있습니다. TTL(Time-To-Live) 설정 미비Redis에서 SETNX로 락을 설정한 후 TTL(EXPIRE)을 설정하지 않으면, 락이 ..