순서대로, 한 번만, 빠르게
요약
Airbridge는 이벤트 처리에 필요한 순서 보장 및 유실/중복 방지 문제를 해결하기 위해 Project Differential을 설계했습니다. 기존의 마이크로 배치 방식이 가진 처리 속도 정체 문제를 개선하여, Kafka 파티션 단위에서 독립적인 Consumer Chain을 구성하고 안전거리 제어 메커니즘을 도입했습니다.
핵심 포인트
- 마이크로 배치를 제거하고 Topic 전체를 독립적으로 읽음.
- 파티션 단위 순서 보장 및 안전거리(offset/event time) 제어를 구현함.
- 기존 대비 10배 이상의 처리 속도 향상을 달성한 사례임.
- 전역 순서 대신 비즈니스 필수 순서를 best effort로 확보하여 처리량을 높임.
-
Airbridge는 광고 클릭·설치·구매 같은 이벤트를 실시간으로 매칭하므로, 이벤트를 빠르게 처리하는 것뿐 아니라 필요한 순서로 처리하고 유실·중복을 막는 일이 중요함.
-
기존에는 Kafka 메시지를 마이크로 배치로 가져와 이벤트 종류별로 순차 처리함.
-
순서는 제어하기 쉬웠지만, 앞선 이벤트 처리를 기다리는 동안 다른 워커가 유휴 상태가 됨.
-
워커별 처리 속도 차이와 hot partition이 겹치면, 서버를 증설해도 처리 속도가 정체됨.
-
이를 해결하기 위해
Project Differential을 설계함. -
마이크로 배치를 없애고, 이벤트 종류별
Consumer
가 같은 Kafka topic을 독립적으로 읽음.
-
순서 보장은 topic 전체가 아닌 partition 단위로 수행하며, 순서가 중요한 동일 사용자 흐름의 이벤트가 가능한 한 같은 partition에 들어가도록 구성함.
-
뒤따르는 Consumer는 앞선 Consumer의 처리 위치를 추월할 수 없으며, offset 또는 event time 기준의 안전거리를 둠.
-
앞선 Consumer가 처리하지 않는 메시지는 다음 Consumer에게 넘겨 재사용하고, 버퍼가 가득 차면 Kafka를 직접 읽는 Polling Mode로 전환함.
-
내부적으로는 partition별
ConsumerSuite
/PartitionedConsumerChain
을 두고, LimitedEventProcessor
가 앞선 Consumer의 checkpoint를 넘지 않도록 제어함.
CommitManager
는 버퍼링·비동기 처리 중에도 실제 완료된 연속 offset만 Kafka에 commit하도록 관리함.
- 테스트 운영에서 이벤트 유실·중복 없이 동작하는 것을 확인했고, 기존 마이크로 배치 방식 대비
10배 이상 처리 속도가 향상됨. - 완전한 전역 순서를 만드는 대신, 실제 비즈니스에 필요한 순서를 best effort로 지키며 처리량을 확보한 사례임.
- 향후에는 구조 단순화, Spot Instance 종료 상황에 대응하는 adaptive flow control, 순차 처리 자체를 줄이는 아키텍처 개선을 검토 중임.
댓글과 토론
AI 자동 생성 콘텐츠
본 콘텐츠는 GeekNews의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기