kafka Topic을 채팅방 구분 용으로 사용할 수 있을까?

haaaalin·2022년 12월 29일
0

(아직 kafka를 공부 중에 있으므로 틀린 내용이 있을 수도 있다.)

spring boot + kafka를 이용해 채팅 기능을 구현하려던 찰나, 의문이 들었다.

과연 kafka topic 하나로만 채팅을 구현해도 괜찮은 것일까?

만약 채팅방이 여러 개 생기고, 많은 채팅이 오고가게 되면, 하나의 topic에 정말 많은 채팅 메시지 데이터들이 쌓이게 될텐데, 이걸 분산시키지 않아도 되나? 에서 시작된 고민이다.

https://stackoverflow.com/questions/72731155/kafka-topics-as-chatroom-identifiers

위 링크를 들어가보면 나랑 비슷한 고민을 한 사람이 있었다.

하지만 이 답변에는 “그래도 된다.” 이긴 했지만 항상 “하지만”이 따르는 법 ..

채팅방마다 kafka의 topic을 생성해 관리하는 것은 consumer 관점에서는 좋지 않은 디자인이라고 한다.

💡 kafka는 엄청 많은 topic을 생성할 수 있을까?
→ 가능하다
https://stackoverflow.com/questions/32950503/can-i-have-100s-of-thousands-of-topics-in-a-kafka-cluster

결론

결론적으로는 어차피 실제 데이터베이스에 채팅 메시지를 저장하는 것이 더 효율적이라고 한다.

채팅이 로드 될때는 어차피 kafka topic이 아닌 데이터베이스 쿼리를 이용해 로드하는 것.

CQRS 패턴을 참조하란다.

profile
한 걸음 한 걸음 쌓아가자😎

0개의 댓글