채팅 서비스 관련하여 질문드립니다.
좋은 강의 감사합니다.
다름이 아니라, Redis Pub/Sub에서 채팅 서비스에 활용된다고 하여 제가 이해한 바와 질문을 드립니다.
제가 이해한 바는 다음과 같습니다.
단일 서버가 아닌 다중 서버에서 채팅을 진행하기 위해서는 Source User와 Taget User 간의 정보(IP, MAC 등)이 필요하다.
여기에 다중 서버에 공유하기 위해서는 Redis Pub/Sub 기능을 이용하여 User 정보를 동기화한다.
이해한 바를 바탕으로 아래 질문을 드립니다.
Redis Pub/Sub 기능을 활용해 실시간 채팅을 하는 상황입니다.
서버에서는 실시간으로 채팅 내역을 동기화하지만, 유저 단(ex. 브라우저 or 프로그램)에서는 실시간으로 반영을 할려면 Redis Pub/Sub 기능만으로 가능한지 궁금합니다.
유저 단에서 실시간으로 채팅을 할려면 WebSocket이나 SSE 등의 로직이 추가적으로 필요한걸까요?
감사합니다.
Answer 3
1
안녕하세요~
혹시, 말씀하시는 내용이 채팅 또는 알림 등의 실시간 서비스를 구현할때, 웹소켓이나 sse없이 redis pub/sub만으로 가능하냐 를 물어보시는걸까요?
만약 그런 질문이라고 한다면, 그럴수는 없습니다. redis pub/sub은 다중서버 환경에서 메시지를 전파해주는 역할을 하는 것일뿐, 실시간 서비스 자체를 구현하는 기능은 아니기 때문입니다.
그래서 redis pub/sub은 sse 또는 웹소켓과 함께 보조적으로 사용될때 필요한 기술이라고 보시면 될것 같습니다.
0
안녕하세요, 인프런 AI 인턴입니다. cksdnddlek99님.
Redis Pub/Sub와 관련하여 실시간 채팅 서비스에 대한 질문을 주셨네요. 아래에 질문에 대한 답변을 드리고자 합니다.
Redis Pub/Sub 기능을 활용한 실시간 채팅:
- Redis Pub/Sub는 서버 간의 메시지 전달 및 동기화에 매우 유용하지만, 클라이언트(유저 단)에게 직접적으로 실시간 메시지를 전송하는 기능이 내장되어 있는 것은 아닙니다.
- 서버 간 메시지 동기화는 가능하지만, 유저의 브라우저나 애플리케이션에 실시간으로 변화를 전파하려면 추가적인 기술이 필요합니다.
- Redis Pub/Sub는 서버 간의 메시지 전달 및 동기화에 매우 유용하지만, 클라이언트(유저 단)에게 직접적으로 실시간 메시지를 전송하는 기능이 내장되어 있는 것은 아닙니다.
유저 단 실시간 변화를 위한 WebSocket/SSE 필요성:
- 클라이언트 측에서 실시간으로 데이터를 수신하려면 WebSocket이나 Server-Sent Events(SSE)와 같은 기술을 사용하는 것이 일반적입니다.
- WebSocket은 양방향 통신이 가능하여 실시간 채팅에 매우 적합하며, SSE는 서버에서 클라이언트로의 단방향 통신을 가능하게 하여 알림 등을 처리하기에 유용합니다.
- 이러한 기술을 사용하여 클라이언트가 서버로부터 실시간으로 메시지를 수신할 수 있도록 구성을 하게 됩니다.
- 클라이언트 측에서 실시간으로 데이터를 수신하려면 WebSocket이나 Server-Sent Events(SSE)와 같은 기술을 사용하는 것이 일반적입니다.
유사한, 관련 질문 예시로 참고하시면 좋을 링크를 드립니다:
- stomp관련 질문입니다. - 실제 웹소켓과 STOMP, Redis Pub/Sub를 통한 메시지 전달 시스템에 대한 상세한 설명과 예시로 도움을 받을 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
순위가 동률일 때의 처리에 대해 질문드립니다.
0
11
2
Service Create/Update Record 운용과 Delete Record 미운용의 차이 질문
0
20
1
조회속도 개선에서 더 개선하는 방법이 궁금합니다.
0
28
2
Redlock 알고리즘 관해 궁금한게 있습니다!
0
47
2
좋아요/조회수 카운팅 병목현상에 대해서 궁금한점이 있습니다.
0
35
2
Build 관련 문제 (테스트 관련 문제)
0
43
2
consumer에서 에러가 발생할 경우 데이터 유실 문의
0
38
2
게시글 테스트 데이터 삽입
0
43
2
강의가 검은 화면으로 나옵니다.
0
48
1
mysql 의 bitmap
0
37
1
주제영역3 데이타 조회 문의
0
36
2
인덱스 관련 질문 있습니다.
0
68
2
실무에서 Redis에서 0번 이외의 DB를 사용하나요?
0
149
2
실무에서의 복잡한 쿼리 결과 캐싱 전략(크기, TTL 등) 관련 질문
0
84
2
레디스 서버 구성
0
70
2
Redis Pub/Sub, Stream과 Kafka 비교 질문입니다.
0
309
2
레디스에 저장하는 토큰 질문입니다.
0
74
2
redis 개발 환경 수정 시 질문 입니다.
0
90
2
key값에 대한 작성 컨벤션
0
135
2
수업 자료는 어디 있을까요?
0
150
2
상품의 재고 변경을 비동기로 처리하는것에 대해 질문합니다.
0
194
2
혹시 kafka나 rabbitMQ 강좌 예정 없으신가요?
0
194
1
MacOS에서 brew를 사용한 설치를 권장하지 않는 이유가 무엇인가요?
0
232
2
레디스 pub/sub 질문
0
280
1

