FastComments.com

온프레미스

FastComments 온프레미스 호스팅

FastComments는 배포를 위한 여러 솔루션을 제공합니다. 가장 일반적인 경우는 우리가 호스팅하는 애플리케이션을 귀하를 위해.

하지만 일부 고객은 정보를 클라우드에 보관할 수 없으며, 모든 데이터를 온프레미스에 호스팅해야 합니다.

이 문서는 그 사용 사례를 다룹니다.

포함된 항목 Internal Link

FastComments On Prem은 당사의 모든 모더레이션 및 관리자 도구를 포함한 라이브 댓글 솔루션을 배포할 수 있게 해주며, 귀하의 자체 하드웨어에서 운영할 수 있습니다.

이는 귀하가 데이터에 대한 제어권을 가지며, 댓글 시스템을 로컬 LAN 또는 기업 네트워크로 제한할 수 있음을 의미합니다.

인스턴스 Internal Link

필수 구성 요소

온프레미스(온프렘) 환경의 경우, FastComments는 애플리케이션 서버와 데이터베이스로만 구성됩니다. 애플리케이션이 다른 구성 요소를 추가하지 않고 모든 트래픽을 직접 처리할 수 있도록 배포를 단순화했습니다.

애플리케이션 서버는 Docker 이미지로 제공되며 어떤 컨테이너 관리 솔루션으로도 배포할 수 있습니다.

데이터베이스인 MongoDB는 직접 운영할 수 있고 AWS DocumentDB나 MongoDB Atlas와 같은 다른 제공업체에서 호스팅할 수도 있습니다.

FastComments는 현재 MongoDB 7에서 테스트되고 있으며, 배포를 용이하게 하기 위해 DocumentDB 호환성을 목표로 하고 있습니다.

인스턴스 크기

FastComments는 상당히 최적화되어 있어 애플리케이션 자체는 낮은 P99를 유지하기 위해 큰 머신을 필요로 하지 않는다는 것을 알게 될 것입니다.

모든 배치 및 cron 작업은 총 메모리 사용량을 제한하기 위해 스트리밍을 사용합니다.

아래의 애플리케이션 서버 및 데이터베이스 표는 크기 결정을 도와줍니다.

애플리케이션 서버 인스턴스

동시 사용자총 클러스터 CPU 수총 클러스터 메모리
1001256mb
1K2512mb
10K81gb
100K328gb
1M6464gb

예를 들어, 초당 약 100개의 댓글 스레드를 처리하는 단일 코어는 보통 250mb RSS를 넘지 않습니다.

데이터베이스 서버 인스턴스

데이터베이스 크기 산정은 작업 집합 크기(특정 시점에 액세스하는 데이터 양)와 동시 요청 수에 따라 달라집니다.

FastComments는 Mongo에 대해 비교적 친절한 편으로, 핫 쿼리에는 인덱스 힌트(index hints), 스트리밍 커서(streaming cursors)를 사용하고 다운스트림 시스템의 과부하를 방지하기 위해 여러 영역에서 동시성 제한을 적용합니다.

아래는 데이터베이스 인스턴스 크기에 대한 일반적인 가이드라인입니다. 참고: 이것은 인스턴스당 리소스이며, 클러스터의 총 리소스가 아닙니다.

동시 사용자저장된 댓글 수인스턴스당 CPU 수인스턴스당 메모리
1001k1256mb
1K5k2512mb
10K100k82gb
100K500k168gb
1M5M3232gb

위 표는 보수적인 추정치입니다. 실제 요구 사항은 페이지 크기, 댓글량 등 특정 구성에 따라 다를 수 있습니다.

설정 Internal Link

FastComments는 설정을 위해 환경 변수를 사용합니다. 다음 목록은 On-Prem과 관련된 지원되는 모든 변수를 정리한 것입니다.

