- Discord는 Midjourney 서버의 200만 명 이상 동시 접속자 문제를 Elixir와 Erlang VM을 활용해 해결했습니다. 🚀
- 초기에 모든 사용자에게 모든 메시지를 전송하는 방식은 서버 부하를 크게 증가시켰습니다. 💥
- 대부분의 사용자(90% 이상)가 비활동적이라는 점을 이용, 비활동 사용자에게는 필요한 정보만 나중에 전송하는 방식으로 효율성을 높였습니다. 😴
- 단일 Elixir 프로세스의 부하를 줄이기 위해, Relay 시스템을 도입하여 서버 처리를 분산했습니다. 🔄
- 모든 사용자 목록을 Erlang Term Storage(ETS)에 저장하고, 최근 변경 사항만 메모리에 저장하는 하이브리드 방식으로 성능을 개선했습니다. 💾
- Relay 시스템과 ETS 활용으로 서버 성능이 크게 향상되었고, 특히 presence update 부분에서 효과가 컸습니다. 📈