TIL

12장 채팅 시스템 설계

설계 범위 예시

채팅 서비스 프로토콜

메시지 송신 클라이언트 → 채팅 서비스 (메시지 저장 및 전달) → 메시지 수신 클라이언트 (사용자 단말기)

폴링 (polling)

롱 폴링 (long polling)

웹소켓 (WebSocket)

채팅 서비스 개략적 설계안

무상태 서비스

상태 유지 서비스

제3자 서비스 연동

규모 확장성

저장소

데이터 모델

채팅 시스템 상세 설계

서비스 탐색

메시지 흐름

1:1 채팅 메시지 처리 흐름

  1. 사용자 A가 채팅 서버1로 메시지 전송
  2. 채팅 서버1은 ID 생성기로 메시지 ID 결정
  3. 채팅 서버 1은 해당 메시지를 메시지 동기화 큐로 전송
  4. 메시지가 키-값 저장소에 보관됨
  5. a. 사용자 B가 접속 중인 경우 사용자 B가 접속 중인 채팅 서버2로 전송됨

    b. 사용자 B가 접속 중이 아니라면 푸시 알림 메시지를 푸시 알림 서버로 전송

  6. 채팅 서버2는 메시지를 사용자 B에게 전송 (웹소켓 사용)

여러 단말 사이의 메시지 동기화

소규모 그룹 채팅에서의 메시지 흐름

접속 상태 표시

더 생각해볼 점