Voip 관련 트러블슈팅
문제
프로젝트에서 Voip 기능을 WebSocket+STOMP, WEBRTC를 사용하여 구현했다. 그런데 어떤 때에는 상대방에게 전화 신호가 가고, 어떤 때에는 전화를 걸어도 상대방에게 전화 신호가 가지 않는 문제가 생겼다.
원인

단일 서버 환경에서는 각 클라이언트가 웹소켓으로 서버와 연결할 때 무조건 같은 서버에 연결되기 때문에 시그널링 메세지가 유실될 일이 없다.
하지만 우리 프로젝트에서는 EC2 3대를 클러스터링해서 사용 중이기 때문에 전화를 발신한 클라이언트와 수신한 클라이언트가 웹소켓을 각각 다른 서버에 연결할 가능성이 생긴다. Spring의 SimpleBroker는 노드 내부에서 동작하기 때문에 다른 노드에까지 메세지를 전파할 수가 없다.
그래서 운 좋게 두 클라이언트가 같은 서버로 연결되면 전화 신호가 잘 가고, 그 이외의 경우에는 전화 신호가 유실된 것이다.
해결
RabbitMQ를 서버에 추가하여 모든 노드가 메세지를 주고받을 수 있도록 구현하여 해결했다. 전화 신호가 더 이상 유실되지 않고 잘 가는 모습을 확인할 수 있었다.