VariableDefaultInfoRequiredExamples or Valid Values
NODE_ENV환경 유형.Yesproduction, dev
MONGO_URIDB 연결 URI.Yes
MONGO_ENABLE_SSLfalse데이터베이스 연결에 SSL 사용을 활성화합니다.Notrue, false
MONGO_ENABLE_SSL_VALIDATEfalseMongo에 연결할 때 CA에 대한 인증서 검증을 활성화합니다.Notrue, false
MONGO_SSL_CAMongo SSL CA pem 파일.No/path/to/some-cert.pem
ADMIN_NOTIFICATIONS_EMAIL중요한 시스템 관련 알림을 받을 이메일 주소.Noadmin-group@bigcorp.com
IP_HASH_SALTIP 주소 해싱에 사용되는 솔트.Yes
SESSION_SECRET세션 서명에 사용되는 키.Yes
SESSION_STORE_SECRET저장소의 세션 서명/해싱에 사용되는 키. SESSION_SECRET과 달라야 합니다.Yes
HOSTNAMEFastComments가 배포된 호스트명 (관리자 대시보드 등). 포트나 프로토콜은 포함하면 안 됩니다.Yesexample.com
HOST_ADDRFastComments가 배포된 접근 가능한 URI (관리자 대시보드 등).Yeshttps://example.com
EMAIL_CONFIG_PATH이메일 설정(SMTP, 도메인/제공자 매핑 등)이 위치한 로컬 파일 시스템 경로.Yes/my/config.json
EMAIL_DEFAULT_FROM_NAMEFastComments Robot이메일 "From Name" 헤더.NoMy Company Name
EMAIL_DEFAULT_FOOTER_LOGO/images/logo-32-2020-01.png이메일 푸터 로고.Nohttps://exmaple.com/footer.png
EMAIL_DEFAULT_TRANSPORTEMAIL_CONFIG_PATH의 "defaultTransport"에 대한 재정의. 동일한 설정 파일을 다른 환경에 배포할 때 유용합니다.NomyTransportName
ON_PREM_TENANT_IDfastcomments.com에서의 계정 ID. 라이선스 키 등록에 사용됩니다.No
ON_PREM_LICENSE_KEYOn-prem 라이선스 키.No
GIPHY_API_KEYGiphy API 키. 지정하지 않으면 gif 선택기를 비활성화하는 설정 규칙을 생성해야 합니다.No
GIPHY_DEFAULT_RATINGpggiphy 통합에 사용됩니다. 위젯 커스터마이징 규칙으로 재정의할 수도 있습니다.Nog, pg, pg-13, r
OPENAI_SECRET_KEY선택적 GPT 기반 스팸 감지와 같은 openai 기반 기능에 사용됩니다.No
CDN_HOST_ADDR에셋을 가져올 호스트명. 기본값은 HOSTNAME 값입니다.Noexample.com
LARGE_FILE_HOST_ADDR대용량 파일(내보내기 등)을 가져올 호스트명. 기본값은 CDN_HOST_ADDR 값입니다.Noexample.com
LARGE_FILE_LOCATION_TYPElocal_disk내보내기 같은 대용량 파일을 저장할 위치.Nolocal_disk, s3
FROM_EMAIL_HOST이메일을 발송할 호스트명.Noexample.com
COOKIE_IDfastcomments.sidfastcomments 쿠키의 이름.No
COOKIE_HOSTNAME.fastcomments.com쿠키의 "hostname" 필드 값. 접두사로 점(dot)을 붙이는 것이 권장됩니다.No.example.com
S3_ACCESS_KEY사용자 파일 업로드, 아바타 등에 사용됩니다. 정의되지 않은 경우 로컬 FS가 기본값입니다.No
S3_SECRET_KEY사용자 파일 업로드, 아바타 등에 사용됩니다.No
S3_REGION사용자 파일 업로드, 아바타 등에 사용됩니다.No
S3_BUCKET사용자 파일 업로드, 아바타 등에 사용됩니다.No
S3_HOST사용자 파일 업로드, 아바타 등에 사용됩니다.No
CACHE_DIRDB를 사용할 수 없을 때를 위한 선택적 오프라인 캐시 저장 위치. 상위 100개 댓글 스레드로 주기적으로 갱신됩니다.No
BACKUP_DIRDB를 사용할 수 없을 때를 대비한 데이터 저장 위치. DB를 사용할 수 없을 때 댓글이 제출되면 여기에 저장되며 나중에 처리됩니다.No

모든 도메인 관련 변수는 _HOST 또는 _ADDR 접미사를 사용합니다. 차이점은 다음과 같습니다:

  • _HOST: example.com
  • _ADDR: https://example.com

EMAIL_CONFIG_PATH에는 다음 예시 형식의 JSON 파일 경로가 포함되어야 합니다:

이메일 설정
Copy Copy
1
2{
3 "defaultDKIM": {
4 "domainName": "mycompany.org",
5 "keySelector": "2024",
6 "privateKey": "-----BEGIN PRIVATE KEY-----\nABCDEFG\n-----END PRIVATE KEY-----"
7 },
8 "providerTransports": {
9 "yahoo.com": "specialTransport"
10 },
11 "defaultTransport": "mailgun",
12 "transports": {
13 "mailgun": {
14 "host": "smtp.mailgun.org",
15 "port": 587,
16 "secure": false,
17 "auth": {
18 "user": "admin@somewhere.com",
19 "pass": "password"
20 },
21 "tls": {
22 "ciphers": "SSLv3"
23 }
24 },
25 "specialTransport": {
26 "host": "smtp.someplace.org",
27 "port": 587,
28 "secure": false,
29 "auth": {
30 "user": "admin@example.com",
31 "pass": "password"
32 },
33 "tls": {
34 "ciphers": "SSLv3"
35 }
36 }
37 }
38}
39

