Files
awg-dash/docs/adr/006-state-sqlite.md

1.8 KiB

006. Состояние: SQLite (WAL) + /config + /data

  • Статус: принято
  • Контекст/issue: #15, #20

Контекст

Нужно хранить правила маршрутизации, исключения, режим, расписание GeoIP, метаданные конфигов, устройства, audit log и историю метрик. Профиль нагрузки: единичный пользователь, десятки записей в секунду, важна надёжность и отсутствие внешних зависимостей.

Решение

  • SQLite в режиме WAL в /data/awg-dash.db — всё структурированное состояние и audit log;
  • /config — файлы .conf, права 0600, секреты в подкаталоге с ограниченным доступом;
  • /data — кэш GeoIP и история метрик с retention.

Оба каталога объявляются томами образа: без них конфигурация не переживёт пересоздание контейнера.

Альтернативы

  • Postgres/Redis — лишний сервис в образе для единичного пользователя.
  • Только файлы JSON — нет транзакций, аудита и атомарного apply/rollback.

Последствия

  • Миграции схемы обязательны с первого дня (#20) и проверяются при старте.
  • Backup/restore = копирование /data и /config — отражается в runbook (#45).
  • История метрик растёт: нужен retention и периодическая очистка (#28).