@sam이 현재 이 부분을 적극적으로 작업하고 있습니다. 성능 측면에서 볼 때, Discourse의 최신 버전들이 이 부분에서 오히려 퇴보한 것으로 보입니다.
그러나 근본적인 해결책은 수백 명이 동시에 실시간으로 상호작용해야 한다면 라이브 채팅 도구를 사용하는 것입니다 – 다만, Twitch나 YouTube 스트림처럼 스크롤이 너무 빨리 올라가서 아무도 내용을 제대로 볼 수 없는 채팅이 왜 “유용한” 것인지 여전히 의문입니다.
여기서 기억해야 할 중요한 점은 “채팅” 구현 방식이 일반적으로 실제 콘텐츠를 구독자들에게 브로드캐스트한다는 것입니다.
Discourse에서는 상당히 복잡한 파이프라인이 있어, 단순한 구현 방식이 대량의 트래픽을 유발하는 복잡한 결과를 낳습니다.
사용자가 답변을 게시합니다.
해당 토픽을 보고 있는 모든 사용자가 브로드캐스트를 통해 새 콘텐츠가 있음을 알게 됩니다.
모든 사용자가 서버에 게시글 내용을 요청합니다 (시청자 100명 = 요청 100건)
이미지를 가져오거나 최적화합니다.
해당 토픽을 보고 있는 모든 사용자가 브로드캐스트를 통해 새 콘텐츠가 있음을 알게 됩니다.
모든 사용자가 서버에 게시글 내용을 요청합니다 (시청자 100명 = 요청 100건)
(다양한 최적화, 속도 제한, 재시도 등의 기법을 사용하고 있지만, 핵심은 이렇습니다.)
이러한 모든 요청은 사용자가 게시글을 볼 권한이 있는지 등을 확인하기 위해 보안 파이프라인을 거쳐야 합니다.
만약 콘텐츠가 비교적 짧고, "패스트 레인"에서 보안을 더 가볍게 처리할 수 있는 방법을 찾아낼 수 있다면, 채팅 메시지를 브로드캐스트로 분배할 수 있을 것입니다. 이렇게 하면 성능이 크게 향상되어, 해당 설계로 단일 2GB Digital Ocean 드롭렛에서 10,000명의 사용자를 처리할 수 있을 것입니다.
보안은 매우 복잡합니다. 캐시 무효화 문제 때문에 캐싱도 복잡합니다.
따라서, 네, 우리는 이 문제에 대해 확실히 고민하고 있습니다. 하지만 현재 상황은 …
한 토픽에 로그인한 시청자가 많고 + 한 토픽에 새 콘텐츠가 많이 생성되면 = 비싼 서버 비용이 발생합니다.
솔직히 말하면, 위험할 만큼의 지식만 있는 상태입니다. 저는 직접 플레이(그리고 깨뜨리며) 배우는 타입이에요. 이 플랫폼을 만들느라 정말 많은 노력을 기울여 주신 점 진심으로 감사드립니다. 12개월 전에 처음 포럼을 만들었을 때, Vanilla, MyBB, SMF, Flarum 등 12개나 되는 다른 버전을 만들어 봤거든요 그중에서도 Discourse가 압도적으로 좋았습니다.
가장 큰 장점 중 하나는 활발한 개발 활동입니다. 커뮤니티의 의견을 경청하고 지속적으로 개선해 나가는 모습을 볼 수 있어 정말 좋습니다.