Техническое задание: Разработчик Node.js / Redis / Clustering
О проекте
Разрабатывается платформа для настольных онлайн-игр, таких как Домино, Нарды и другие аналогичные игры. Требуется усилить и оптимизировать серверную часть для обеспечения многопользовательского взаимодействия в реальном времени.
Основной стек технологий
- Серверная платформа: Node.js
- Фреймворк: Express.js
- База данных в памяти: Redis
- Архитектура: Кластеризация (Clustering)
Ключевая задача
Настройка и интеграция Redis для решения следующих задач в проекте:
- Организация эффективного хранения состояния игровых сессий и комнат.
- Реализация механизмов Pub/Sub для обмена сообщениями между экземплярами сервера и клиентами в реальном времени.
- Обеспечение сессионной согласованности при работе в кластерном режиме (распределение нагрузки между несколькими процессами Node.js).
- Оптимизация производительности и отзывчивости игрового сервера под высокую нагрузку.
- Возможная работа с очередями задач или кэшированием часто запрашиваемых данных.
Требования к исполнителю
- Опыт коммерческой разработки на Node.js и Express.
- Глубокие практические знания Redis: установка, конфигурация, основные структуры данных, использование в контексте кэша, брокера сообщений или хранилища сессий.
- Понимание принципов кластеризации в Node.js (модуль cluster) или использования менеджеров процессов (например, PM2).
- Опыт работы над проектами, требующими низких задержек (real-time applications).
- Умение читать и дорабатывать существующий код клиент-серверного приложения.
Что предстоит сделать
- Проанализировать текущую архитектуру проекта.
- Спроектировать и внедрить схему использования Redis для хранения игровых данных и коммуникации.
- Настроить кластерную архитектуру сервера для горизонтального масштабирования.
- Обеспечить стабильность и отказоустойчивость решения.
- Предоставить документацию по внесенным изменениям.