docs(#16): ADR-001, ADR-002, индекс и шаблон ADR

This commit is contained in:
2026-10-21 23:29:18 +03:00
parent 5647d339b1
commit 63e653b710
4 changed files with 96 additions and 0 deletions
+27
View File
@@ -0,0 +1,27 @@
# 001. Backend — Python 3.12 + FastAPI
- **Статус:** принято
- **Контекст/issue:** #15, #31
## Контекст
Нужен control plane: REST API, WebSocket, планировщик, парсинг конфигов, работа с SQLite.
Низкоуровневая работа сети и шифрования выполняется не нашим кодом, а бинарями `awg` и `amneziawg-go`,
трафик маршрутизирует ядро.
## Решение
Control plane — **Python 3.12 + FastAPI (async)**. Go остаётся только там, где он уже есть:
`amneziawg-go` и `amneziawg-tools` собираются в multi-stage Dockerfile (ADR-002).
## Альтернативы
- **Go целиком** — быстрее на сетевом I/O, но маршрутизацией занимается ядро, а не процесс;
выигрыш не оправдывает рост стоимости контракта с UI (схемы, генерация клиента, миграции, веб-фреймворк).
- **Node.js** — преимуществ перед Python на нагрузке в единичного пользователя нет.
## Последствия
- OpenAPI-first: FastAPI отдаёт схему, что прямо соответствует задаче #19.
- В образе появляется Python runtime (плюс 40–60 MB к размеру).
- Дисциплина async: внешние команды — только `asyncio.create_subprocess_exec`, блокирующего кода в event loop нет.