3.3 KiB
Разработка и запуск
Требования
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.