Discourse는 Redis를 무엇에 사용합니까?

현재 제 Discourse 설치 환경에는 DigitalOcean의 관리형 PostgreSQL 데이터베이스와 DigitalOcean의 관리형 Redis 인스턴스가 사용되고 있습니다. 관리형 Redis 서버가 꼭 필요한가요?

Discourse가 Redis에 영구적인 데이터를 저장하는지, 아니면 캐싱이나 기타 임시 데이터에만 사용되는지 궁금합니다.

현재 제 설정(확실히 과잉 투자가 되지만, 필요할 경우 확장을 쉽게 할 수 있도록 하기 위함입니다):

  • DigitalOcean 관리형 PostgreSQL 서버
  • DigitalOcean 관리형 Redis 인스턴스
  • DigitalOcean 로드 밸런서
  • Discourse를 실행하는 DigitalOcean 드롭렛 2대

더 단순한 설정으로 고려 중인 것은 다음과 같습니다:

  • DigitalOcean 관리형 PostgreSQL 서버
  • Redis와 Discourse 애플리케이션을 모두 실행하는 단일 서버 (필요할 경우 백업 서버로 전환할 수 있도록 플로팅 IP 사용)

외부 Redis 서버 덕분에 현재 설정에서는 사용자가 인지하지 못하는 사이 웹 서버를 무리 없이 전환할 수 있다고 생각합니다. 더 단순한 설정의 경우, 백업 서버가 필요할 때 사용자가 로그아웃될 것 같은데, 이것이 Redis를 Discourse와 동일한 서버에 두는 주요 단점인가요?

감사합니다,
Francis

+1 저도 같은 질문을 가지고 있습니다. Redis와 Discourse에 대해 조금 더 자세히 설명해 주실 분이 있을까요? :kissing_smiling_eyes:

Discourse는 Ruby로 작성된 오픈 소스 작업 스케줄러인 Sidekiq를 사용합니다. Sidekiq는 일반적으로(그리고 기본적으로) 작업을 실행하는 것만 수행하고 스케줄링은 하지 않습니다. 적어도 참고 자료들이 그렇게 말하고 있지요(아마도 상황이 변했을 수도 있겠네요). 그러나 제 이해로는 Sidekiq의 엔터프라이즈 버전에는 스케줄링 기능이 기본으로(OOTB) 포함되어 있다고 합니다.

Sidekiq는 Redis를 인메모리 데이터 구조 저장소로 사용하며, 이 또한 Ruby로 작성되었습니다. Sidekiq는 선입선출 (FIFO) 모델을 사용하여 Redis 큐에서 작업을 읽어 작업을 처리합니다. 작업 처리는 비동기적으로 이루어지며, 백그라운드에서 실행되도록 "스케줄링"할 수 있는 무거운 작업을 처리하는 대신 웹 스레드가 실시간 요청을 처리할 수 있도록 합니다.

Sidekiq는 "잘 알려진 큐 처리 소프트웨어"로 설명되며, Discourse에서는 웹 애플리케이션 요청 내에서 직접 실행되지 않고 백그라운드 태스크로 실행되도록 설계된 작업에 사용됩니다.

위에서 간략히 개요를 살펴본 대로, Discourse가 실행하는 다양한 유형의 작업을 Discourse 저장소에서 살펴볼 수 있습니다:

Redis는 Discourse 아키텍처의 다른 부분에서도 사용될 수 있지만, 머릿속에 떠오르는 바로는 Redis의 주요 용도는 Sidekiq의 “동반자”, 즉 “작업 담당자” 역할을 하는 것입니다. Discourse HLA에서 저보다 더 똑똑한 Discourse 팀 구성원들이 Redis가 Discourse HLA 내에서 어떻게 사용되는지에 대해 더 자세한 정보를 제공해 줄 수 있을 것입니다.

도움이 되길 바랍니다.

이 게시물은 조금 오래되었지만, 다른 Discourse Redis 관련 내용을 검색하다가 이 문제를 마주쳤기 때문에 이 답변을 확장해 보았습니다.

Discourse 팀 멤버가 _Sidekiq 외에 Discourse가 Redis를 어떤 목적으로 사용하는가_라는 질문에 대한 답변은 다음과 같습니다:

hey @Francis, 디지털 오션 서비스 전체에 대한 예상 청구 금액이 얼마였나요? 구글 클라우드에 같은 서비스를 설치할 계획이라서(무료로 200달러 제공) 궁금해서요. 디스커스 SAS 서비스 가격은 제 예산을 초과하거든요.

대략적인 추측이지만, 로드 밸런서와 Redis, PostgreSQL을 사용하면 월 50달러에 드롭렛 비용이 추가됩니다.

비용이 걱정된다면 2GB 드롭렛을 권장하며, 부족할 경우 용량을 두 배로 늘리세요.