반응형
1. Kafka Connect는 Spring Kafka로 직접 구현한 Consumer보다 뭐가 더 좋은가?
그냥 JDBC로 읽고 KafkaTemplate으로 전송하면 되는데, Kafka Connect를 왜 써야 하지?
Kafka Connect의 핵심은 운영 편의성과 Pluggability이다.
직접 구현한 Producer/Consumer는:
- 장애 발생 시 재처리 로직, offset 저장, 실패 전파, 재시작 등 모든 책임이 애플리케이션에 있음
- 운영자는 해당 서비스를 배포하고, 장애 시 디버깅과 로깅을 파고들어야 함
반면, Kafka Connect는 다음과 같은 특성을 가진다:
| 항목 | Kafka Connect | 직접 구현 |
| offset 저장 | Kafka 내부 토픽 (__consumer_offsets) | 보통 DB or Kafka 자체에 수동 커밋 |
| 리스타트/장애 복구 | Worker 재시작으로 자동 복구 | 어플리케이션 재기동 or 별도 로직 필요 |
| 구성 변경 | REST API로 Connector 설정 변경 | 코드 수정 + 배포 |
| 재사용성 | JDBC, Debezium, S3 등 이미 만들어진 connecter 수백 개 | 직접 개발해야 함 |
2. Kafka Connect 쓰면 장애났을 때 어떻게 재처리하는가?
Connector가 중간에 죽으면 실패한 레코드는 어떻게 되나?
Kafka Connect는 기본적으로 레코드 단위의 at-least-once 처리를 보장한다.
그리고 각 Connector는 자체적으로 offset을 커밋하고, 실패하면 재시도 -> 실패 -> DLQ 흐름을 따른다.

Kafka Connect에서 errors.deadletterqueue.topic.name 옵션을 설정하면, 실패한 레코드를 Kafka 토픽으로 보내고, 수동으로 확인 및 재처리할 수 있다.
3. MirrorMaker 2.0이면 클러스터 간 동기화는 완벽하게 되는건가?
그럼 A 클러스터 -> B 클러스터로 완전하게 미러링되고 offsest도 동기화되나?
거의 대부분의 메시지는 미러링되지만, 다음과 같은 caveat가 있다:
| 이슈 | 설명 |
| Offset translation | MM2는 offset을 따로 저장해서 원본 offset과 일치하지 않음. Consumer가 A의 offset으로 정확히 복원되지 않음. |
| Loop 방지 필요 | 양방향 미러링할 경우 A->B->A로 메시지가 순환될 수 있음. Topic 필터링 필요 |
| Config/ACL은 기본 미러링 안 됨 | topic metadata, schema, ACL 등은 직접 동기화해야 함 |
4. 요즘은 MirrorMaker 대신 뭘 써?
Confluent에서는 Cluster Linking도 있고, Kafka 자체에도 diskless 나온다는데?
Cluster Linking (Confluent 전용)은 MM2보다 훨씬 강력한 미러링 기능을 제공한다:
- offset 유지, 동일한 topic name 유지, 정확한 시간 기반 리플레이
- config / ACL / topic structure까지 복제
- 단점은 Confluent Enterprise 라이선스 필요
Kafka 4.x의 diskless + tiered storage 구조와 맞물리면:
- 로그를 직접 복제하지 않고
- remote storage를 공유하거나, CDC 수준의 동기화로 분리
이런 구조에서 MM2보다 전사적인 운영 비용이 훨씬 낮아질 수 있다.
5. Kafka를 log 시스템으로 쓸 때 Connect랑 Mirror는 진짜 필요할까?
그냥 Filebeat -> Kafka -> ClickHouse 이런 구조면 되지 않나?
당장은 필요 없을 수도 있다.
하지만 다음과 같은 요구가 생기면 Kafka Connect/Mirror를 고려하게 된다:
- Kafka로 적재된 로그를 정기적으로 S3로 내리고 싶다 -> Connect Sink + HDFS/S3 connector
- 로그 분석용으로 Region B 클러스터로도 동일하게 가져가야 한다 -> MirrorMaker or Cluster Linking
- Kafka 내부 파티션 재정렬 없이 다른 클러스터에서 복제하고 싶다 -> MM2 with offset.sync.enabled
반응형
'독서' 카테고리의 다른 글
| [카프카 핵심 가이드] Ch 13, Ch 14 (0) | 2025.09.07 |
|---|---|
| [카프카 핵심 가이드] Ch 11, Ch 12 (1) | 2025.08.31 |
| [카프카 핵심 가이드] Ch 05, Ch 06 (3) | 2025.08.10 |
| [카프카 핵심 가이드] Ch 04 (3) | 2025.08.03 |
| [카프카 핵심 가이드] Ch 03 (2) | 2025.07.27 |