Transactional Outbox message-relay 개선하기

Transactional Outbox message-relay 개선하기

7
AI 요약

이 글은 AI가 원문을 분석하여 핵심 내용을 요약한 것입니다.

Message Relay Performance Improvement

이 글에서는 리디의 message-relay 시스템에서 메시지 처리 성능 개선을 위한 여러 접근 방식을 소개합니다. 기존 message 테이블에서 JOIN을 제거하고, 메시지 처리 상태를 나타내는 status 컬럼을 추가하여 비동기적으로 삭제하던 방식을 동기적으로 변경하였습니다. 이로 인해 쿼리 성능이 개선되었고, lock wait 문제도 해결되었습니다.

Lock 관리 개선

MySQL의 NOWAIT 기능을 활용하여 두 개의 message-relay 노드 간의 lock wait 현상을 방지하고, Redis pessimistic lock을 제거하여 관리의 편리함을 높였습니다.

쿼리 성능 최적화

LIMIT을 적용하여 index range scan을 유도함으로써 lock 설정 시 발생할 수 있는 latency를 감소시켰습니다. 최종적으로 개선된 코드는 모니터링을 통해 안정적인 성능을 보여주었습니다.