From 3242224241d407f11be1a7a1dd9dbd774c03366a Mon Sep 17 00:00:00 2001 From: SantaSpeen Date: Thu, 27 Mar 2025 17:09:58 +0300 Subject: [PATCH] Update readme --- README.md | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 81 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 675478f..6907dd4 100644 --- a/README.md +++ b/README.md @@ -1 +1,81 @@ -# server \ No newline at end of file +# server + +### Стек технологий: +1. **Язык программирования**: Python +2. **База данных**: PostgreSQL + - Для хранения метаданных о модпаках (версии, хеши файлов, данные пользователей и т.д.) +3. **Хранилище файлов**: minio (S3) + - Для хранения самих файлов (модов, конфигураций и других данных). +4. **Контейнеризация и оркестрация**: Docker Compose + - Для запуска микросервисов в контейнерах. +5. **Балансировка нагрузки**: NGINX + - Для распределения запросов между микросервисами. +6. **Аутентификация и авторизация**: JWT (JSON Web Token) + - Для безопасной аутентификации пользователей и межсервисной авторизации. + +--- + +### Микросервисы: + +1. **Сервис учётных записей ([Account Service](src/auth))**: + - **Роль**: Хранит информацию о пользователях, таких как логин, пароль, роли и прочее. За генерацию и проверку токенов (JWT). + - **База данных**: PostgreSQL. + - **API**: + - Генерация JWT для пользователей при успешной аутентификации. + - Проверка токенов при запросах от других микросервисов. - Регистрация пользователей. + - Аутентификация с использованием JWT. + - Управление ролями пользователей. + +2. **Сервис сборок ([Modpack Service](src/modpacks))**: + - **Роль**: Управляет версиями модпаков, их метаданными (хеши файлов, версии). + - **База данных**: 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** для оркестрации контейнеров. \ No newline at end of file