실시간 채팅 + 라이브 방송

저희 서비스는 기본적으로 라이브 방송에서만 채팅을 제공하고, 다시보기에서는 채팅을 제공하지 않고 있습니다. 추후 다시보기에 질문을 남겨놓을 수 있는 기능에 대해서 생각해보고 있지만, 다시보기에 라이브 채팅이 들어가지는 않을 것 같습니다.

채팅을 구현하면서 사용할 수 있는 방법으로 대략 2가지 정도 생각을 했습니다.

  1. Pub/Sub 구조를 활용한 채팅 서버
  2. Message Queue 와 Consumer 를 활용한 채팅 서버

초기 설계

초기의 채팅 서버 설계는 굉장히 직관적인 설계를 가졌습니다.

초기 채팅 서버 설계

초기 채팅 서버 설계

socket.io 와 nest.js 를 활용해서 채팅 서버를 작성했고, 1대의 채팅 서버가 유저의 모든 메세지 이벤트를 받아, 같은 방에 있는 모든 클라이언트에게 메세지 이벤트를 emit 하는 구조였습니다.