1 мин на чтение

Админка на FastAPI: от двух часов до минуты на изменение конфига

Конфигурация микросервисов лежала в Python-константах и env-файлах на сервере. Любая мелочь — URL вебхука, таймаут, флаг фичи — превращалась в мини-релиз.

Как было

Типичный цикл:

  1. Правка в коде.
  2. Согласование с владельцем сервиса (часто в чате).
  3. Перезапуск инстансов.
  4. Выкатка через CI.
  5. Проверка логов и smoke на стенде.

На практике от идеи до проверки уходило около двух часов, если не считать очередь на ревью. Для AdTech, где интеграции меняются часто, это бесило и бизнес, и дежурного.

Что сделал

Написал внутреннюю админку на FastAPI:

  • авторизация по корпоративной SSO-схеме (сессии, refresh, logout);
  • просмотр актуальной конфигурации без SSH;
  • CRUD по записям интеграций: партнёр, endpoint, секреты через vault-ссылки, не в открытом виде;
  • аудит: кто, когда, что менял.

Справа на скриншоте — интерфейс с картой и таблицей сегментов: так у нас выглядят «тяжёлые» внутренние панели, где визуал и данные связаны. Админка проще по UI, но тот же принцип: одно окно вместо пяти инструментов.

Технически: отдельное приложение, общая БД настроек, миграции Alembic, read-only режим для просмотра на проде (запись — только с роли config_editor).

Результат

Метрика Было Стало
Время доставки типовой правки ~2 ч ~1 мин (запись в UI + валидация)
Риск «забыли перезапустить» высокий ниже: сервисы подписаны на change event
Прозрачность diff в git не всегда читабелен журнал в UI

Полный отказ от git для конфигов не делал: критичные изменения по-прежнему уходят в репозиторий через export job раз в сутки — на случай DR.

Итог

Константы в коде — нормально для старта. Как только настроек больше десятка и ими пользуются не только разработчики, нужна админка. FastAPI здесь удобен: та же экосистема, что у сервисов, OpenAPI из коробки, Pydantic ловит опечатки до записи в БД.