인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

ㅌㅇ님의 프로필 이미지

작성한 질문수

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

websocket과 stomp 비교

아키텍처 질문입니다

작성

·

58

·

수정됨

0

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

 

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

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

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

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

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

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

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

 

답변 2

0

bradkim님의 프로필 이미지
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 서버를 구성하여 장애 상황에서도 지속적인 서비스를 제공할 수 있습니다.

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

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

ㅌㅇ님의 프로필 이미지

작성한 질문수

질문하기