Moait
홈인기 피드모든 블로그모든 태그
홈인기 피드모든 블로그모든 태그
Transactional Outbox 패턴으로 메시지 발행 보장하기 섬네일

Transactional Outbox 패턴으로 메시지 발행 보장하기

RIDI faviconRIDI·Architecture·
RedisMySQLKafkaDebeziumTransactional Outbox
2024년 01월 17일6

AI 요약

이 글은 AI가 요약했어요. 정확한 내용은 꼭 원문을 확인해 주세요!

핵심 요약

RIDI가 Transactional Outbox 패턴을 도입해 메시지 발행의 신뢰성을 확보하고, Polling Publisher 방식의 Message Relay를 구현했습니다.

구현 방법

  • Transactional Outbox 패턴 도입으로 DB 트랜잭션과 메시지 발행의 원자성 보장
  • Polling Publisher 방식으로 Outbox 메시지를 주기적으로 수집하는 Message Relay 구현
  • Outbox 테이블 구성: message와 처리 이력을 위한 processed_message 도입
  • LEFT JOIN 기반 조회, Redis 락으로 단일 프로세스에서만 publish 시도
  • Kafka 프로듀서/발행 인터페이스 구성 및 실패 시 Dead Letter/스킵 처리
  • 삭제 정책: processed_message에 저장 후 일정 간격으로 오래된 메시지 삭제(MAX_ID_MARGIN_TO_DELETE)
  • Datadog으로 모니터링: 처리량, 지연, 쿼리 지표 및 Slack 경고

주요 결과

  • DB 트랜잭션과 메시지 발행의 원자성 확보 및 신뢰성 향상
  • 락 대기 및 지연 감소 및 운영 안정성 강화
  • 다중 노드 운영 시 중복 처리 최소화
  • 실패 대응 체계(DLQ/스킵) 도입으로 운영성 개선

연관 피드

%가 높을수록 이 글과 비슷할 가능성이 높아요!
Transactional Outbox message relay 개선하기 섬네일
86%

Transactional Outbox message relay 개선하기

RIDI faviconRIDI·2024년 11월 06일
리디에서 Kafka를 사용하는 법 섬네일
76%

리디에서 Kafka를 사용하는 법

RIDI faviconRIDI·2023년 01월 17일
쿠폰 발급 RabbitMQ도입기 섬네일
71%

쿠폰 발급 RabbitMQ도입기

올리브영 favicon올리브영·2023년 09월 18일