# 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).