토픽 이름은 영대소문자와 언더바, 대시, 마침표로 구성할 수 있는데 

이외에 브로커의 버전에 따라 불가능한 이름이 있을 수 있습니다. (마침표 하나, 마침표 2개 등..)

때문에 제약사항을 정확히 알고 싶다면 깃허브에 올라가있는 아파치 카프카 오픈소스를 받아서, 토픽 생성 관련 코드를 확인해보는 것이 좋습니다.

 

[토픽 이름을 어떻게 지정해야 할까?]

 

1) 어떤 개발환경이고, 어떤 데이터 타입이 사용되는지 유추 가능한 토픽 이름이 좋습니다.
토픽에 넣을 수 있는 데이터는 직렬화되어 들어갑니다. 즉, 들어갈 수 있는 데이터 타입이 무한하다고 볼 수 있습니다.

토픽에 들어가는 데이터가 JSON인지 POJO인지에 따라 컨슈머에서 어떻게 역직렬화해서 데이터를 읽을지 정해야 하기 때문에, 토픽에 들어가는 데이터 타입을 명확히 표시하기 위해 토픽 이름에 데이터 타입이 들어가는 것이 좋은 방법일 수 있습니다.

 

2) 만약 회사에서 공용 카프카 클러스터를 사용한다면, 여러 팀이 동시에 토픽을 만들고 사용할 수 있습니다.
이런 경우에 특정 토픽이 어느 서비스에서, 어떤 팀에서 사용되는 것인지 파악이 힘들 수 있는데
그런 경우에는 토픽의 오너십(ownership)을 가진 이름을 토픽 이름에 추가하는 것도 고려할 수 있습니다.

 

3) 카프카 클러스터를 2개 이상 운영(개발 환경, 상용 환경)하는 경우 굳이 동일한 이름의 토픽 이름을 만들기보단, 클러스터의 환경에 따라 토픽 이름을 다르게 넣어서 토픽이 위치한 환경을 명확히 파악하는 것이 좋습니다.

 

[좋은 토픽 이름을 짓는 방법]

 

1) 대소문자를 섞어 쓰지 않는 것이 좋습니다.
  . 휴먼 에러로 실수할 가능성이 높음
  . kafka-console-consumer, kafka-console-producer로  테스트를 위해 cli를 작성할 때 번거로움

2) 마침표(.)와 언더바(_)를 섞어 쓰지 않는 것이 좋습니다.
  . 마침표와 언더바를 섞어쓰면 카프카에서 사용하는 메트릭 이름과 충돌이 일어날 수 있음

3) 카프카 클러스터 운영자는 규칙을 정하고 전파하는 것이 좋습니다.

** 좋은 토픽 이름 예시
  . advertise-sender-notification-prod
  . android-application-sms-prod

  . data-jira1234-dev

+ Recent posts