Обновить

Комментарии 1

Согласен, в статье хорошо разобрана одна из сфер, где пригодится BFF. В целом "классическое" его назначение - это SSR / SSG, если проекты клиентские (не внутренние админки в закрытых сетях), контроль CSP (т.к. фронтендерам часто удобнее поддерживать именно там динамические политики, чем лезть в nginx или другой прокси) и изоморфный контроль прав. Вот последнее - это интересная тема, разверну.

Возьмем как раз админку в закрытой сети. Бэк отвечает в целом за авторизацию, плюс есть роли / фича-тогглы и например 100 ручек. Нужна мощная система контроля доступа (например, показ определенного раздела только если есть фича-тоггл, а также гранулярный контроль возможности редактировать/обновлять/удалять/смотреть подразделы). Фронт в любом случае будет это делать if-else для показа элементов, то есть будет обладать 100% информации о том, что где кому доступно. А бэк обладает ограниченной информацией, т.к. часто нужно строить граф зависимостей фича-тогглов (например, раздел "продукты" тянет 10 ручек словарей, ручку авто-анализа, вывода таблицы, редактирования-удаления, стейт-машин и еще несколько смежных). Фронт уже имеет этот граф, и может безошибочно сказать "вот эти 10 ручек должны быть доступны, если включен фича-тоггл просмотр продуктов".

Поэтому в BFF просто можно взять готовый граф из фронта, и отдавать 403 сразу из node.js вместо проксирования в бэк. А поддерживать это все и синхронизировать в реальном бэке - "черная дыра" по ресурсам и потенциальным багам + замедление релизов и усложнение тестирования. Тут BFF для гранулярного контроля выступает отличным ускорителем разработки и достаточной защитой от несанкционированного доступа, тем более что при продуманной архитектуре нужно ровно 0 изменений в BFF - при изменении логики все подтянется автоматически.

Есть и множество более частных применений (например вебсокет-прослойка или SSE), и описанная в статье "подготовка и оптимизация данных под конкретного потребителя" - тоже очень валидный кейс. Особенно BFF помогает, когда узкое место - это количество/качество бэк-команды и она не успевает за фронтом, тогда можно временно "набросать для показа" на node (либо полноценно с интеграцией базы, либо на моках). Бизнес будет доволен, инвестиции будут получены, полноценный бэк - подтянется в своем ритме.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации