---
# System prepended metadata

title: LoadBalancer for Chatting Server - 성현

---

# LoadBalancer for Chatting Server - 성현


### 사용 기술
- Go 1.17.6

### 구조
![](https://i.imgur.com/AlGWcjs.png)



### 기능 종류
- 브라우저가 웹 소캣 연결을 위한 핸드셰이크 신호를 보낼 때, 이 신호를 적절히 분산시킵니다.
- 채팅 서버에 상태를 주기적으로 채크합니다.

### 기술 선택 이유
- 많은 사용자가 채팅 서버와 웹 소캣 통신을 위한 연결을 진행한다면 이 연결을 적절히 분산 시킬 필요가 있다고 생각했습니다.
- 다수의 채팅서버를 관리할 서버가 필요하다 생각하였습니다.


### 반성할 점
더 효율적인 알고리즘을 적용하지 못한것이 아쉽습니다.
단순히 순서대로 서버를 분산해 주는 라운드 로빈 알고리즘을 선택하기보다는 연결된 세션을 파악하여 가장 적은 세션이 연결된 서버로 연결해 주는 최소 연결 알고리즘을 사용했더라면 하는 아쉬움이 남습니다. 또한 이 과정에서 깊이 사용하지 못한 gRPC를 엮어 보는 것도 좋은 경험이었을 것 같습니다.