docs: document container deployment and recovery
Docs security / security (pull_request) Successful in 6s
Docs verify / verify (pull_request) Successful in 11s
Conventional commits / commits (pull_request) Successful in 11s
Docs security / security (push) Successful in 7s
Docs verify / verify (push) Successful in 10s

This commit was merged in pull request #15.
This commit is contained in:
2026-09-16 09:41:58 +03:00
parent 97069d6f6d
commit cead9dc176
7 changed files with 326 additions and 7 deletions
@@ -0,0 +1,47 @@
# 015. SQLite в ограниченном single-server deployment
**Status:** Accepted
## Context
[ADR 001](001-prisma-sqlite-local-mvp.md) ограничивал SQLite локальным MVP.
Контейнерная поставка требует постоянного хранилища на одном сервере,
но не требует высокой доступности или нескольких экземпляров API.
Пользователи, сессии, зашифрованные подключения и банковская история уже
хранятся в SQLite. Кэши, limiter и generation подключений локальны процессу.
## Decision
Разрешён один backend process на одном Docker host с SQLite в постоянном
host directory. Development использует отдельный named volume. SQLite
остаётся embedded library без сетевого порта. Это расширяет deployment
boundary ADR 001; его исторический контекст сохраняется.
Prisma migrations выполняются отдельным одноразовым service из того же image,
что и backend. Перед изменением схемы backend останавливается, всё data
directory копируется вместе с возможными WAL/SHM files. Ключ шифрования
сохраняется отдельно. Неуспешная migration блокирует запуск новой версии.
Откат image требует совместимости с текущей схемой и не восстанавливает
старую базу. Restore требует отдельного решения о потере данных после backup.
Frontend и backend имеют независимые версии; production фиксирует version tags.
Краткий простой допустим.
## Alternatives
PostgreSQL потребовал бы миграции данных и отдельного database lifecycle;
текущие требования этого не оправдывают. Kubernetes, replicas и blue-green
не устраняют ограничения process-local состояния и не входят в решение.
## Consequences
Сервер не обещает HA или zero-downtime. Один backend instance — обязательное
ограничение, а не рекомендуемая настройка масштабирования. Нужны контроль
свободного места, согласованные backups и проверяемое восстановление.
Решение пересматривается при необходимости нескольких replicas, другом
availability target, заметном write contention или потребности в отдельном
database service. Добавление реплик до такого решения недопустимо.
Топология описана в [архитектуре](../architecture/containers.md#контейнерная-поставка),
операции — в [runbook](../architecture/deployment.md).