TL;DR
- https://cnr.sh/essays/how-paint-bike-shed-kafka-topic-naming-conventions 을 참고한 글입니다.
- [namespace]-[application name]-[topic type]-[version numbers] 조합을 추천합니다.
개요
카프카 클러스터를 운영하다보면 수많은 토픽을 생성하게 된다.
토픽 이름은 변경할 수 없기 때문에 카프카 도입을 고려하고 있다면 Naming Convention에 대한 고민을 먼저 해보는 것이 좋다.
주의
1. 토픽 이름은 한번 지정하면 바꿀 수 없다
토픽 이름은 변경 불가능한 값이다. 즉 한번 컨벤션을 정하면 수정하기 어렵다.
카프카를 운영하면서 다양한 케이스의 토픽을 생성하게 될 것임으로 최대한 범용적인 이름을 짓는 것이 중요하다.
2. 토픽 이름으로 허용되는 문자
토픽은 아래 문자만 토픽 이름으로 허용한다
- Valid characters for Kafka topics are the ASCII
- 영어
- 숫자
- 마침표(‘.’)
- 밑줄(‘_’)
- 하이픈(‘-’)
<root name space>.<product>.<product specific hierarchy>
<app type>.<app name>.<dataset name>.<stage of processing>
<app type>.<dataset name>.<data>
3. 케이스 충돌 ‘.’ 과 ‘_’
마침표(.)와 밑줄(_)은 서로 충돌한다.
고려
1. 표기법 통일
TopicName
TopicName
topicName
topicname
topic-name
topic_name
당연한 말이지만 snake_case, cameCase 어떤 표기법을 쓸지 고민하고 통일하는 것이 좋다.
2. 의미있는 이름이 되도록 짓자
- 설명이 포함된 이름 사용
- 주제의 내용을 명확하게 설명하는 이름을 선택하십시오.
- 주제 이름 길지 않게 유지
- 너무 긴 주제 이름을 사용하면 읽기 어려울 수 있다.
3. 아래 필드 조합을 고려해보자
필드 설명
Product | 주제와 관련된 제품의 이름 |
Schema name | 주제에 있는 메시지의 스키마 이름입니다. 일반적으로 Avro 스키마 이름에 해당 |
Namespace | org.foo.bar와 같은 것. 일반적으로 스키마 이름과 함께 사용 |
Topic Type | 주제가 사용되는 대상. |
예: ETL, queuing, tracking, user, data push, streaming, etc. | |
Application name | 메시지를 생성하는 애플리케이션 또는 서비스의 이름 |
Data name | 테이터베이스 테이블과 유사 |
Dataset name | 이름 주제 모음의 데이터를 포함하는 이름입니다. 데이터베이스 이름과 유사 |
Processing stage | 처리 파이프라인의 단계입니다. 스트림 처리에 특히 유용합니다. |
예: filtered, partitioned, joined, etc. | |
Public/Private | 주제가 내부 구현 세부 정보인지 여부를 나타냅니다(예: Kafka의 __consumer_offsets 주제) |
Security | 주제에 AuthN/AuthZ가 활성화되어 있는지 여부 |
Consumer name | 주제에서 데이터를 사용하기 위한 이용자의 이름 |
Partition key | 항목이 분할되는 필드 이름 |
Partition counts | 주제에 대한 파티션 수 |
Version numbers | 이전 버전과 호환되지 않는 변경이 이루어지거나 데이터 마이그레이션이 발생하는 경우와 같이 항목의 새 버전을 나타내기 위해 증가할 수 있는 숫 |
Owner/team name | 주제를 담당하는 소유자 또는 팀의 이름 |
4. 스키마를 따로 관리하면 필드 타입은 이름으로 사용하지 마라
5. 컨슈머 프로슈머와 연결하지 마라
- 컨슈머와 프로슈머는 언제든지 바꾸리 수 있다.
제안
- [namespace]-[application name]-[topic type]-[version numbers]
- servicea-filebeat-logging-0
auto.create.topics.enable 을 비활성화하자
이 설정이 활성화 되어 있으면 네이밍 컨벤션이 깨질 우려가 있다. 이 설정을 비활성화하자.
참고자료
https://cnr.sh/essays/how-paint-bike-shed-kafka-topic-naming-conventions
'DataOps > Kafka' 카테고리의 다른 글
[if(kakao)2022] 카프카, 대규모 클러스터 운영 후기 정리 (0) | 2023.09.29 |
---|---|
[카프카] Rebalancing (0) | 2023.09.06 |
[Kafka] UI Tools 분석글 공유 (0) | 2023.03.13 |
[Kafka] 카프카란? (0) | 2023.03.10 |
[KSR] 카프라 스키마 레지스트리(Kafka Schema Registry) 란? (0) | 2023.03.09 |
댓글