Webhook 레이스 컨디션 완화 전략

여러분 안녕하세요! :waving_hand:

DiscourseDiscord 간의 양방향 동기화 구축 작업을 하고 있습니다. Discourse 쪽에서는 토픽 및 게시글 이벤트(생성, 수정, 삭제, 복구)에 대한 웹훅을 사용해 업데이트를 해당 Discord 채널로 전달하고 있습니다. 반대 방향은 discord.js로 만든 봇을 통해 처리하고 있습니다.

웹훅 처리를 깔끔하게 하려다 보니 몇 가지 문제를 겪고 있는데, 주로 토픽과 게시글 웹훅 수신 시점 사이의 경쟁 상태(race condition) 때문입니다.

이 문제를 가장 잘 처리하는 방법에 대한 조언을 듣고 싶습니다. 현재는 토픽 웹훅을 완전히 제거하고 모든 것을 게시글 이벤트 중심으로 처리하는 방안을 고려하고 있습니다(topic_id를 통합 키로 사용). 하지만 처음부터 전부 다시 작성하기보다는, 현재 설정을 잘 동작하게 만드는 방법을 찾는 것이 더 낫다고 생각합니다.

혹시 관련 통찰이나 제안이 있으시면 정말 감사하겠습니다! :folded_hands:

저는 데이터베이스에 해당 주제를 저장하기 전에 값을 가져와서 일부 데이터를 채우기로 결정했습니다.

post 웹훅이 topic 웹훅보다 먼저 도착하는 상황인가요? 비동기적 특성상 실제로 그럴 수 있습니다.

그래서 저는 주제와 게시물 웹훅을 모두 사용하다가, 게시물 웹훅만 사용하고 거기서 제공되는 기능으로 스레드와 주제를 연결하도록 전환했습니다.

좋은 변화입니다. 시스템의 신뢰성이 훨씬 높아질 것이며, 말씀하신 대로 데이터를 보완하기 위해 항상 API 요청을 활용할 수 있습니다.