Архитектура ISP (OSS/BSS)
Локальная разработка
docker compose + bun dev + Turborepo — инфраструктура в Docker, приложения нативно с hot-reload
Архитектура
Dev: docker compose up -d (инфра) + bun dev (приложения) → нативный HMR
Prod: GitLab CI → Docker → K3s → ArgoCDПриложения запускаются нативно через bun dev (NestJS) и go run (Go). Инфраструктурные зависимости (PostgreSQL, RabbitMQ, Redis, FreeRADIUS, TimescaleDB, MinIO) запускаются в Docker через docker-compose.yml в корне репозитория.
Предварительные требования
- Docker + Docker Compose
- Bun 1.3+ (
curl -fsSL https://bun.sh/install | bash) - Go 1.23+ (для Go-сервисов)
bun install # зависимости (NestJS / frontend)Быстрый старт
# 1. Инфраструктура
docker compose up -d
# 2. Приложения (frontend + docs)
bun dev
# 3. Go-сервисы (в отдельных терминалах)
cd apps/services/aaa-go && go run ./cmd/aaa/
cd apps/services/provisioning-go && go run ./cmd/provisioning/
cd apps/services/mediation-go && go run ./cmd/mediation/Инфраструктурные сервисы (docker-compose.yml)
| Сервис | Порт | Назначение | Credentials |
|---|---|---|---|
| PostgreSQL | 5432 | БД для BSS-сервисов (6 NestJS) | postgres / postgres |
| PostgreSQL RADIUS | 5433 | БД для FreeRADIUS + AAA Service | radius / radius |
| TimescaleDB | 5434 | БД для Mediation (time-series) | mediation / mediation |
| FreeRADIUS | 1812/udp | RADIUS Auth/Acct | — |
| RabbitMQ | 5672 | Брокер сообщений (AMQP) | guest / guest |
| RabbitMQ UI | 15672 | Management UI | guest / guest |
| Redis | 6379 | Кэш + BullMQ | — |
| MinIO | 9000/9001 | S3-совместимое хранилище (архив CDR) | minioadmin / minioadmin |
При первом запуске автоматически:
- Создаются БД для каждого BSS-сервиса (
scripts/init-databases.sql) - Применяются миграции FreeRADIUS (
aaa-go/migrations/) - Применяются миграции TimescaleDB (
mediation-go/migrations/) - Создаются S3-бакеты (
mediation-archive,cdr-archive)
Приложения
| Приложение | URL / Порт | Технология |
|---|---|---|
| web | localhost:3000 | Next.js |
| docs | localhost:3001 | Fumadocs |
| customer-core | localhost:3010 | NestJS |
| product-catalog | localhost:3011 | NestJS |
| billing | localhost:3012 | NestJS |
| notification | localhost:3013 | NestJS |
| oms | localhost:3014 | NestJS |
| network-inventory | localhost:3015 | NestJS |
| provisioning-go | localhost:8080 | Go |
| aaa-go | localhost:8081 | Go |
| mediation-go | localhost:8082 | Go |
Turborepo запускает frontend-приложения параллельно. Turbopack обеспечивает мгновенный HMR.
Hot-reload
Редактируешь файл → Turbopack HMR → браузер (<50ms)- Изменения в
apps/web/,apps/docs/— мгновенный HMR через Turbopack - Изменения в
packages/— автоматически подхватываются через workspace-ссылки - Изменения в Go-сервисах — перезапуск
go run(или использоватьairдля live reload) bun.lock/package.json— перезапуститьbun dev
Переменные окружения (Go-сервисы)
Go-сервисы конфигурируются через env-переменные. Defaults совпадают с docker-compose:
# aaa-go
DB_HOST=localhost DB_PORT=5433 DB_USER=radius DB_PASSWORD=radius DB_DATABASE=radius \
RADIUS_SECRET=testing123 RADIUS_COA_PORT=3799 \
go run ./cmd/aaa/
# provisioning-go
DB_HOST=localhost DB_PORT=5432 DB_USER=postgres DB_PASSWORD=postgres DB_DATABASE=provisioning_db \
RABBITMQ_URL=amqp://guest:guest@localhost:5672/ \
go run ./cmd/provisioning/
# mediation-go
DB_HOST=localhost DB_PORT=5434 DB_USER=mediation DB_PASSWORD=mediation DB_DATABASE=mediation \
RABBITMQ_URL=amqp://guest:guest@localhost:5672/ \
S3_ENDPOINT=http://localhost:9000 S3_ACCESS_KEY=minioadmin S3_SECRET_KEY=minioadmin \
go run ./cmd/mediation/Docker-образы (production)
Multi-stage Dockerfiles в apps/*/Dockerfile (используются только в CI):
NestJS-сервисы:
pruner → turbo prune --docker
↓
deps → bun install --frozen-lockfile (cached layer)
↓
builder → turbo build
↓
runner (node:22-alpine) → Next.js standalone / NestJSGo-сервисы:
builder (golang:1.23-alpine) → go build -o /app
↓
runner (gcr.io/distroless/static-debian12) → /appКоманды
docker compose up -d # инфраструктура (PG, Redis, RabbitMQ, FreeRADIUS, MinIO)
docker compose down # остановить инфраструктуру
docker compose logs -f # логи инфраструктуры
bun dev # frontend-приложения с hot-reload
bun run build # сборка всех приложений
helm template isp infra/chart/ # dry-run Helm-чарта