강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

둘리눈알님의 프로필 이미지
둘리눈알

작성한 질문수

웹소켓/STOMP 채팅서비스(spring, vue, redis)

websocket과 stomp 비교

5. websocket, stomp 비교 강의 질문

해결된 질문

작성

·

97

0

안녕하세요

강의 잘 듣고 있습니다.

"5. websocket, stomp 비교" 강의 6:07초에 STOMP 흐름에서 궁금한 점이 있습니다!

방법1

"(클라이언트 1-> 서버)로 연결 요청 및 특정 room 구독"으로 되어 있어서 서버를 통해 브로커를 거쳐 구독하는 방법

방법2
"(클라이언트 2 -> 브로커)로 연결 요청 및 특정 room 구독"에서는 클라이언트 2는 웹 소켓 서버로 다이렉트로 전달하지 않고, 바로 브로커에게 요청을 보내는 방법

질문

  1. 두 가지 방법으로 요청을 할 수 있는건가요?

  2. 두 방법의 차이는 무엇인가요??

     

 

답변 2

1

bradkim님의 프로필 이미지
bradkim
지식공유자

일단 첫번째 방법은 우리 수업에서 사용하는 방식이니 설명은 생략하겠습니다.

두번째 방법은 바로 브로커를 통한다는 것 같은데, 이 경우는 스프링 서버의 stomp를 브로커로 쓰지 않는 경우가 되겠죠. rabbitmq와 같은 제3의 브로커 전문 솔루션을 두고 채팅의 브로커로 활용할수 있는 방안이 있겠습니다. 실제로도 실무에서 활용하는 방식이고, 장점이라고 하면 main스프링 서버에 부하를 줄일수 있다는 장점과 topic의 메시지들을 더 안정적으로 보관할수 있는 장점이 있다고 볼수 있겠습니다.

다만, 구조적으로 서버를 완전히 거치지 않을수는 없을것이고, 서버를 통해 websocket연결까지와 인증작업까지는 진행해야 할것으로 보여집니다. 서버 단에서는 직접 topic 메시지를 메모리에서 처리하지 않고, 단순히 외부 브로커로 relay만 하는 구조. 이정도로 보시면 되지 않을까 싶습니다.

둘리눈알님의 프로필 이미지
둘리눈알
질문자

답변 너무 감사합니다!

좋은 주말보내세요!

0

안녕하세요, 인프런 AI 인턴입니다. 둘리눈알님.

STOMP와 웹소켓 간의 차이를 비교하는 강의에서 등장하는 두 가지 방법에 대해 궁금증을 가지셨군요. 두 방법은 STOMP 프로토콜이 웹소켓을 통해 데이터를 어떻게 전달하는지에 대한 이해를 돕기 위해 설명된 것 같습니다. 이를 명확히 설명드리겠습니다.

  1. 방법 1 (클라이언트 1 -> 서버 -> 브로커):

    • 이 방법에서는 클라이언트가 웹소켓 연결을 통해 서버에 연결 요청을 보낸 후, 서버를 거쳐 브로커에게 전달되는 방식을 의미합니다.
    • 클라이언트의 요청이 서버를 거쳐가기 때문에 보통 서버는 추가적인 로직(예: 인증, 데이터 가공)을 처리할 수 있습니다.
  2. 방법 2 (클라이언트 2 -> 브로커):

    • 이 방법에서는 클라이언트가 직접 브로커에 연결하여 특정 room을 구독하는 시나리오를 나타냅니다.
    • 클라이언트가 브로커에 직접 연결하기 때문에 더욱 신속한 데이터 전달이 가능할 수 있으나, 필요한 검증이나 인증 로직은 클라이언트-브로커 간 설정에 의존하게 됩니다.

차이점

  • 서버 사용 유무: 방법 1은 서버가 중간에 위치하여 다른 서비스와의 통합 및 처리를 가능하게 합니다. 반면, 방법 2는 클라이언트가 브로커와 직접 통신하기 때문에 구조적으로 더 간단합니다.
  • 보안 및 검증: 서버를 통해 데이터를 검증하고 처리할 수 있는 방법 1은 보안적 측면에서 추가적인 레이어를 제공합니다. 방법 2는 직접 연결 방식이기 때문에 설정에 따라 보안 층을 강화할 필요가 있습니다.

관련 정보를 심화하여 보시려면, 아래의 링크도 참고하세요:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

둘리눈알님의 프로필 이미지
둘리눈알

작성한 질문수

질문하기