분산 백엔드 환경에서 사물인터넷(IoT) 기기의 온라인/오프라인 상태를 정확하게 추적하는 것은 생각보다 어려운 문제입니다. 기기의 실제 연결 상태가 변경되지 않았음에도 불구하고, 배포, 로드 밸런싱, 재연결 등으로 인해 백엔드 프로세스 간에 연결이 이동하는 경우가 많기 때문입니다. 기존의 Redis(레디스) TTL(Time-To-Live) 방식은 만료 시점이 부정확하고, Pub/Sub(발행/구독) 방식은 알림 손실 시 상태 변화를 영구적으로 놓칠 수 있다는 한계가 있었습니다.
최근 발표된 논문은 이러한 문제를 해결하기 위해 '연결 비의존적 상태 추적(Connection-Agnostic Presence Tracking)'이라는 새로운 설계를 제안합니다. 이 방식은 여러 상태 비저장(stateless) 노드들이 공유하는 Redis 정렬 집합(ZSET)을 활용합니다. 각 기기의 예상 만료 시간을 점수(score)로 사용하여 ZSET에 저장하고, 쓰기 작업은 과부하를 피하기 위해 조절 및 배치 처리됩니다. 특히 중요한 점은, 독립적인 프로세스가 정해진 스케줄에 따라 ZSET에서 오래된 항목을 주기적으로 가져와 오프라인 상태를 감지한다는 것입니다. 이는 오프라인 전환 이벤트가 시스템 오류로 인해 영구적으로 누락되는 것을 방지하는 비대칭적 보장을 제공합니다.
이러한 설계는 특히 오프라인 전환의 정확성과 신뢰성을 높이는 데 중점을 둡니다. 러너(runner) 프로세스가 충돌하거나 재시작하더라도, ZSET에 남아있는 항목 덕분에 오프라인 이벤트 전송을 재시도할 수 있습니다. 이는 기존 방식들이 알림 자체가 유일한 아티팩트(artifact)여서 한 번 놓치면 복구가 불가능했던 점과 대조됩니다. 비록 온라인 전환에 대해서는 동일한 수준의 보장을 제공하지 않지만, 이는 재연결 강제나 수동 조정 등을 통해 복구 가능한 범위로 간주됩니다. 이 접근법은 아직 이론 단계이며 구현 및 벤치마킹이 필요하지만, 분산 시스템에서 IoT 기기 상태 추적의 신뢰성을 크게 향상시킬 잠재력을 가지고 있습니다.