Por mi experiencia, esto no se resuelve directamente con ningún enfoque actual ni tiene una solución lineal. De hecho, separarlos en máquinas distintas no es una solución inmediata para ese problema.
También experimentamos caídas severas y mensajes como “el sitio está extremadamente ocupado, así que lo ves como alguien que no ha iniciado sesión” cuando ocurre un evento grande (como un juego, como mencionó @ljpp), y eso afecta a todo el sitio, no solo a las personas dentro de ese tema.
Así que probé dos enfoques diferentes: una configuración separada y una “máquina grande”; ambos presentan este tipo de problemas. Mis instancias se monitorean con Prometheus y los registros son visibles en Grafana, etc., por lo que tengo un control muy granular del rendimiento del hardware/contenedores, y puedo confirmar que realmente no importa qué hagas, el problema ocurre de todos modos.
Si colocas una máquina grande detrás, quizás puedas retrasarlo un poco, pero eventualmente obtendrás errores y caídas de sesiones, y la máquina estará con casi ningún uso, ya sea de disco, CPU o RAM. Esto ocurre tanto con la “instalación predeterminada” como con las instalaciones de “dos contenedores”.
Con máquinas distintas, el problema es el mismo, independientemente de si las máquinas son del mismo tipo o si una es “optimizada para CPU” y la otra “optimizada para disco”, etc. A esto debes agregar la capa adicional de posibles fallos en la conexión entre dos máquinas distintas, lo que inevitablemente causará latencia, aunque esta cantidad de latencia puede variar según cómo configures esa conexión y “qué tan lejos” estén las dos máquinas entre sí, pero obtendrás el mismo comportamiento.
Como nota, este tipo de comportamiento también ocurre con cosas como el plugin de Babel; sin embargo, me parece que el plugin de Babel puede manejar muchas más escrituras “simultáneas”, aunque los “chats” en realidad son temas ocultos. La diferencia radica en cómo se presentan y se “actualizan”/“recuperan”. Esta diferencia en el comportamiento me ha llevado a concluir que se trata de alguna correlación aplicacional que deriva de un problema del tipo FrontEnd que “crashea” la aplicación (siendo que el FrontEnd no es mi área de especialización, a diferencia del BackEnd) y las operaciones en curso al publicar y que las personas permanezcan en un tema esperando que se “actualice automáticamente” con decenas de mensajes en un solo minuto.
A esto también debes agregar el factor humano: cuando las personas sienten que el sitio está “lento” o que un tema “no se actualiza tan rápido como debería”, harán F5 sin parar, añadiendo más carga. Pero buena suerte “educando” en ese sentido 