Glimmer Components: 여기서 한계는 무엇인가요?

다른 주제에서의 제안 덕분에 마침내 Ember 문서에서 Glimmer 컴포넌트를 배우기 시작했습니다. 솔직히 정말 사용하기에 편하고, 제 생각에는 React로 빌드하는 것보다 더 좋습니다. Ember가 더 인기 있는 것이 아니라서 놀랍습니다. 어쨌든, 제 질문은 제가 파악한 바로는 Glimmer 컴포넌트를 사용하여 Discourse에서 어떤 테마 플러그인도 만들 수 있고, Ember의 모든 것을 기본적으로 접근할 수 있는 것 같습니다. 그렇다면 이론적으로 Glimmer 컴포넌트를 만들어 Discourse의 어떤 부분도 커스터마이즈할 수 있는 건가요? 여기서 제한 사항은 무엇인가요? Ember/Glimmer의 모든 기능이 Discourse에서 사용 가능하며, 컴포넌트를 위한 플러그인 아웃렛을 찾아 올바르게 초기화하기만 하면 되는 건가요? 예를 들어, 커뮤니티의 일부 주제에 외부 이커머스 웹사이트의 관련 제품 데이터를 보충해야 했습니다. 그래서 제 아이디어는 Discourse에서 Glimmer 테마 컴포넌트를 만들어 제품 데이터를 가져오는 fetch를 실행한 후, 게시글 끝에 이를 표시하는 것입니다. Glimmer를 사용하면 꽤 간단하지만, Ember/Glimmer 컴포넌트를 얼마나 멀리까지 가져갈 수 있는지 확실하지 않아서 이 방법이 Discourse에서 올바른 방식인지 궁금합니다. 피드백 주시면 감사하겠습니다.

말씀하신 대로 이해하신 것 같습니다.

크로스 스크립팅 설정이 허용하는 한, 원격 사이트에서 데이터를 가져올 수 있어야 합니다(사용자가 접근할 수 있는 비공개 API 키를 사용할 필요도 없습니다).

그렇게 하면 작동할 것입니다.

다만, 이 방식은 모든 페이지 조회 시마다 외부 웹사이트에서 제품 데이터를 가져오게 되며, 이는 귀하나 해당 웹사이트 관리자가 원하지 않을 수 있다는 점을 염두에 두어야 합니다. 따라서 플러그인을 만들어 자체 컨트롤러에 데이터를 요청하고, 그 컨트롤러가 원격 사이트에서 데이터를 가져오도록 하는 것이 더 좋습니다. 이렇게 하면 결과를 캐싱할 수 있고, 비공개 API도 사용할 수 있게 됩니다.

제품 링크가 있고 데이터가 오래되었다면, 제품을 "원박스(onebox)"로 처리하고 해당 위치에 추가 데이터를 표시하는 플러그인을 만드는 것도 방법입니다.

감사합니다. EmberData가 사용 가능한 것 같고, 내장 캐싱 기능이 있는 것 같습니다. 아직 Discourse 안에서 EmberData를 테스트해 보지는 않았는데, 동작하지 않을 이유가 있을까요?

이는 클라이언트 측(즉, 사용자별로 특정되는) 문제이며, 한 사용자가 동일한 요청을 1000번 수행하는 경우를 해결할 수 있습니다.
하지만 1000명의 사용자가 각각 요청을 한 번씩 수행하는 경우에는 작동하지 않습니다. 각 사용자는 별도의 캐시를 가지기 때문입니다.

설명해 주셔서 감사합니다. 네, 제가 더 신경 쓰는 부분은 클라이언트 쪽입니다. API는 IP 주소 기반으로 한도가 설정되어 있기 때문이죠. 따라서 클라이언트 자체가 캐시만 잘 이루어진다면, 외부 API의 제약 조건에 영향을 줄 수 있을 정도로 동시 접속 사용자가 많지 않으므로 문제없을 것 같습니다.

Ember에 대해 제가 유일하게 망설이는 점은, Discourse를 제외하고는 실제로 사용하는 사람이 거의 없어 보인다는 것입니다. Discourse가 점점 더 인기를 얻고 있고, 플랫폼도 계속 개선되고 있기 때문에 배우고 있는 것뿐입니다. 하지만, Discourse를 제외한 Ember의 미래는 있을까요? 그리고 Discourse가 앞으로도 오랫동안 Ember에 의존하게 될까요? Ember가 더 인기 있는 프레임워크가 아닌 것이 제게는 좀 이상하게 느껴집니다. 저는 수년간 React로 개발을 해왔는데, 며칠 전에 Ember를 설치해 본 후 그 품질에 놀랐습니다. 의견이 분명한(opinionated) 프레임워크를 가질 수 있다는 것은 매우 유용합니다.

CDCK만이 그 질문에 완전히 답할 수 있지만, 제 생각은 다음과 같습니다:

  • 완전히 전념하고 있는 것으로 보입니다.
  • 실제로 아주 뛰어난 풀-페이트(full-fat) 프레임워크입니다.
  • 이를 다시 작성하는 데는 매우 큰 비용이 들 것입니다(그리고 상업적으로 거의 의미가 없을 것입니다).
  • 10년 넘게 Ember가 해왔습니다. 결과를 기대해 보세요.

EmberJS를 사용하는 대기업 목록:

Discourse는 EmberData를 사용하지 않습니다.

과거에는 Apple, LinkedIn, Twitch 같은 회사들이 사용했을 때보다 인기가 덜했지만, 여전히 우리와 Intercom, Hashicorp, CrowdStrike 같은 사용자들이 있습니다.

Discourse가 이 프로젝트에 전적으로 투자하고 있기 때문에, 우리는 Ember Initiative | Mainmatter 에 참여했습니다.

이 토픽의 제목으로 돌아가 보겠습니다. Glimmer Components가 확장성 면에서 잘 작동한다는 것은 꽤 분명해 보입니다. CDCK가 마침내 토픽 목록에 Components를 추가하는 것을 허용하도록 되어 있기 때문이죠. 이는 프레임워크가 대규모로 성능을 발휘해야 한다는 것을 의미하며, 관련 내용은 다음 링크에서 확인할 수 있습니다: Upcoming topic-list changes - how to prepare themes and plugins

처음에는 확장 기능이 현재 비추천(deprecated)된 위젯 시스템에 의존하고 있었습니다. 이 시스템은 오래된 Android 폰에서도 수많은 토픽 목록 항목을 렌더링하는 문제를 해결하기 위해 만들어졌습니다.