Skip to content

[채팅] 나중을 위한 Kafka

Gayeong Park edited this page Aug 4, 2023 · 3 revisions

현재 서비스에 Kafka가 무의미한 이유

SWS 기간동안 Kafka를 포함한 서비스를 구축하려고 하니 사실상 Kafka를 제대로 활용하지 못했다.

왜냐하면 Kafka의 pub/sub 구조를 백분 활용하려면

  1. 여러개의 Springboot를 돌려 Kafka에서 설정한 partition만큼 멀티서버를 구축하거나
  2. kafka용 thread를 늘리거나
  3. 채팅 서버를 분리하여 MSA스럽게 구축하는 방법

들이 있는 것 같은데 변명을 해보자면 Kafka 환경 구성을 하는 것부터 우여곡절이 많았고, Kafka를 제외하고도 처음 도입해보는 Websocket과 Stomp, MongoDB들이 생소하여 이들을 이해하고 세팅하는 데에 시간을 많이 투자했다. (특히 Websocket을 프론트와 연동하는 과정에서 우여곡절이 많았다.)

BagEasy 서비스의 다른 기능을 구현하는 데에 SWS 기간을 많이 소비하였고, 마감을 생각하면 멀티서버나 MSA는 솔직히 무리였다. 따라서 현재 단일 Springboot 서버를 사용하는 우리 서비스에 Kafka는 사실상 빛좋은 개살구다.

그럼 왜 넣었는가?

하지만 빼지 않고 사용한 데에는 SWS 기간 이후의 리팩토링을 통해 채팅 서버를 분리하고, 제대로 된 pub/sub 구조를 이용해보고 싶은 욕심 때문이다. Kafka도 본래는 서버 3대를 이용하여 클러스터를 구축하고자 했고, broker 간 연결 및 topic 생성까지 해보았지만 현재의 서버 구성으로는 의미가 없어 하나의 서버만을 이용해 Kafka와 Zookeeper를 세팅하고 어떤식으로 동작하는지 실습해보는 것에 목적을 두었다.