먼저, 권장되는 Discourse 설정에 대해 잘 알고 있지만, 안타깝게도 현재로서는 제가 통제할 수 있는 범위를 벗어납니다.
문제로 넘어가 보겠습니다. 클라이언트가 Discourse를 백엔드 앱으로 사용하는 커스텀 React 프런트엔드를 구축했습니다. 이 프로젝트는 좋지 않은 상태로 인계받았고, 이전 개발자들이 ActionCable을 Discourse에 억지로 끼워 맞추려 했었습니다. Discourse는 이미 실시간 기능을 위해 Message bus를 사용하고 있으므로, 이 방식을 사용하는 것이 더 나을 것 같다고 생각했습니다.
로컬 환경에서는 성공적이었습니다. Message bus는 ‘그냥 동작하며’, 기본 Discourse 메시지 버스 채널에 구독할 수 있었고, 자체 채널도 몇 개 만들 수 있었습니다.
문제가 발생하는 곳은 원격 환경입니다. 우리는 ALB 뒤에 위치한 AWS EC2 인스턴스에 배포하고 있으며, 환경을 직접 구축하고 있습니다. Docker 경로를 따르고 싶었지만, 프로젝트의 이 단계에서 변경 사항에 시간을 할애할 예산이 클라이언트에 없었습니다 ![]()
주요 증상은 Message bus가 심하게 지연된다는 것입니다. 실제로 실시간이라고 할 수 있는 것이 없지만, 로컬에서는 잘 작동하므로 메시지 버스 설정 자체는 문제없다고 알고 있습니다. 따라서 다른 원인이 있을 것입니다.
또한 거의 기본 Discourse nginx 설정을 사용하고 있습니다. 처음에는 메시지 버스 nginx 설정이 누락되어 이것이 문제라고 생각했지만, 추가한 후에도 우리가 겪고 있는 문제가 해결되지 않았습니다.
Chrome의 네트워크 탭을 확인해 보니, /poll 요청이 25초를 기다린 후 몇 밀리초 만에 콘텐츠를 다운로드하고 있으므로 명확히 문제가 있는 것으로 보입니다. 로컬에서 실행할 때나 meta에서와 같이 그 반대여야 합니다.
이것이 AWS ALB 문제일 수도 있다는 점은 알고 있지만, 어디서부터 시작해야 할지 전혀 감이 잡히지 않습니다. @sam 님이 문제의 원인에 대해 어떤 아이디어를 가지고 계신지, 혹은 올바른 방향으로 안내해 주실 수 있을지 궁금합니다.
항상 그렇듯, 모든 도움이 진심으로 감사하겠습니다!
