Kafka를 이용한 체팅 프로그램 개발 삽질기?

  • Spring STOMP 이용
  • Kafka
  • WebSocket
graph LR; A(Front Client)-->|Chat Message|B(Spring STOMP); B-->|ChatMessage Producer|C(Broker); C-->|ChatMessage Consumer|B

개요

앞서 Kafka를 공부한 만큼 개발을 해보고 모니터링도 직접 해보는 시간이 있으면 좋을 것 같아 간단한 프로그램을 개발 해볼 예정입니다.
스프링(Spring)을 이용하여 STOMP을 이용하여 메시지를 발행하여 Broker에 전달 후 KafkaListener이용하여 Consumer 역할로 개발한 뒤 클라이언트와 Broker 역할을 해볼 예정입니다.
간단한 front-end 개발도 같이 병행하여 개발해보고 AWS에 배포까지 해보면 좋을 것 같습니다.

환경

Spring 3.대 (JDK 17)
WebSocket STOMP
Docker (Kafka)
Front End 는 아직 고민 중..

프로젝트 구성하면서 추가적으로 내용을 정리해보도록 하겠습니다.

2023년 07월 27일
생각해보니 조금 섣부른 판단이였던 것 같다.
Kafka 까지 연동하여 많은 서버를 연동하여 사용하기엔 개인에게 무리가 있을 것 같다. 그렇게 되면 너무 많은 서버를 요구하게 된다.
일단 SimpleBroker로 한대로 체팅 서버로 만들 예정이다. 추 후에 여러대가 될 경우

  • STOMP topic으로 발행한 데이터를 kafka topic으로 레코드로 발행하고 이어 Spring Kafka Listener 즉 Consumer를 이용하여 해당 kafka topic을 읽어 STOMP topic 구독해주는 방안

사실 Redis나 RebbitMQ 등 간단한 캐시 DB도 있지만, kafka를 공부하면서 같이 이용해보고자 했던 것이라
일단은 STOMP의 SimpleBroker Pub/Sub를 이용해보고자 합니다.

그냥 체팅 프로그램 개발기로 돌아오도록하겠습니다.
공부하며 포스팅했던 것들 링크달아두겠습니다.
Spring WebSocket 알아보기
Spring Docker Compose Support 알아보기(kafka docker)

댓글남기기