Add legacy ADR
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
# Данные приложений на отдельном диске
|
||||
|
||||
- Дата: 2025-12-07
|
||||
|
||||
## Контекст
|
||||
|
||||
Исторически данные приложений лежали прямо в домашних директориях их
|
||||
системных пользователей (`/home/<app-user>/…`), то есть на системном
|
||||
диске рядом с ОС. В конце 2025 встал вопрос обновления ОС (Ubuntu 22.04
|
||||
уже устарела), и стало ясно: пока данные привязаны к системному диску,
|
||||
любое обновление или пересборка системы рискует этими данными и тяжело
|
||||
откатывается.
|
||||
|
||||
Возникла мысль развязать данные приложений и жизненный цикл ОС.
|
||||
|
||||
## Рассмотренные варианты
|
||||
|
||||
- **Данные на системном диске** (как было). Просто, но данные связаны с
|
||||
ОС: обновление/пересборка системы затрагивает и их.
|
||||
- **Отдельный диск под данные** (выбран). Данные переживают пересборку
|
||||
ОС, диск можно отцепить от одного сервера и прицепить к другому.
|
||||
|
||||
## Решение
|
||||
|
||||
Вынесли все данные приложений на отдельный диск, смонтированный в
|
||||
`/mnt/applications`; каждое приложение держит там свои `data` / `config`
|
||||
/ `backups`, а `base_dir`/`data_dir` указывают на этот путь
|
||||
(коммиты `47a6320`, `7e67409`, `ae7c20a`, `8dfd061`).
|
||||
|
||||
## Последствия
|
||||
|
||||
- `+` Данные развязаны с жизненным циклом ОС — систему можно обновлять
|
||||
и пересобирать, не трогая данные.
|
||||
- `+` Диск можно отцепить от старого сервера и прицепить к новому. Это
|
||||
легло в основу метода обновления ОС
|
||||
([ADR-2025-12-13](ADR-2025-12-13-os-upgrade-via-server-rebuild.md)).
|
||||
- `-` Появилась зависимость от монтирования внешнего диска (UUID,
|
||||
mount-конфигурация): если диск не смонтирован, приложения не
|
||||
поднимутся. Позже, при переезде в Timeweb, монтирование пришлось
|
||||
сделать опциональным
|
||||
([ADR-2026-05-23](ADR-2026-05-23-migrate-to-timeweb.md), фаза 1 — один
|
||||
диск, фаза 2 — отдельный «холодный» диск под крупные данные).
|
||||
Reference in New Issue
Block a user