2025-03-27 19:44:12 +03:00
2025-03-27 17:09:25 +03:00
2025-03-27 19:44:12 +03:00
2025-03-27 17:09:43 +03:00
2025-03-24 01:33:28 +03:00
2025-03-24 01:33:28 +03:00
2025-03-27 19:10:22 +03:00
2025-03-27 16:12:34 +03:00

server

Стек технологий:

  1. Язык программирования: Python
  2. База данных: PostgreSQL
    • Для хранения метаданных о модпаках (версии, хеши файлов, данные пользователей и т.д.)
  3. Хранилище файлов: minio (S3)
    • Для хранения самих файлов (модов, конфигураций и других данных).
  4. Контейнеризация и оркестрация: Docker Compose
    • Для запуска микросервисов в контейнерах.
  5. Балансировка нагрузки: NGINX
    • Для распределения запросов между микросервисами.
  6. Аутентификация и авторизация: JWT (JSON Web Token)
    • Для безопасной аутентификации пользователей и межсервисной авторизации.

Микросервисы:

  1. Сервис учётных записей (Account Service):

    • Роль: Хранит информацию о пользователях, таких как логин, пароль, роли и прочее. За генерацию и проверку токенов (JWT).
    • База данных: PostgreSQL.
    • API:
      • Генерация JWT для пользователей при успешной аутентификации.
      • Проверка токенов при запросах от других микросервисов.
      • Регистрация пользователей.
      • Аутентификация с использованием JWT.
      • Управление ролями пользователей.
  2. Сервис сборок (Modpack Service):

    • Роль: Управляет версиями модпаков, их метаданными (хеши файлов, версии).
    • База данных: PostgreSQL.
    • API:
      • Добавление/обновление/удаление модпаков.
      • Хранение информации о версиях модпаков.
      • Управление метаданными файлов (например, хеши).
      • Интеграция с S3 для загрузки/выгрузки файлов.
      • Получение информации о последней версии модпака (для получения данных о "latest").
  3. Сервис хранения файлов (File Storage Service):

    • Роль: Отвечает за загрузку и выгрузку файлов (модов).
    • Хранилище: minio, S3
    • API:
      • Загрузка файлов в S3.
      • Получение Pre-signed URL для скачивания файлов.
      • Управление метаданными файлов (например, оригинальные имена в метаданных).
      • Могут быть настроены приватные файлы для определённых пользователей или ролей.

Взаимодействие микросервисов:

  • Сервис учётных записей предоставляет API для регистрации и аутентификации пользователей. Он генерирует JWT, который клиент использует для взаимодействия с другими сервисами.

  • Сервис сборок получает запросы от клиентов на получение списка доступных сборок, их версий, хешей файлов. Он может запросить Auth Service для проверки токенов.

  • Сервис файлов предоставляет API для загрузки и скачивания файлов через S3. Для скачивания он использует Pre-signed URL, и клиенты используют JWT для доступа к этим URL.

  • Все запросы между сервисами и с клиентами будут использовать JWT для аутентификации и авторизации.


Архитектура и безопасность:

  1. JWT для аутентификации:

    • Каждый запрос, который приходит от клиента или между микросервисами, будет включать JWT в запросе token.
  2. NGINX:

    • Используется для балансировки нагрузки между микросервисами и контроля доступа.
    • Настроен для проксирования запросов к нужным сервисам и проверки наличия действительного токена в запросах.
  3. Docker Compose:

    • Для оркестрации контейнеров и упрощения развертывания всех микросервисов в одном окружении.
    • Каждый сервис будет запущен в своем контейнере, и все контейнеры будут взаимодействовать между собой через сети, настроенные в Docker Compose.

Резюме:

  • Микросервисы: Сервис учётных записей + Сервис авторизации, Сервис сборок, Сервис файлов.
  • Стек: Python, PostgreSQL, S3, Docker Compose, NGINX, JWT.
  • Безопасность: Все микросервисы используют JWT для аутентификации и авторизации.
  • Архитектура: NGINX для балансировки нагрузки и контроля доступа, Docker Compose для оркестрации контейнеров.
Description
No description provided
Readme MIT 56 KiB
Languages
Dockerfile 100%