Вопросы и просьба о пересмотре архитектуры бэкенда MMO

Я делаю простой MMO бэкенд с Django в качестве личного/портфолио проекта.
(на самом деле я не делаю игру MMO)

Вы можете найти проект здесь

У меня есть несколько вопросов к архитектуре, потому что я ее проектировал

1. Архитектура

1.1 Терминология

AuthServer= Веб-сервер, отвечающий за аутентификацию
UniverseServer= Веб-сервер, отвечающий за постоянное хранилище игры (Не смог найти лучшего названия)
MatchmakingServer= Веб-сервер, который действует как посредник между клиентом и GameServerManager

GameServerManager= Менеджер кластера, отвечающий за запуск/остановку GameServerInstances
. GameServerInstance= Экземпляр игрового сервера

PlayerClient= Игровой клиент игрока

1.2 Поток

1.2.1 Аутентификация

  1. PlayerClient входит на AuthServer для получения AuthToken на /api/auth/login/

1.2.2 Получение данных игрока

  1. PlayerClient запрашивает все необходимые данные с UniverseServer по адресу /api/universe/user/{...} (пример: список персонажей)

1.2.3 Подключение к игровому серверу

  1. PlayerClient запрашивает доступный игровой сервер у MatchmakingServer с некоторыми параметрами
  2. .
  3. Сервер MatchmakingServer проверяет, есть ли доступный GameServerInstance в базе данных с этими параметрами
  4. .
  5. Если есть доступный GameServerInstance, MatchmakingServer отвечает PlayerClient с IP и портом GameServerInstance, иначе он пошлет запрос менеджеру GameServerManager на порождение одного
  6. .

Когда MatchmakingServer запрашивает GameServerManager для порождения экземпляра, он передает ServerAuthToken, чтобы GameServerInstance мог делать авторизованные запросы к /api/universe/server/{...}/ для обновления любого значения (например: опыт персонажа)

В проекте Django я реализую AuthServer, UniverseServer, MatchmakingServer как отдельные приложения, чтобы оставаться как можно более модульным.

Прежде всего, я бы хотел, чтобы опытный в этой области человек пересмотрел всю архитектуру.

И вопросы:

  1. Имеет ли смысл эта архитектура? Что я мог бы изменить, чтобы улучшить (даже для именования на более стандартные именования/функциональность/etc...)
  2. .
  3. Какие инструменты можно использовать в качестве GameServerManager. Могут ли это сделать kubernetes/agones? Есть ли что-нибудь для этого у AWS или CloudOcean?
  4. .
  5. Я делаю этот проект в качестве портфолио, но есть ли у этой архитектуры/стека возможности для запуска в производство даже для mmo с небольшой базой игроков, как ROTMG?
  6. Как это можно масштабировать? Разделить приложения по разным проектам и разместить все по отдельности? Использовать балансировщики нагрузки? Использовать прокси?
  7. Считается ли это облачной архитектурой, облачной оркестровкой или чем-то еще?

Любой совет приветствуется
Из вопросов вы можете понять, что у меня минимальные знания в этой области, поэтому, пожалуйста, будьте как можно более подробными (или/и предоставьте ресурсы, чтобы прочитать больше) Спасибо за ваше время :)

Вернуться на верх