올리브영, Kafka 메시지 중복/유실 문제 해결 노하우 공개!
by DD
1년 전
조회수 12
올리브영 OMS 프로젝트에서 Kafka를 활용하여 물류 시스템을 전면 개편함
Producer/Consumer 간 통신 문제로 인한 메시지 중복/유실 케이스 분석
acks=all, enable.idempotence=true 설정 및 CooperativeSticky 전략으로 안정성 확보
Kafka 메시지 전송 과정 심층 분석
Producer와 Broker 간, Consumer와 Broker 간 통신 과정에서 메시지 유실 및 중복이 발생한다. acks=all 설정과 enable.idempotence=true 옵션을 통해 메시지 중복을 방지한다. 따라서, 안정적인 메시지 처리를 위해 세심한 설정이 필요하다.
Exactly-once 보장을 위한 설정 비교
Kafka의 Exactly-once 보장은 설정 난이도가 높지만, At least once 방식보다 높은 안정성을 제공한다. acks=all 설정은 메시지 유실을 막고, Consumer의 AcksMode 설정을 통해 중복 Consume을 방지한다. 반면, CooperativeSticky 전략은 파티션 재할당 문제를 해결한다.
DLQ 자동 백업 시스템 구축
DLQ(Dead Letter Queue)를 활용하여 오류 데이터를 관리하고, AWS Kinesis Data Firehose를 통해 S3로 자동 백업한다. 구체적으로, Lambda 함수를 사용하여 Xlsx 파일로 변환하여 관리한다. 따라서, 데이터 유실 방지 및 오류 분석에 효과적이다.