개요
채팅 수집기 설계 당시에는 한 인스턴스가 여러 채널의 웹소켓을 연결한다는 기획을 진행을 하다보니 자연스럽게 EKS 내의 인스턴스들은 각각 채널들을 나눠가지게 됐다.
문제발생
실제 내부 모니터링 후 EKS 내의 인스턴스들의 리소스 사용량이 균등하지 않다는걸 깨닫게 됐다.
왜 이런 차이가 발생했을까?
당연하게도 모든 채널의 초당 채팅량은(TPS) 완전히 다르다. 예를 들어 신인 스트리머가 채널을 만들었다고 하자.
시청자는 10명 내외일 것이다. 그렇다면 채팅수도 많지않다. 반대로 침착맨, 풍월량, 울프같은 네임드 스트리머가 방송을 시작하면 채팅은 굉장히 많을 것이다.
이를 고려하지 않았으니 이런 문제가 발생한 것.
결국 각 인스턴스는 캐시에 저장된 순서대로 채널을 가져가려고 할 것이고. 특정 인스턴스에 인기 채널이 몰리게 되면 부하가 몰리게 된다.
이렇게 되면 오토스케일링에도 문제가 생기는데. 실제로 아래와 같이 Pod a 인스턴스 부하가 생겨도 평균치가 오토스케일링 기준값에 도달하지 못해서 오토스케일링되지 못하거나, 오토스케일링되기전에 인스턴스 부하로 메시지 유실률이 발생할 수 있다.

