Админка на FastAPI: от двух часов до минуты на изменение конфига
Конфигурация микросервисов лежала в Python-константах и env-файлах на сервере. Любая мелочь — URL вебхука, таймаут, флаг фичи — превращалась в мини-релиз.
Как было
Типичный цикл:
- Правка в коде.
- Согласование с владельцем сервиса (часто в чате).
- Перезапуск инстансов.
- Выкатка через CI.
- Проверка логов и 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 ловит опечатки до записи в БД.