패스잇
백엔드 개발 · 심화

Kafka에서 End-to-End Exactly-Once Semantics를 보장하기 위한 프로듀서, 브로커, 컨슈머 측면에서의 접근 방식과 각 구성 요소의 역할을 설명하고, 이 과정에서 발생할 수 있는 잠재적 이슈와 해결 방안을 논하시오.

힌트 · 멱등성 프로듀서, 트랜잭션 프로듀서, 컨슈머의 오프셋 커밋 전략이 중요하며, 외부 시스템과의 통합 시 데이터 중복 및 유실을 방지해야 합니다.

멱등성 프로듀서트랜잭션컨슈머 오프셋 커밋2PC (Two-Phase Commit)데드락

모범답안

Kafka에서 End-to-End Exactly-Once Semantics를 달성하기 위해 프로듀서, 브로커, 컨슈머 각 단계별로 접근해야 합니다.

프로듀서 측면에서는 멱등성 프로듀서(Idempotent Producer)를 사용하여 동일한 메시지가 여러 번 전송되어도 브로커에서 중복 처리되지 않도록 합니다. 더 나아가 트랜잭션 프로듀서(Transactional Producer)를 사용하면 여러 토픽 또는 파티션에 걸쳐 원자적인 메시지 전송을 보장할 수 있습니다.

브로커는 프로듀서로부터 받은 메시지를 복제하고 내구성을 보장합니다. 트랜잭션 프로듀서의 경우, 브로커는 트랜잭션 상태를 관리하고 커밋 또는 롤백을 처리합니다.

컨슈머 측면에서는 메시지를 처리한 후 오프셋을 커밋하는 전략이 중요합니다. 메시지 처리와 오프셋 커밋을 원자적으로 묶기 위해 Kafka의 트랜잭션 API를 활용하거나, 외부 시스템과 연동 시 2PC(Two-Phase Commit)와 유사한 패턴을 적용하여 데이터 중복 및 유실을 방지합니다.

잠재적 이슈로는 네트워크 장애나 브로커 재시작 시 발생할 수 있는 데이터 불일치, 그리고 트랜잭션 프로토콜에서 발생할 수 있는 데드락 등이 있습니다. 이를 해결하기 위해 프로듀서의 재시도 로직 강화, 브로커의 트랜잭션 타임아웃 설정, 그리고 컨슈머의 적절한 오프셋 관리 전략이 필요합니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 메시지 큐 (Kafka) 면접 질문

← 메시지 큐 (Kafka) 면접 질문 전체 보기