Доброе утро, Россия. И мы начинаем новый день. Сегодня будем говорить про BFF, и начнем с простого опроса. Bспользуете ли вы BFF?
Итак, пока идет опрос, расскажу пару интересных фактов, когда стоит использовать BFF. twitter.com/jsunderhood/st…
Первый, и наверное, наиболее популярный вариант - получать данные с реального бэкенда, приводить их к удобному виду, выдавать типизированный ответ.
Но - он не единственный. Можно, например, уменьшить нагрузку на сервис авторизации, потери на передаче данных через интернет.
Делается это путем того, что один запрос на BFF делает один запрос аутентификации и несколько запросов к сервисам.
Еще вариант - вы можете научить его отдавать данные не из бекенда, а из моков / сгенерированные данные.
Это позволит вам упростить реализацию без имплементации со стороны реального бэкенда, а так же продолжить разработку при проблемах в дев-среде.
А еще можно вынести в него часть бизнес-логики с клиента, и получить более тонкий клиент, что тоже положительно скажется на производительности.
Дополнительный бонус - вы получаете один протокол для общения с клиентом, независимо от того, по каким протоколам работают ваши сервисы.
Так же, при потребности, берет на себя роль service discovery.
То есть, для клиента останется ровно один сервис, с которым он общается.
Поскольку BFF зачастую является stateless приложением - он легко горизонтально масштабируется.
Есть и некоторые недостатки у этого подхода:
однозначно дополнительный слой ведет к увеличению сложности приложения в целом
незначительно увеличивается время ответа из-за доп. прослойки (но не всегда)