Arquitetura de alta disponibilidade/microserviços

Eu administro uma comunidade muito ativa que tem uma média de 180 mil usuários diariamente e não consigo mais escalar verticalmente. Precisamos escalar horizontalmente. Antes que seja mencionado, não me importo particularmente com o que é “oficialmente suportado”, só me importo com o que é tecnologicamente possível.

Atualmente, temos uma instância do Ubuntu executando o Discourse no Docker com as instruções de instalação oficiais, o armazenamento S3 é usado, bem como uma CDN servindo isso.

Planejo migrar para um NixOS flake que estou escrevendo. Com base em investigações aprofundadas de uso de recursos, notei que a CPU é majoritariamente limitada pelo postgres e pelos workers do Unicorn (nós otimizamos isso para ser o mais leve possível em CPU, mantendo o desempenho. São 16 workers).

MEM também é majoritariamente limitado pelo postgres e redis.

Se possível, quero isolar tudo isso em 3 servidores:
Frontend do Discourse (com unicorn)
Servidor Redis
Servidor Postgres

Já criei com sucesso um servidor Discourse com postgres em outro servidor, mas não tenho certeza se posso mover o redis para outro local e se isso faria sentido em termos de desempenho.

Alguém mais executa o Discourse dessa forma atualmente?

Você pode executar o Redis em outro servidor se achar que isso ajudará. É bastante comum usar o AWS Elasticache na AWS, por exemplo, então não há problema em colocá-lo onde você achar que há desempenho e largura de banda para lidar com isso.

2 curtidas