백엔드 개발 · 심화
수백 개의 토픽과 수천 개의 파티션을 가진 대규모 Kafka 클러스터에서 안정적인 성능을 유지하기 위한 브로커, 프로듀서, 컨슈머 각 계층에서의 주요 튜닝 파라미터와 그 효과에 대해 설명하시오. 특히 네트워크, 디스크 I/O 관점에서 최적화 방안을 포함하시오.
힌트 · `num.io.threads`, `num.network.threads`, `replica.fetch.max.bytes`, `batch.size`, `linger.ms`, OS 캐시 사용 등 다양한 파라미터를 고려해야 합니다.
replication factorackscompression.typenum.io.threadssocket.send.buffer.bytes
모범답안
대규모 Kafka 클러스터에서 안정적인 성능을 유지하기 위해 브로커, 프로듀서, 컨슈머 각 계층별 튜닝이 중요합니다.
브로커에서는 num.io.threads와 num.network.threads를 늘려 디스크 I/O 및 네트워크 처리량을 높입니다. replica.fetch.max.bytes를 조정하여 복제 효율성을 개선하고, OS 캐시를 적극 활용하여 디스크 접근을 최소화하는 것이 좋습니다.
프로듀서에서는 batch.size와 linger.ms를 적절히 설정하여 배치 처리 효율을 높이고 네트워크 요청 수를 줄입니다. compression.type을 활용하여 전송 데이터 크기를 줄이는 것도 네트워크 부하 감소에 효과적입니다.
컨슈머에서는 fetch.min.bytes와 fetch.max.wait.ms를 조정하여 효율적인 데이터 소비를 유도합니다. 또한, max.poll.records를 통해 한 번에 처리하는 레코드 수를 조절하여 컨슈머의 처리 능력에 맞게 부하를 분산시키는 것이 중요합니다. acks 설정을 통해 데이터 내구성과 처리량 간의 균형을 맞추는 것도 고려해야 합니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 메시지 큐 (Kafka) 면접 질문
- 대용량 실시간 데이터 처리 시 Kafka Streams 애플리케이션의 상태 저장(stateful processing) 전략과 장애 복구(fault tolerance) 방안에 대해 설명하고, RocksDB와 같은 상태 저장소의 성능 최적화 기법을 포함하여 설계 방안을 제시하시오.
- Kafka에서 End-to-End Exactly-Once Semantics를 보장하기 위한 프로듀서, 브로커, 컨슈머 측면에서의 접근 방식과 각 구성 요소의 역할을 설명하고, 이 과정에서 발생할 수 있는 잠재적 이슈와 해결 방안을 논하시오.
- Kafka Connect 클러스터를 프로덕션 환경에서 고가용성(High Availability) 및 확장성(Scalability)을 보장하도록 설계하고 운영하기 위한 방안을 설명하시오. 특히 Source/Sink 커넥터의 장애 발생 시 데이터 유실 없이 복구하는 전략에 대해 구체적으로 제시하시오.
- Kafka 클러스터에 대한 End-to-End 보안(인증, 인가, 암호화)을 구현하기 위한 아키텍처를 설계하고, 각 보안 요소(SSL/TLS, SASL, ACL)의 역할과 설정 방법을 설명하시오. 또한, 보안 적용 시 성능에 미치는 영향과 최적화 방안을 논하시오.
- 두 개 이상의 데이터센터에 걸쳐 Kafka 클러스터를 운영할 때 재해 복구(Disaster Recovery, DR) 전략을 수립하는 방안에 대해 설명하시오. 특히 MirrorMaker 2.0 또는 Confluent Replicator를 활용한 액티브-패시브(Active-Passive) 또는 액티브-액티브(Active-Active) 구성 시 고려해야 할 사항과 데이터 일관성 유지 방안을 포함하시오.
- 대규모 컨슈머 그룹에서 잦은 리밸런싱(rebalancing)이 발생할 경우 서비스에 미치는 영향과 이를 최소화하기 위한 전략을 설명하시오. 특히 `max.poll.interval.ms`, `session.timeout.ms`, `heartbeat.interval.ms` 등의 파라미터와 컨슈머 애플리케이션 로직 관점에서의 최적화 방안을 제시하시오.