Задача
Требуется разработать бэкенд-систему для мониторинга игровых серверов. На каждом сервере установлен плагин, который поднимает HTTP endpoint. Система должна опрашивать этот endpoint, собирать данные и работать с десятками и сотнями серверов.
Требования к функционалу
- Опрос endpoint'ов: Периодически отправлять HTTP-запросы к плагину на каждом контролируемом сервере и извлекать показатели состояния и метрики.
- Сохранение метрик: Все полученные статусы и данные должны сохраняться в базу данных для дальнейшего анализа и отображения истории.
- Отказ от старой авторизации: Устраните устаревшую и недописанную проверку “права собственности на сервер” через временную смену имени сервера на ключ. Замените этот механизм на нормальную схему аутентификации для подтверждения владения сервером при его добавлении.
- Масштабирование: Реализовать архитектуру, позволяющую добавлять новые машины с воркерами для распределения нагрузки при опросе сотен серверов (пакетная обработка заявок между воркерами). Организовать взаимодействие воркеров с центральной базой данных.
- Перспектива развития: Итоговое решение должно легко мастшабироваться при увеличении числа подконтрольных серверов, распараллеливая нагрузку на разные инстансы.
Технический стек
- Язык: Java (при разработке плагина можно подразумевать, но бэкенд может быть на любом языке вроде Python, Go или Java)
- Протокол: HTTP к endpoint плагина.
- Дополнительно: PostgreSQL/MySQL/public-cloud ready.
- Распределение: Поддержка Kafka/Redis или очередей для передачи заданий воркерам.