inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

websocket과 stomp 비교

아키텍처 질문입니다

174

ㅌㅇ

작성한 질문수 43

0

스크린샷 2025-02-23 오후 8.36.54.png.webp

 

이 아키텍처 기준으로 질문이 있습니다.

client1번 -> LB -> 서버 -> 레디스 -> 서버 -> client2

이런 식으로 메세지를 주고 받는다고 하셨는데,

그렇다면 만약에 레디스 서버가 다운이 된다면

  1. client2번은 메세지를 못 받게 되는건가요?

  2. 이런 경우는 어떻게 대비 해야 하나요?

  3. 레디스는 서버 한대에만 구성 해놓나요?

 

spring-boot websocket stomp-websocket pubsub vue-3

답변 2

0

bradkim

1.맞습니다. 메세지를 못받게 됩니다.

2,3. 이 경우에 대비 할수 있는 것은 redis 고가용성으로 1대가 아닌 멀티서버로 구성하는 것입니다. 실무에서 운영서버의 경우 일반적으로 멀티서버(cluster)로 구성합니다. 다만, redis는 app서버 만큼 빈번하게 서버가 다운된다거나 불안정하지는 않기 때문에 고가용성이 아니라 할지라도 안정성을 어느정도는 확보 할수 있다고 생각합니다.

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. ㅌㅇ님.

현재 설명해주신 아키텍처에서는 Redis가 메세지 브로커로서 중요한 역할을 합니다. 다음은 질문에 대한 답변입니다:

  1. Redis 서버가 다운될 경우:

    • 클라이언트 2번은 메시지를 받지 못할 가능성이 높습니다. 메시지 브로커 역할을 하는 Redis가 다운되면 메시지가 전달되지 못하기 때문입니다. Redis Pub/Sub는 메시지를 메모리에 저장하기 때문에, 서버가 다운되면 메시지는 손실될 수 있습니다.
  2. 대비 방법:

    • 고가용성 설정: Redis Sentinel이나 Redis Cluster를 설정하여 고가용성을 보장할 수 있습니다. Sentinel을 통해 자동으로 장애 조치를 구성할 수 있고, Redis Cluster는 데이터를 분산 저장하면서 샤딩/복제하여 가용성을 높입니다.
    • 백업/로그 기능 활용: Redis에서는 기본적으로 메시지를 디스크에 기록하지 않지만, AOF(Append-Only-File)와 같은 지속성 옵션을 통해 복구 가능성을 높일 수 있습니다.
  3. Redis 구성 방법:

    • 단일 서버로 구성할 경우 단점은 고가용성이 부족해 장애에 취약하다는 점입니다. 따라서 위에서 언급한 Sentinel이나 Cluster 설정을 통해 여러 대의 Redis 서버를 구성하여 장애 상황에서도 지속적인 서비스를 제공할 수 있습니다.

이와 유사한 내용을 다룬 유용한 자료를 확인하시려면 아래 링크를 참고해 보세요:

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

ERD 질문

0

54

2

StompHandler 관한 질문

0

80

2

리프레시 토큰은 알아서 구현하면 되는건가요??

0

81

2

cors, csrf 직접 구현

0

65

1

JWT 필터구현

0

98

2

강의 잘듣고 있습니다. 혹시 다음 강의 계획은 없으신가요?

0

58

1

STOMP 동작 과정 질문

0

48

1

chain.doFilter()

0

45

1

자바 21로 소스 작성해도 되나요?

0

60

2

메시지 브로커 선택에 관한 질문

0

65

2

WebSocket과 Spring Security 질문

0

81

2

추가 커스텀 구현 질문 있습니다.

0

61

2

connect와 동시에 구독하는데 구독 검증이 꼭 필요한가요?

0

97

2

저도 동일한 질문인데

0

78

3

token이 필요한 엔드포인트에 의도적으로 토큰 누락시 대처

0

67

2

수업자료가 왜 다 나눠져있나요?

0

78

2

메시지 전송 시 검증

0

61

2

JWT 생성 시 subject 설정에 대한 질문

0

158

3

StompHandler 질문 있습니다.

0

82

2

앱 서비스일 경우

0

84

2

웹소켓 서버 재배포시 고려해야 할 상황 질문

0

107

2

배포 오류 질문

0

124

2

/connect 경로에 대한 토큰 검증의 필요성

0

77

1

JwtTokenProvider 작성중 오류 발생으로 문의드립니다.

0

97

2