기능이 제한된 사용자 지정 토론

팀 여러분, 안녕하세요.

저희는 현재 Discourse를 커스터마이징하여 사용자가 클라이언트 측 커스터마이징과 함께 특정 "토픽"으로 바로 진입하도록 하는 작은 프로젝트를 진행 중입니다. 사용자는 토픽에 직접 접속하여 해당 스레드에 게시물을 작성하거나 답글을 남길 수 있습니다. Discourse는 모바일 앱의 웹뷰에 로드됩니다. 또한 기존 컴포저를 제거하고 일부 옵션을 제거한 커스텀 컴포저를 사용하고 있습니다. 이 커스텀 컴포저는 사용자가 게시글에 빠르게 답글을 남길 수 있도록 항상 열린 페이지의 하단에 고정되어 있습니다. 저희는 Docker 없이 최소 사양 GB를 사용하고 있습니다.

사용자가 포럼에 가입하면 클라이언트 측에서 토픽으로 리다이렉트하는데, 이 리다이렉트가 때로는 10~25초가 걸립니다. swift.org와 같은 다른 웹사이트들의 Discourse는 페이지 로딩이 상당히 빠르며, 3~6초 정도가 걸렸습니다. 네트워크 탭을 검사해 보니 네트워크에서 로드되는 JS와 CSS는 동일했으며, 유일한 차이는 모바일에서 “mobile.css” 버전을 로드한다는 점뿐이었습니다.

저희의 커스텀 Discourse에 문제가 있을 수 있는 원인은 무엇일까요? 최적화를 위한 방향이 있을까요? 서버 사양을 높여야 한다고 생각하시나요? 고객 기반은 수백 명 수준이며, 현재는 개발자 몇 명만 사용하고 있지만 이러한 문제를 겪고 있습니다.

Discourse 공식 표준 설치 대신 개발용 설치를 진행하신 건가요? 말씀하신 내용은 개발용 설치에서 예상되는 성능과 일치합니다.

플러그인에서 변경을 하셨나요, 아니면 포크를 하셨나요?

네, 포크를 했습니다. 도커는 사용하지 않았고, 서버 측을 조금 커스터마이징했으며, 주로 JS와 CSS 같은 클라이언트 측 변경을 했습니다. 공식 설치 문서에는 커스텀 코드 설정에 대해 명확하지 않았습니다. 제 저장소에서 코드를 가져오는 방식, 즉 커스텀 코드가 포함된 도커 설정이 어디에 있는지 알려주실 수 있을까요? [도커는 처음입니다]

사용자 정의 코드는 항상 플러그인으로 만들어야 하며, 코어 포크로 만들어서는 안 됩니다.

동의합니다. 현재는 프로덕션 환경이 아닌 것 같습니다. 제대로 된 개발 환경을 설정하고, 플러그인을 만든 후 이를 제대로 된 프로덕션 환경에 배포하세요.

Discourse 테마 개발자 가이드와 입문자를 위한 Discourse 플러그인 만들기 가이드 1부: 기본 플러그인 생성를 참고하세요.

“커스텀 코드”라고 한 것은 discourse의 코어 부분을 건드리지 않는다는 뜻입니다. 우리의 요구사항에 맞게 CSS를 살짝 조정하고 JS를 수정하는 정도입니다. 사용자를 (일종의 설정에 따라) 바로 주제 토론 화면(이 화면처럼)으로 리다이렉트하고 싶을 뿐입니다.

플러그인은 새로운 기능을 추가하는 데 사용되는 것이 맞나요?

JS와 CSS만 변경하는 경우라면, Theme Components를 사용하여 대부분의 변경 사항을 처리할 수 있을 가능성이 높습니다. Rails 백엔드 부분을 수정해야 한다면 플러그인이 필요합니다.

위 Theme Developer 링크부터 시작하여 Theme Components 내에서 변경 사항을 적용해 볼 수 있는지 확인해 보시는 것을 추천합니다.