4/7. Как я исследовал стоимость банковского BFF GQL vs REST
Почему API-контракту нужен менеджер, а не просто папка с файлами
Когда контракт становится важной частью банковской архитектуры, его нельзя хранить как "ну где-то лежит JSON".
JSON — это JavaScript Object Notation, текстовый формат обмена данными.
Но сам по себе файл не отвечает на вопросы:
- кто владелец API; - какая версия сейчас latest, то есть актуальная; - какие операции опубликованы; - можно ли эту версию выпускать; - не нарушена ли security policy — политика безопасности; - синхронизирован ли фронтенд; - видит ли BFF этот контракт; - что изменилось между версиями; - кто отвечает за поле в ответе.
Поэтому я сделал contract manager — менеджер контрактов.
Его задача — не просто показать manifest.
Manifest — это манифест разрешенных операций.
Задача менеджера — стать governance-слоем, то есть слоем управления правилами, публикациями и видимостью.
Что появилось:
1. Publish gate — проверка перед публикацией.
Если контракт кривой, ошибка должна стрелять не где-то в рантайме, а прямо при попытке publish.
2. Security policy admin — админка политик безопасности.
Например, query depth — глубина GraphQL-запроса. Если команда случайно публикует слишком глубокий запрос, менеджер блокирует релиз.
3. Version compare — сравнение версий.
Важно видеть, что изменилось: hash-route, OpenAPI, manifest, raw GraphQL, схемы.
4. Live deployment sync — онлайн-проверка деплоя.
Менеджер показывает:
- видит ли он BFF; - видит ли frontend; - совпадает ли версия контракта; - хватает ли операций, чтобы сценарий работал end-to-end.
5. API console — консоль вызова API.
Можно прямо из UI, то есть интерфейса пользователя, дернуть опубликованную ручку и увидеть результат.
6. Portfolio — портфель API-проектов.
Потому что в большой компании контракт не один.
Есть подразделения, команды, проекты, разные API, разные владельцы.
И тут появилась еще одна мысль:
если контрактов много, нужно видеть не только версию и hash.
Нужно видеть организационную карту:
подразделение -> команда -> проект -> API -> операция -> поле.
И желательно, чтобы описание ручки и поля жили рядом с кодом, а не в отдельной забытой вики.
Так в проекте появились annotations — аннотации, decorators/comments — декораторы и комментарии рядом с операциями.
В следующем посте расскажу, как это превращает API-каталог из "кладбища Swagger" в живой инструмент для команд.