🍃 Spring

Spring Boot로 만드는 WebSocket & Kafka - 채팅(2)

loose 2022. 12. 6. 18:25
반응형

어플리케이션 구동

 

모든 소스는 깃헙에 있습니다.

해당 소스의 목적은 Kafka 튜토리얼에 목적이 있습니다.

그래서 이전 글과 채팅에 있어서는 기능적으로 크게 달라진 점은 없습니다.

단순히 Session을 통한 WebSocket 채팅 방식으로 이루어지며 내부적으로 Kafka를 통해 한번 더 전달하는 방식으로 만들어져 있어서 Kafka를 모른다면 익히기에 편리 합니다.

Kafka는 TCP 기반의 양방향 통신과 비동기 구현이 가능합니다.

그러므로 TCP를 사용하는 WebSocket을 이용한 예제를 익히기에 적절해서 합쳐봤습니다.

 

사용법

Zookeeper와 Kafka는 필수로 실행해야 합니다.

 

WebSocket에서 Kafka와 같은 메시지 큐를 쓰는 이유

WebSocket만을 이용했을 때의 문제점은 Session 단위의 메시지만 전달이 가능했기 때문에 채팅방을 여러개 만들지 못한다는 단점이 존재했습니다. 해당 문제를 해결하기 위한 방법으로는 STOMP를 이용해서 Pub Sub 구조로 여러개의 방을 만들어서 STOMP의 Broker를 통해 메시지를 전달할 수 있습니다.

하지만 STOMP는 서버 메모리를 Broker로 사용하기 때문에 서버가 2개 이상일 경우 채팅 전달에 있어서 클러스터링을 해줘야하는 단점이 존재하기에 그런 측면을 완벽하게 보완해주는 것이 Kafka나 RabbitMQ와 같은 메시지 큐 오픈 소스를 이용하게 됩니다. 

728x90