올리브영, Kafka 메시지 중복/유실 문제 해결 노하우 공개!

by DD
1년 전
조회수 12

올리브영 OMS 프로젝트에서 Kafka를 활용하여 물류 시스템을 전면 개편함

Producer/Consumer 간 통신 문제로 인한 메시지 중복/유실 케이스 분석

acks=all, enable.idempotence=true 설정 및 CooperativeSticky 전략으로 안정성 확보

Kafka 메시지 전송 과정 심층 분석

ProducerBroker 간, ConsumerBroker 간 통신 과정에서 메시지 유실 및 중복이 발생한다. acks=all 설정과 enable.idempotence=true 옵션을 통해 메시지 중복을 방지한다. 따라서, 안정적인 메시지 처리를 위해 세심한 설정이 필요하다.

Exactly-once 보장을 위한 설정 비교

Kafka의 Exactly-once 보장은 설정 난이도가 높지만, At least once 방식보다 높은 안정성을 제공한다. acks=all 설정은 메시지 유실을 막고, ConsumerAcksMode 설정을 통해 중복 Consume을 방지한다. 반면, CooperativeSticky 전략은 파티션 재할당 문제를 해결한다.

DLQ 자동 백업 시스템 구축

DLQ(Dead Letter Queue)를 활용하여 오류 데이터를 관리하고, AWS Kinesis Data Firehose를 통해 S3로 자동 백업한다. 구체적으로, Lambda 함수를 사용하여 Xlsx 파일로 변환하여 관리한다. 따라서, 데이터 유실 방지오류 분석에 효과적이다.

Kafka 메시지 중복 및 유실 케이스별 해결 방법