데이터 엔지니어 기술 블로그

[🧙Kafka] 카프카 토픽 이름 짓는 법(Topic Naming Convention) 본문

데이터 엔지니어링

[🧙Kafka] 카프카 토픽 이름 짓는 법(Topic Naming Convention)

jun_yeong_park 2021. 7. 11. 18:45
반응형

개요

카프카에서는 토픽을 많이 생성해서 사용하는데 Naming Convention 없이 사용하게 된다면 나중에 복잡해질수도 있기 때문에 알아보려고 한다.

 

Convention

카프카에서 토픽을 생성할 때 유효한 문자는 [영문, 숫자, '.', '_', '-']만 사용할 수 있다. 그리고 유의할 점은 마침표(.)와 밑줄(_)은 충돌할 수 있기 때문에 둘 중 하나만 사용하는 것이 좋다.

 

선택할 수 있는 예시들은 다음과 같다.

  • <namespace>.<product>.<event-type>
  • <application>-<data-type>-<event-type>
  • <organization>.<application-name>.<event-type>.<event>
  • <message type>.<dataset name>.<data name>
  • <root name space>.<product>.<product specific hierarchy>
  • <app type>.<app name>.<dataset name>.<stage of processing>
  • <app type>.<dataset name>.<data>

 

<message type>.<dataset name>.<data name>

이 게시물을 작성한 사람은 이 데이터 타입으로 성공했다고 한다. 이 방식으로 사용하면 인프라가 어느정도 커져도 커버할 수 있을 것으로 예상된다.

 

 

message type

  • logging
  • queuing
  • tracking
  • etl/db
  • streaming
  • push
  • user
  • ...

 

dataset name

RDMBS의 데이터베이스 이름이라고 생각한다.

 

data name

RDMBS의 테이블 이름이라고 생각한다.

 

case

위 메세지 타입을 고안한 사람의 블로그에서는 snake_case를 사용하면 좋다고 하지만 마침표(.)와 밑줄(_)이 충돌하기 때문에 snake_case는 사용할 수 없을 것 같고 kebab-case를 사용하는 것이 깔끔하게 보일 것 같다.

kebab

 

 

사용하면 안되는 이름

시간이 지남에 따라 변경되는 이름은 사용하지 않는 것이 좋다. 팀 이름이나 제품 이름 등 변경될 수 있는 것을 이름으로 사용하면 토픽의 이름을 변경할 수 없기 때문에 문제가 된다.

소비자와 생산자와 관련된 이름도 시간이 지남에 따라 변경될 수 있기 때문에 사용하지 않는 것이 좋다.

 

auto.create.topics.enable=false

토픽을 자동으로 생성할 수 없게 하고 관리하면 컨벤션을 지키는데에 도움이 된다.

 

 

 

 

반응형
Comments