Архитектура
Обзор
«Взрыв4D» реализован по современным стандартам микросервисной архитектуры. Все компоненты разрабатываются и исполняются в отдельных Docker-контейнерах, что обеспечивает:
- Изолированность сервисов
- Масштабируемость
- Повторяемость развёртывания
- Независимость от операционной системы
Схема компонентов
┌─────────────────────────────────────────────────┐
│ Nginx (Reverse Proxy) │
│ Порт 8081, 8082, 8089 │
└──────────┬──────────────────┬───────────────────┘
│ │
┌──────▼──────┐ ┌──────▼──────┐
│ Frontend │ │ API Gateway │
│ (Next.js) │ │ (FastAPI) │
└─────────────┘ └──────┬──────┘
│
┌─────────────────┼─────────────────┐
│ │ │
┌──────▼──────┐ ┌──────▼──────┐ ┌───────▼──────┐
│ Вычислительные │ │ Keycloak │ │ MinIO │
│ сервисы │ │ (Auth) │ │ (Storage) │
└──────┬──────┘ └────────────┘ └──────────────┘
│
┌──────▼──────┐
│ PostgreSQL │
│ + Redis │
└─────────────┘
Компоненты системы
Frontend
- Фреймворк: Next.js 15 (React 19)
- Языки: TypeScript, JavaScript
- Визуализация: Three.js, WebAssembly (duckdb-wasm)
- Стилизация: Tailwind CSS
- Аутентификация: keycloak-js
API Gateway
- Фреймворк: FastAPI
- Протоколы: HTTP/REST, WebSockets
- Маршрутизация: Nginx (реверс-прокси)
Вычислительные сервисы (Backend)
- Язык: Python 3.10
- Фреймворк: FastAPI + uvicorn
- Асинхронный стек: asyncpg, SQLAlchemy
- Очереди задач: Celery + Redis
- Хранение файлов: MinIO
Инфраструктура
| Компонент | Назначение |
|---|---|
| PostgreSQL | Реляционная база данных |
| Redis | Кэширование и брокер очередей |
| MinIO | S3-совместимое объектное хранилище |
| Keycloak | Управление аутентификацией и авторизацией |
| Nginx | Реверс-прокси и балансировка |
Взаимодействие компонентов
Фронтенд (Next.js) общается с бэкендом через API Gateway по протоколам HTTP/REST и WebSockets. Все запросы проходят через Nginx-прокси.
Вычислительные задачи распределяются через Celery с Redis в качестве брокера сообщений. Результаты сохраняются в PostgreSQL, файлы — в MinIO.
Контейнеризация
Все компоненты упакованы в Docker-образы и оркестрируются через Docker Compose:
docker-compose.yml— основная конфигурацияdocker-compose.dev.yml— конфигурация для разработкиdocker-compose.gpu.yml— конфигурация с GPU-ускорением
к сведению
Компиляция в классическом понимании отсутствует. Запуск обеспечивается интерпретацией внутри Docker-контейнеров. Это гарантирует повторяемость, защищённость и удобство установки.