🔥

Тред (Владимир Ульянов)


Доброе утро, Россия. И мы начинаем новый день. Сегодня будем говорить про BFF, и начнем с простого опроса. Bспользуете ли вы BFF?
Итак, пока идет опрос, расскажу пару интересных фактов, когда стоит использовать BFF. twitter.com/jsunderhood/st…

Первый, и наверное, наиболее популярный вариант - получать данные с реального бэкенда, приводить их к удобному виду, выдавать типизированный ответ.

Но - он не единственный. Можно, например, уменьшить нагрузку на сервис авторизации, потери на передаче данных через интернет. Делается это путем того, что один запрос на BFF делает один запрос аутентификации и несколько запросов к сервисам.

Еще вариант - вы можете научить его отдавать данные не из бекенда, а из моков / сгенерированные данные. Это позволит вам упростить реализацию без имплементации со стороны реального бэкенда, а так же продолжить разработку при проблемах в дев-среде.

А еще можно вынести в него часть бизнес-логики с клиента, и получить более тонкий клиент, что тоже положительно скажется на производительности.

Дополнительный бонус - вы получаете один протокол для общения с клиентом, независимо от того, по каким протоколам работают ваши сервисы.

Так же, при потребности, берет на себя роль service discovery. То есть, для клиента останется ровно один сервис, с которым он общается.

Поскольку BFF зачастую является stateless приложением - он легко горизонтально масштабируется.

Есть и некоторые недостатки у этого подхода: однозначно дополнительный слой ведет к увеличению сложности приложения в целом незначительно увеличивается время ответа из-за доп. прослойки (но не всегда)