Kafka에서 End-to-End Exactly-Once Semantics를 보장하기 위한 프로듀서, 브로커, 컨슈머 측면에서의 접근 방식과 각 구성 요소의 역할을 설명하고, 이 과정에서 발생할 수 있는 잠재적 이슈와 해결 방안을 논하시오.
힌트 · 멱등성 프로듀서, 트랜잭션 프로듀서, 컨슈머의 오프셋 커밋 전략이 중요하며, 외부 시스템과의 통합 시 데이터 중복 및 유실을 방지해야 합니다.
모범답안
Kafka에서 End-to-End Exactly-Once Semantics를 달성하기 위해 프로듀서, 브로커, 컨슈머 각 단계별로 접근해야 합니다.
프로듀서 측면에서는 멱등성 프로듀서(Idempotent Producer)를 사용하여 동일한 메시지가 여러 번 전송되어도 브로커에서 중복 처리되지 않도록 합니다. 더 나아가 트랜잭션 프로듀서(Transactional Producer)를 사용하면 여러 토픽 또는 파티션에 걸쳐 원자적인 메시지 전송을 보장할 수 있습니다.
브로커는 프로듀서로부터 받은 메시지를 복제하고 내구성을 보장합니다. 트랜잭션 프로듀서의 경우, 브로커는 트랜잭션 상태를 관리하고 커밋 또는 롤백을 처리합니다.
컨슈머 측면에서는 메시지를 처리한 후 오프셋을 커밋하는 전략이 중요합니다. 메시지 처리와 오프셋 커밋을 원자적으로 묶기 위해 Kafka의 트랜잭션 API를 활용하거나, 외부 시스템과 연동 시 2PC(Two-Phase Commit)와 유사한 패턴을 적용하여 데이터 중복 및 유실을 방지합니다.
잠재적 이슈로는 네트워크 장애나 브로커 재시작 시 발생할 수 있는 데이터 불일치, 그리고 트랜잭션 프로토콜에서 발생할 수 있는 데드락 등이 있습니다. 이를 해결하기 위해 프로듀서의 재시도 로직 강화, 브로커의 트랜잭션 타임아웃 설정, 그리고 컨슈머의 적절한 오프셋 관리 전략이 필요합니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 메시지 큐 (Kafka) 면접 질문
- Kafka 프로듀서가 메시지를 브로커로 전송할 때 발생할 수 있는 At-Most-Once, At-Least-Once, Exactly-Once 딜리버리 시맨틱스 각각의 특징과 구현 방법을 설명해 주세요.
- Kafka의 로그 컴팩션(Log Compaction)은 무엇이며, 어떤 경우에 유용하게 사용될 수 있는지 구체적인 예시와 함께 설명해 주세요.
- 대용량 실시간 데이터 처리 시 Kafka Streams 애플리케이션의 상태 저장(stateful processing) 전략과 장애 복구(fault tolerance) 방안에 대해 설명하고, RocksDB와 같은 상태 저장소의 성능 최적화 기법을 포함하여 설계 방안을 제시하시오.
- Kafka Connect 클러스터를 프로덕션 환경에서 고가용성(High Availability) 및 확장성(Scalability)을 보장하도록 설계하고 운영하기 위한 방안을 설명하시오. 특히 Source/Sink 커넥터의 장애 발생 시 데이터 유실 없이 복구하는 전략에 대해 구체적으로 제시하시오.
- 수백 개의 토픽과 수천 개의 파티션을 가진 대규모 Kafka 클러스터에서 안정적인 성능을 유지하기 위한 브로커, 프로듀서, 컨슈머 각 계층에서의 주요 튜닝 파라미터와 그 효과에 대해 설명하시오. 특히 네트워크, 디스크 I/O 관점에서 최적화 방안을 포함하시오.
- Kafka 클러스터에 대한 End-to-End 보안(인증, 인가, 암호화)을 구현하기 위한 아키텍처를 설계하고, 각 보안 요소(SSL/TLS, SASL, ACL)의 역할과 설정 방법을 설명하시오. 또한, 보안 적용 시 성능에 미치는 영향과 최적화 방안을 논하시오.