백엔드 개발 · 중급
Kafka가 메시지의 내구성(Durability)을 보장하기 위해 사용하는 메커니즘들을 설명해 주세요.
힌트 · Kafka는 토픽 파티션의 복제(Replication)와 ISR(In-Sync Replicas)을 통해 메시지 내구성을 확보합니다. 프로듀서의 ACK 설정도 메시지 내구성에 영향을 미칩니다.
복제(Replication)ACKs최소 ISR 크기(min.insync.replicas)로그 세그먼트(Log Segments)Flush
모범답안
Kafka는 메시지의 내구성을 보장하기 위해 여러 메커니즘을 사용합니다.
가장 중요한 것은 **복제(Replication)**입니다. 각 토픽 파티션은 여러 브로커에 복제되어 저장됩니다. 이렇게 하면 하나의 브로커에 장애가 발생하더라도 다른 복제본에서 데이터를 가져올 수 있습니다.
두 번째는 ACKs 설정입니다. 프로듀서는 메시지를 브로커에 보내고 응답을 기다립니다. ACK 설정을 통해 얼마나 많은 브로커가 메시지를 받았는지 확인하고, 메시지 손실을 방지할 수 있습니다. acks=all 설정을 사용하면 모든 ISR(In-Sync Replicas)이 메시지를 받았을 때만 성공으로 간주됩니다.
세 번째는 최소 ISR 크기(min.insync.replicas) 설정입니다. 이 설정을 통해 데이터 손실 없이 메시지를 처리할 수 있는 최소한의 복제본 수를 지정할 수 있습니다.
마지막으로, Kafka는 메시지를 디스크에 순차적으로 기록하는 **로그 세그먼트(Log Segments)**를 사용하고, 주기적으로 디스크에 Flush하여 데이터 손실을 최소화합니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 메시지 큐 (Kafka) 면접 질문
- Kafka에서 토픽을 여러 파티션으로 나누는 주된 이유와 이로 인해 얻을 수 있는 이점을 설명해 주세요.
- Kafka의 Consumer Group이 무엇이며, 이를 통해 메시지 소비의 확장성과 고가용성을 어떻게 확보하는지 설명해 주세요.
- Kafka 컨슈머가 메시지를 어디까지 읽었는지 추적하는 오프셋(Offset)은 무엇이며, 컨슈머 그룹 내에서 오프셋이 어떻게 관리되는지 설명해 주세요.
- Kafka의 ISR(In-Sync Replicas) 개념은 무엇이며, 이것이 데이터 손실 방지 및 고가용성 유지에 어떻게 기여하는지 설명해 주세요.
- Kafka 프로듀서가 메시지를 브로커로 전송할 때 발생할 수 있는 At-Most-Once, At-Least-Once, Exactly-Once 딜리버리 시맨틱스 각각의 특징과 구현 방법을 설명해 주세요.
- Kafka의 로그 컴팩션(Log Compaction)은 무엇이며, 어떤 경우에 유용하게 사용될 수 있는지 구체적인 예시와 함께 설명해 주세요.