Files
2026-10-29 18:43:28 +07:00

3.3 KiB
Raw Permalink Blame History

Разработка и запуск

Требования

Production-сервер использует Rust 1.90+ и bundled SQLite. Go 1.25+ нужен для сохранённой эталонной реализации и differential-проверок. Python 3 используется без сторонних пакетов.

Проверить локальную версию:

rustc --version
cargo --version
go version

Установка зависимостей

cargo fetch --locked
go mod download

Сборка

cargo build --locked
go build ./...

Тесты

cargo test --locked
cargo build --locked
python3 tools/compatibility.py
go test ./...

С race detector:

go test -race ./...

Static checks

cargo fmt --check
cargo clippy --locked --all-targets -- -D warnings
go vet ./...

Если в проекте есть Makefile/CI, его команды имеют приоритет как canonical build pipeline.

Локальный запуск

Перед запуском изучите конфигурацию в коде и .env/deployment files.

Не коммитьте реальные credentials.

Собрать и запустить Rust-сервер:

cargo build --locked --release
export BALANCE_JWT_SECRET="replace-with-a-long-random-secret"
export BALANCE_DB_PATH="./data/balance.db"
./target/release/balance-server

По умолчанию сервер слушает :8080. Файл .env читает Docker Compose; при прямом запуске переменные нужно передать процессу через окружение.

Database

SQLite встроен в executable. При первом запуске сервер создаёт каталог, таблицы и индексы автоматически. Отдельный процесс БД не нужен. При переходе с Go сохраните существующий файл БД и BALANCE_JWT_SECRET; подробная процедура и откат описаны в DEPLOYMENT.md.

Production

Рекомендуемый pipeline:

source
  ↓
cargo fmt --check && cargo test --locked
  ↓
cargo clippy --locked --all-targets -- -D warnings
  ↓
cargo build --locked --release
  ↓
python3 tools/compatibility.py --rust-binary target/release/balance-server
  ↓
container/package
  ↓
deploy
  ↓
health check

Для production нужны:

  • TLS termination;
  • persistent database;
  • backups;
  • monitoring;
  • log rotation;
  • secrets management;
  • migration procedure.

Совместимость

При релизе server проверяйте минимум:

  • старый iOS client + новый server;
  • новый iOS client + server;
  • Android client + server;
  • concurrent sync с двух устройств;
  • login/refresh после истечения access token;
  • delete → pull на другом устройстве.

Production build: cargo build --locked --release. Прямой запуск: BALANCE_JWT_SECRET=<secret> target/release/balance-server, порт 8080. Docker Compose публикует порт 8123 и сохраняет прежний volume /data. Процедура миграции Go → Rust и rollback: DEPLOYMENT.md.