Atualmente, minha instalação do Discourse usa um banco de dados PostgreSQL gerenciado pela DigitalOcean e uma instância Redis gerenciada pela DigitalOcean. O servidor Redis gerenciado é necessário?
O Discourse armazena algo permanente no Redis ou ele é usado apenas para cache/outros tipos de dados temporários?
Minha configuração atual (definitivamente exagerada, mas facilitará a escalabilidade se for necessária um dia):
Servidor PostgreSQL gerenciado pela DigitalOcean
Instância Redis gerenciada pela DigitalOcean
Balanceador de carga da DigitalOcean
Dois droplets da DigitalOcean, cada um executando o Discourse
Uma configuração mais simples que estava pensando é:
Servidor PostgreSQL gerenciado pela DigitalOcean
Um único servidor executando tanto o Redis quanto o aplicativo Discourse, com um IP flutuante para fallback em um servidor de backup, se necessário.
Minha configuração atual pode trocar servidores web sem que o usuário perceba, graças ao servidor Redis externo. Acredito que a configuração mais simples desconectará os usuários se o servidor de fallback for necessário. Essa é a principal desvantagem de ter o Redis no mesmo servidor que o Discourse?
O Discourse utiliza o Sidekiq, um agendador de tarefas de código aberto escrito em Ruby. Geralmente (e por padrão), o Sidekiq apenas executa tarefas e não realiza o agendamento, ou pelo menos é o que dizem as referências (talvez as coisas tenham mudado?); no entanto, entendo que a versão empresarial do Sidekiq vem com agendamento OOTB (pronto para uso).
O Sidekiq utiliza o Redis como um armazenamento de estruturas de dados em memória e também é escrito em Ruby. O Sidekiq lê tarefas de uma fila do Redis, usando o modelo Primeiro a Entrar, Primeiro a Sair (FIFO), para processar as tarefas. O processamento de tarefas é assíncrono e permite que uma thread da web atenda solicitações em tempo real, em vez de processar tarefas pesadas que podem ser “agendadas” para execução em segundo plano.
O Sidekiq é descrito como um “software de processamento de filas bem conhecido” e é utilizado pelo Discourse em tarefas projetadas para rodar como processos em segundo plano, e não diretamente nas solicitações da aplicação web.
Você pode explorar os diversos tipos de tarefas que o Discourse executa, com base na breve visão acima, no repositório do Discourse:
O Redis pode ser utilizado pelo Discourse em outras partes da arquitetura; mas, pelo que me recordo, o principal uso do Redis é como “companheiro” do Sidekiq, o “cara das tarefas”. Membros da equipe do Discourse mais inteligentes que eu sobre a HLA do Discourse certamente podem elaborar com mais detalhes sobre como o Redis é utilizado dentro da HLA do Discourse.
Esta é uma postagem um pouco antiga, mas achei que deveria expandir essa resposta, já que encontrei isso ao procurar por outras coisas relacionadas ao Redis do Discourse.
Aqui está uma resposta de um membro da equipe sobre o que, além do Sidekiq, o Discourse usa o Redis para:
ei @Francis , qual foi sua estimativa de faturamento para todos esses serviços da DigitalOcean? Estou curioso porque estou planejando instalar o mesmo serviço no Google Cloud (US$ 200 de graça). O preço do serviço Discourse SAS está fora do meu orçamento.