Arquitectura de alta disponibilidad/microservicios

Administro una comunidad muy activa que promedia 180.000 usuarios diarios y realmente no puedo escalar verticalmente más. Necesitamos escalar horizontalmente. Antes de que se mencione, no me importa particularmente lo que está “oficialmente soportado”, solo me importa lo que es tecnológicamente posible.

Ahora mismo tenemos una instancia de Ubuntu ejecutando Discourse en Docker con las instrucciones de instalación oficiales, se utiliza almacenamiento S3, así como una CDN que sirve eso.

Planeo migrar a un NixOS flake que estoy escribiendo. Por investigaciones de uso de recursos muy profundas, noto que la CPU está mayormente limitada por postgres y los workers de Unicorn (lo hemos optimizado para que sea lo más ligero posible en CPU manteniendo el rendimiento. Hay 16 workers).

MEM también está mayormente limitado por postgres y redis.

Si es posible, quiero aislar todo esto en 3 servidores:
Frontend de Discourse (con unicorn)
Servidor Redis
Servidor Postgres

Ya he creado con éxito un servidor de Discourse con postgres en otro servidor, pero no estoy seguro si puedo mover redis a otro lugar y si eso tendría sentido en términos de rendimiento.

¿Alguien más ejecuta Discourse de esta manera actualmente?

Puedes ejecutar Redis en otro servidor si crees que eso ayudará. Es bastante común usar AWS Elasticache en AWS, por ejemplo, así que no hay problema en colocarlo donde creas que hay rendimiento y ancho de banda para manejarlo.

2 Me gusta