# 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 нет.