osFoundry / Platform
핫 리플레이 및 히스토리
모든 채널은 최근 N일의 이벤트를 유지합니다. 커서를 리셋하고 어떤 시퀀스 ID에서든 재생하세요.
개요
핫 리플레이와 히스토리는 osFoundry의 채널별 이벤트 로그입니다. 모든 채널, 즉 채팅과 에이전트, 도구 뒤에서 흐르는 스트림은 최근 N일의 이벤트를 보관하며, 각 이벤트에는 단조 증가하는 시퀀스 id(seq id)가 붙습니다. 컨슈머는 자신이 마지막으로 처리한 seq id를 가리키는 커서를 추적하며 앞으로 읽어 나갑니다. 최근 구간이 핫하게 유지되기 때문에, 채널을 한 번 보내고 잊어버리는 스트림처럼 다룰 필요가 없습니다. 히스토리는 다시 읽히기 위해 그 자리에 있습니다.
핵심 동작은 단순합니다. 커서를 임의의 seq id로 되돌린 뒤 그 지점부터 리플레이하면 됩니다. 실행 도중 크래시된 에이전트, 방금 채널에 합류한 새 컨슈머, 이벤트를 잘못 처리한 도구, 이 모두가 그 공백을 잃거나 무슨 일이 있었는지 추측하는 대신 정확히 동일한 시퀀스를 다시 읽을 수 있습니다. osFoundry는 키를 직접 가져오는 BYOK 데스크톱 워크스페이스이므로, 이 히스토리는 벤더의 서버가 아니라 여러분의 워크스페이스와 함께 존재합니다. 이벤트 구간은 로컬 우선이므로, 오래된 이벤트를 리플레이한다고 해서 데이터를 제3자에게 다시 내보내는 것이 아닙니다. 커서를 재설정하고 리플레이하면, 컨슈머는 라이브에서 보았을 것과 동일한 순서의 이벤트를 그대로 봅니다.
왜 중요한가. 에이전트와 멀티채널 워크플로는 상태를 가지며, 그 상태는 이를 재구성할 수 있는 능력만큼만 신뢰할 수 있습니다. 보관되고 seq id로 주소 지정되는 구간은 "이 채널이 실제로 무엇을 보았는가?"라는 질문을 추측에서 결정론적인 재읽기로 바꿉니다. 덕분에 디버깅은 재현 가능해지고(버그를 유발한 정확한 시퀀스를 리플레이), 복구는 저렴해지며(0이 아니라 마지막으로 정상이던 커서에서 재개), 새 컨슈머 온보딩은 안전해집니다(선택한 seq id부터 백필). 구간은 설계상 최근 N일로 한정되어 있어, 히스토리는 무한정 커지지 않으면서도 유용하고 최신인 상태를 유지합니다.
주요 기능
- 모든 채널이 최근 N일의 이벤트를 보관하며, 각 이벤트에는 단조 증가하는 시퀀스 id(seq id)가 찍힙니다
- 컨슈머의 커서를 임의의 seq id로 재설정하고 그 지점부터 정확히 동일한 순서의 이벤트 시퀀스를 리플레이합니다
- 크래시된 에이전트나 중단된 실행을 처음부터 다시 하지 않고 마지막으로 처리한 커서에서 재개해 복구합니다
- 버그를 유발한 정확한 이벤트 시퀀스를 리플레이해 결정론적으로 재현하거나, 새로 추가한 컨슈머를 선택한 seq id부터 백필합니다
- 경계가 정해진 로컬 우선 보관으로 최근 히스토리를 기기에서 핫하게 유지하며, 무한 증가나 벤더 왕복이 없습니다
활용 사례
- 에이전트 개발자: 에이전트가 실행 도중 크래시되면, 그 커서를 마지막으로 커밋된 seq id로 되감고 채널을 리플레이해 멈춘 바로 그 지점에서 재개합니다
- 워크플로 디버거: 하류 도구가 잘못된 결과를 냈다면, 동일한 이벤트 범위를 리플레이해 재현하고 수정이 결정론적으로 유효함을 확인합니다
- 연동 개발자: 트래픽이 많은 채널에 새 컨슈머를 추가하고 선택한 seq id부터 백필해, 라이브 전에 최근 N일을 따라잡게 합니다
자주 묻는 질문
채널에서 이벤트를 얼마나 이전까지 리플레이할 수 있나요?
각 채널은 최근 N일 이벤트의 롤링 구간을 유지합니다. 그 구간 안의 모든 것은 시퀀스 id로 주소 지정되어 리플레이할 수 있으며, 보관 구간보다 오래된 이벤트는 시간이 지나면 만료됩니다. 따라서 핫 리플레이는 영구 아카이브가 아니라 최근 히스토리와 복구를 위해 설계되었습니다.
커서를 재설정하면 실제로 무슨 일이 일어나나요?
커서는 컨슈머가 마지막으로 처리한 seq id를 표시합니다. 이를 더 이전의 seq id로 재설정하면 해당 컨슈머는 그 지점부터 채널을 다시 읽어 동일한 순서의 이벤트를 다시 받게 됩니다. 이벤트를 삭제하거나 다시 쓰지 않으며, 읽기를 재개하는 위치만 바꿉니다.
채널 히스토리를 리플레이하면 데이터가 osFoundry 서버로 전송되나요?
아니요. osFoundry는 키를 직접 가져오는 BYOK, 로컬 우선 데스크톱 워크스페이스이며, 이벤트 구간은 여러분의 워크스페이스와 함께 보관됩니다. 리플레이는 이미 로컬에 보관된 이벤트를 다시 읽는 것이므로, 히스토리를 복구하거나 재처리하기 위해 채널 데이터를 제3자 서비스로 내보낼 필요가 없습니다.