Я администрирую очень активное сообщество со средним количеством 180 тысяч пользователей в день, и вертикальное масштабирование для меня уже практически невозможно. Нам нужно горизонтальное масштабирование. Прежде чем об этом заговорят, хочу сразу сказать: меня мало волнует, что «официально поддерживается». Меня интересует только то, что технологически возможно.
В настоящее время у нас работает экземпляр Ubuntu с Discourse в Docker, установленный по официальным инструкциям. Для хранения используется S3, а также CDN для раздачи контента.
Я планирую мигрировать на NixOS flake, который сейчас пишу. Проведя очень детальное исследование использования ресурсов, я заметил, что процессор в основном нагружен PostgreSQL и воркерами Unicorn (мы оптимизировали это, чтобы минимизировать нагрузку на CPU при сохранении производительности. У нас 16 воркеров).
Также оперативная память в основном занята PostgreSQL и Redis.
Если это возможно, я хочу изолировать эти компоненты на трёх отдельных серверах:
- Frontend Discourse (с Unicorn)
- Сервер Redis
- Сервер PostgreSQL
Я уже успешно настроил сервер Discourse с PostgreSQL на отдельной машине, но не уверен, можно ли вынести Redis на другой сервер и будет ли это иметь смысл с точки зрения производительности.
Кто-нибудь ещё сейчас запускает Discourse в такой конфигурации?