위 예시에서는 mailgun이라는 기본 SMTP 이메일 전송 방식을 정의합니다. 또한 @yahoo.com 이메일 전용으로 사용하는 특수 전송 방식도 정의합니다. 특정 도메인에 대해 전달률을 조정하기 위해 특정 제공자나 발송 IP를 사용하는 것이 바람직한 경우가 있습니다. 이는 선택 사항입니다.

DocumentDB

DocumentDB에 연결할 때는 기본 설정과 호환되도록 MONGO_ENABLE_SSL=true MONGO_SSL_CA=/some/path.pem을 지정해야 합니다.

데이터베이스 다운타임 및 유지보수 모드 Internal Link

FastComments는 자동 유지관리 모드를 지원합니다. 데이터베이스가 다운되더라도 인기 있는 댓글 스레드는 계속 제공할 수 있습니다.

또한 유지관리 모드에서는 모든 댓글이 BACKUP_DIR에 저장됩니다. 시스템이 다시 온라인이 되면(스팸 검사 등) 처리되어 저장됩니다.

이는 매시간 상위 100개의 인기 댓글 스레드를 결정하고 해당 콘텐츠를 디스크에 캐시함으로써 이루어집니다. 상위 100개 스레드의 결정은 미리 계산된 상태에서 이미 수행되므로, 무거운 주기 작업이 아닙니다.

이것은 완전히 선택 사항이며 CACHE_DIR와 BACKUP_DIR가 설정된 경우에만 활성화됩니다. 물론 이것은 애플리케이션 노드를 상태적으로 만들지만, 이는 언제든지 손실되어도 애플리케이션이 오작동하지 않도록 하는 상태입니다.

유지관리 모드에서는 댓글 스레드의 적절한 인증을 수행할 수 없으므로, 안전하게 공개로 간주되는 스레드만 주기적으로 백업된다는 점에 유의하세요.

유지관리 모드에서는 많은 기능을 사용할 수 없습니다.

위젯 코드 Internal Link

온프레미스용 프런트엔드 코드 스니펫과 라이브러리는 SaaS 제품과 동일합니다. 그러나 apiHost와 올바른 스크립트 경로를 지정해야 합니다:

온프레미스용 댓글 코드
Copy Copy
1
2<script async src="https://my.host.com/js/embed-v2-async.min.js"></script>
3<div id="fastcomments-widget"></div>
4<script>
5 window.fcConfigs = [{
6 target: '#fastcomments-widget',
7 tenantId: "demo",
8 apiHost: "https://my.host.com"
9 // ... SSO 페이로드 등을 전달할 수도 있습니다.
10 }];
11</script>
12

위 예시는 매우 단순한 예입니다. 또한 1st-party React, Angular, Vue, Svelte 등 라이브러리를 사용할 수도 있습니다.

API Internal Link

API는 일반 SaaS 제품과 마찬가지로 액세스할 수 있습니다. On-Prem 대시보드에 로그인하여 API 키를 생성하고 해당 키로 API에 액세스하면 됩니다. 해당 API 엔드포인트는 on-prem과 SaaS 제품에서 동일합니다.

다중 도메인 Internal Link

귀하의 On-Prem FastComments 설치는 예를 들어 app.mycorp.org 및 hr.mycorp.org와 같은 여러 내부 도메인에 댓글을 제공할 수 있습니다.

이 도메인들은 개별적으로 구성할 수 있으며, 각각의 동작을 설정하기 위해 별도의 Customization Rules를 만들어 하나의 On-Prem 설치에서 호스팅할 수 있습니다.

보안 Internal Link

기본적으로 FastComments는 댓글 스레드가 공개되어 있다고 가정합니다.

보안 수준을 높이려면 맞춤 규칙을 생성하되 Requires SSO 옵션을 선택하는 것이 권장됩니다. 이렇게 하면 모든 댓글 관련 엔드포인트가 SSO 인증을 요구하게 됩니다.

결론

On Prem 문서의 끝에 도달했습니다. 아래에 추가 의견이나 질문이 있으시면 알려주세요 - 또는 지원 페이지를 통해 저희에게 문의하실 수도 있습니다.