Skip to content

3주차 릴리즈 노트

fru1tworld edited this page Jan 22, 2025 · 9 revisions

BE

Load-Balancer 서버를 구현하였습니다.

2 주차에 WebSocket 서버와 API서버를 분리한 것에 이어서 3 주차에는 WebSocket 서버를 Redis로 연결 상태를 관리하고 Load-Balancer 서버를 도입해서 최적의 서버를 찾을 수 있게 구현하였습니다.

다음과 같은 로직에 의해 수행됩니다.

  1. WebSocket 서버는 10초 간격으로 서버의 CPU 자원을 Redis에 업데이트 합니다. (ZSet)
  2. Load-Balacner 서버는 연결된 커넥션을 Redis에서 조회를 해보고 연결된 커넥션이 없다면 CPU 사용량이 가장 낮은 서버의 주소를 반환합니다.
  3. WebSocket서버는 커넥션이 연결되면 Redis에 연결 상태를 업데이트합니다.
  4. 이후 동일한 방에 접속하려는 사용자는 해당 WebSocket 서버로 접속합니다.

그 외 사소한 버그가 해결되었습니다.

상위 Tree에서 하위 Tree를 삭제하려는 경우 각 노드는 웹소켓 커넥션으로 연결된 클라이언트가 있을 수 있습니다. 이때 웹소켓 연결이 모두 종료거나 새로운 노드를 생성하려고 했을 때 노드가 생성/저장되는 오류가 있었는데 이 부분은 WebSocket 서버의 로직을 수정하여 해결하였습니다.

수정 사항: 저장하기 전에 데이터가 존재하는지 확인합니다.

만약 API 서버에서 하위 트리를 삭제하려고 했을 때 커넥션이 연결된 경우 삭제를 방지하거나 연결을 끊는 로직을 고민하고 있습니다. 이 부분은 정책에 따라 결정될 수 있습니다.

Clone this wiki locally