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

seo님의 프로필 이미지
seo

작성한 질문수

Slack 클론 코딩[백엔드 with NestJS + TypeORM]

채팅 서버 통신 구조 설계 및 DB 관리 방법이 궁금합니다.

작성

·

552

·

수정됨

0

안녕하세요, 사내에서 채팅 프로젝트를 진행하게 되어 강의를 신청해 수강 중에 있습니다.

( 채팅은 대규모 서비스를 전제로 하고 있지만, 현재는 상담사와 고객의 1:1 상담을 먼저 진행할 예정입니다. )

관련해서 두가지 질문이 있습니다!

(1) 채팅 서버 통신 구조 설계: 팀원들과 함께 이야기를 나눠볼 때, Socket으로 채팅 히스토리를 조회하거나 채팅 내용을 저장할 수 있지 않을까? 라는 이야기가 나왔습니다. 강의에서 채팅 서버 통신 구조를 설계할 때, 제로초님께서는 HTTP와 Socket을 혼합해서 사용하고 계시는데요. HTTP와 Socket을 함께 사용하시는 이유가 있는지 궁금합니다. 또한, 대규모 서비스로 전환 될 것을 전제하며 실제 서비스를 설계할 때는 어떤 방식이 더 나은지 궁금합니다.

(2) DB 관리 : 채팅 히스토리를 관리하는 방법을 두가지로 고민중에 있습니다. 저장 DB는 mongoDB를 생각 중에 있습니다. (A. 인메모리에 저장해두었다가 주기적으로 DB에 저장 B. 건마다 DB에 저장) 개인 적으로는 A방법을 진행했을 때, 데이터 유실이 우려되어 B방법이 더 나은 옵션이지 않을까 생각하지만, 빈번한 DB접근이 우려됩니다. 제로초님은 어떤 방식으로 관리하고 계신지 조언주시면 감사하겠습니다!

답변 1

1

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

  1. 그냥 웹소켓 게이트웨이에 서비스 인젝트해서 웹소켓만으로 구성하시면 됩니다. http랑 같이 쓰실 필요 없습니다.

  2. 이런 문제는 정답이 없는거라서요. 상담 채팅정도는 건마다 저장해도될것 같습니다. 다만 유저수가 너무 많이 늘어나거나 채팅이 너무 잦은 경우는 A 방법도 고려해봄직한것 같습니다. 레플리케이션이나 샤딩 설계가 중요합니다

seo님의 프로필 이미지
seo
질문자

답변 너무 감사합니다 : )

seo님의 프로필 이미지
seo

작성한 질문수

질문하기