boostcampwm2023/web13_Boarlog

Refactor: Redis를 활용하여 미디어 서버 역할 분리하기

platinouss opened this issue · 0 comments

기존 문제점 설명

현재 미디어 서버는 강의실 정보와 클라이언트(발표자, 참여자) 정보를 모두 메모리에 저장하고 있습니다.

하지만 미디어 서버에서 많은 데이터를 관리하다 보니 부하도 심해지고, 혹여나 서버가 런타임 에러로 재가동된다면 기존에 진행 중인 강의실과 클라이언트를 관리할 수 없게 됩니다.

따라서 미디어 서버는 음성을 중계하고 메시지를 전달하는 수단으로만 사용하고, Redis에 관련 데이터를 저장하고 적합한 데이터를 가져올 수 있도록 구성하려고 합니다.

현재 구현된 기능으로는 참여자 입장 시 최신 화이트보드 정보 전달하는 정도의 기능만 제공하고 있는데,
추후에 발표자 재접속 시 해결되지 않은 질문과 최신 화이트보드 정보를 전달하는 기능을 추가하려고 합니다.

To-Do

  • Redis에 클라이언트 정보(클라이언트 타입, 강의실 ID) 저장하기
  • Redis에 강의실 정보 저장하기
  • Redis에서 해당 강의실의 강의 시작 시간 가져오기
  • 화이트보드 내용이 변경될 때마다 화이트보드 데이터 갱신하기
  • 참여자 입장 시 Redis에서 최신 화이트보드 데이터 가져온 후 전달하기
  • 강의 종료 시 Redis에서 강의실 정보 제거

미디어서버 아키텍처

추가 내용