카프카의 주제(Topic)란 무엇인가요?
_____1. 질문: 카프카에서 ‘주제(Topic)’란 무엇인가요?
답변: 주제는 카프카가 메시지를 분류·저장하고 소비자에게 전달하기 위해 사용하는 논리적 채널입니다. 프로듀서는 특정 주제로 메시지를 전송하고, 컨슈머는 관심 있는 주제를 구독하여 메시지를 읽습니다.
2. 질문: 주제와 파티션(Partition)의 관계는 무엇인가요?
답변:
- 주제는 하나 이상의 파티션으로 구성됩니다.
- 각 파티션은 순서가 있는 메시지 스트림이며, 메시지는 오프셋(Offset)으로 식별됩니다.
- 파티션을 늘리면 처리량과 병렬 처리가 향상되지만 메시지 순서 보장은 파티션 단위로만 유지됩니다.
3. 질문: 오프셋(Offset)이란 무엇이며 왜 중요한가요?
답변:
- 오프셋은 파티션 내 메시지의 인덱스 번호입니다.
- 컨슈머는 마지막으로 처리한 오프셋을 저장하여 재시작 시 그 지점부터 읽기를 계속할 수 있습니다.
- 장애 복구, 재처리 및 순서 보장을 위해 필수적입니다.
4. 질문: 복제(Replication)는 어떻게 동작하나요?
답변:
- 각 파티션은 여러 브로커에 복제본(Replica)으로 저장됩니다.
- 하나의 복제본이 리더(Leader), 나머지는 팔로어(Follower) 역할을 하며, 리더가 클라이언트 요청을 처리합니다.
- 팔로어 복제본은 리더와 동기화되어 고가용성을 제공합니다.
5. 질문: 주제의 데이터 보존(Retention) 정책은 어떻게 설정하나요?
답변:
- 시간 단위(retention.ms) 또는 크기 단위(retention.bytes)로 설정 가능합니다.
- 기본값: 7일간 보관(retention.ms=604800000).
- 설정: 브로커 또는 토픽 레벨에서 개별 조정할 수 있습니다.
6. 질문: 주제 생성 방법은 무엇인가요?
답변:
- 자동 생성(auto.create.topics.enable=true) 또는 수동 생성 도구(kafka-topics.sh --create) 사용.
- 생성 시 지정 항목: 파티션 수(partitions), 복제 팩터(replication-factor), 기타 구성옵션(config).
7. 질문: 주제 구성(Configurable Options) 주요 항목은?
답변:
1) partitions: 병렬 소비·처리를 위한 파티션 수
2) replication-factor: 데이터 안정성을 위한 복제본 수
3) retention.ms/bytes: 보관 기간 및 크기
4) cleanup.policy: delete(기본)/compact(로그 정리 모드)
5) min.insync.replicas: 동기화된 최소 복제본 수(정합성 제어)
8. 질문: 주제 이름 짓기(Best Practices)는 어떻게 해야 하나요?
답변:
- 소문자·숫자·마침표·밑줄만 허용
- 이름 길이 제한(최대 249자) 준수
- 서비스 분리·스키마 변경 관리 용이성 고려
9. 질문: 컨슈머 그룹(Consumer Group)과 주제의 관계는?
답변:
- 하나의 컨슈머 그룹에 속한 여러 인스턴스가 주제 파티션을 분할하여 소비
- 그룹 내 각 파티션은 오직 하나의 컨슈머만 처리(로드 밸런싱)
- 컨슈머 그룹 ID를 달리하면 동일 메시지를 중복 소비할 수 있음
10. 질문: 주제 보안(Security) 설정 방법은?
답변:
- SSL/TLS: 데이터 암호화 및 브로커·클라이언트 인증
- SASL: 사용자 인증(PLAIN, SCRAM, GSSAPI 등)
- ACL(Access Control List): 주제별 Produce/Consume 권한 관리
- 네트워크 레벨 방화벽·VPN과 조합하여 보강
11. 질문: 주제 모니터링 및 메트릭은 어떻게 확인하나요?
답변:
- JMX MBeans: 브로커·토픽·파티션별 지표(ex: BytesInPerSec, LogEndOffset)
- Prometheus+Kafka Exporter: 실시간 시각화 및 알람 설정
- Confluent Control Center, Grafana, Datadog 등 서드파티 툴 활용
12. 질문: 주제 삭제(Deletion) 시 주의사항은?
답변:
- 브로커 설정(delete.topic.enable)을 허용해야 삭제 가능
- 삭제 요청 후 데이터 완전 삭제까지 시간이 소요될 수 있음
- 의도치 않은 삭제 방지를 위해 운영 환경에서는 권한·절차 강화 권장
13. 질문: 주제 관리 시 권장되는 운영(운영 Best Practices)은 무엇인가요?
답변:
- 파티션 수: 초기 설정 시 충분히 고려, 추후 확장 복잡성 감안
- 세분화된 토픽 설계: 서비스별·데이터 유형별로 분리하여 추적성 확보
- 모니터링·알람: 지연(latency), 오프셋 격차(lag), 디스크 사용률 등 점검
- 백업 전략: 주기적 토픽 스냅샷 또는 MirrorMaker 이용 복제
14. 질문: 주제 버전 관리(스키마 진화)는 어떻게 하나요?
답변:
- Avro/Protobuf/JSON Schema 사용 시 스키마 레지스트리 활용
- 호환성 전략(백워드, 포워드, 풀) 설정으로 무중단 배포 지원
- 주제 이름에 버전 태그를 포함하는 방식도 보조 활용 가능
이상으로 카프카 주제(Topic)에 대한 주요 FAQ를 정리했습니다.
카프카는 대량의 데이터를 실시간으로 처리하고 전송하기 위해 설계된 시스템으로, 주제는 이 데이터가 어떻게 조직되고 관리되는지를 결정짓는 핵심 요소입니다.
주제(Topic)의 정의 주제는 카프카에서 메시지를 구분하는 기본 단위로, 특정한 데이터 스트림을 나타냅니다.
예를 들어, "주문", "사용자 활동", "로그"와 같은 주제를 정의할 수 있습니다.
각 주제는 여러 개의 파티션(partition)으로 나뉘어져 있으며, 이는 데이터의 병렬 처리를 가능하게 합니다.
각 파티션은 순서가 보장된 메시지의 로그를 저장하며, 메시지는 파티션 내에서 순차적으로 기록됩니다.
주제의 구조 1. 파티션(Partition) : 각 주제는 하나 이상의 파티션으로 나뉘어 있습니다.
파티션은 메시지를 저장하는 단위로, 각 파티션은 독립적으로 읽고 쓸 수 있습니다.
이 구조는 데이터의 병렬 처리를 가능하게 하여 성능을 향상시킵니다.
2. 오프셋(Offset) : 각 메시지는 파티션 내에서 고유한 오프셋을 가집니다.
오프셋은 메시지가 파티션 내에서의 위치를 나타내며, 소비자는 이 오프셋을 사용하여 특정 메시지를 읽거나 처리할 수 있습니다.
3. 리플리카(Replica) : 카프카는 데이터의 내구성을 보장하기 위해 각 파티션의 복사본을 여러 브로커에 저장합니다.
이를 통해 브로커가 실패하더라도 데이터 손실을 방지할 수 있습니다.
주제의 생성과 관리 주제는 카프카 클러스터에서 동적으로 생성할 수 있으며, 관리자는 주제를 생성할 때 파티션 수와 리플리카 수를 설정할 수 있습니다.
주제를 생성한 후에는 메시지를 생산자(producer)가 주제에 게시하고, 소비자(consumer)가 해당 주제로부터 메시지를 읽을 수 있습니다.
주제의 활용 주제는 다양한 애플리케이션에서 데이터 스트리밍을 구현하는 데 사용됩니다.
예를 들어, 전자상거래 플랫폼에서는 "주문" 주제를 통해 주문 정보를 실시간으로 처리하고, "사용자 활동" 주제를 통해 사용자 행동을 분석할 수 있습니다.
이러한 구조는 데이터의 흐름을 명확하게 하고, 시스템 간의 통신을 효율적으로 만들어 줍니다.
결론 카프카의 주제는 데이터 스트리밍 아키텍처에서 중요한 역할을 하며, 데이터의 조직화, 처리 및 전송을 효율적으로 관리하는 데 필수적입니다.
주제를 통해 카프카는 대량의 데이터를 실시간으로 처리하고, 다양한 애플리케이션 간의 데이터 흐름을 원활하게 할 수 있습니다.
이러한 특성 덕분에 카프카는 현대의 데이터 중심 애플리케이션에서 널리 사용되고 있습니다.
작성자:
박은수 [비회원]
| 작성일자: 1년 전
2024-11-22 08:11:45
조회수: 181 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 181 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.