Перейти к основному содержимому

Архитектура

Обзор

«Взрыв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Кэширование и брокер очередей
MinIOS3-совместимое объектное хранилище
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-контейнеров. Это гарантирует повторяемость, защищённость и удобство установки.