Что такое BFF
Отдельный backend для каждого frontend
BFF (Backend for Frontend)
Backend for Frontend — архитектурный паттерн, при котором для каждого типа клиента (веб, мобильное приложение, IoT) создаётся отдельный backend-слой.
Зачем нужен BFF
| Проблема без BFF | Решение с BFF | |------------------|---------------| | Один API для всех клиентов | Оптимизированный API для каждого клиента | | Избыточные данные в ответах | Только нужные поля для конкретного UI | | Сложная логика на клиенте | Агрегация данных на сервере | | Медленная загрузка на мобильных | Минимизация запросов и данных |
Архитектура
[Web App] → [Web BFF] ↘
→ [Микросервисы]
[Mobile App] → [Mobile BFF] ↗
Когда использовать
- Разные клиенты — веб, iOS, Android с разными потребностями
- Микросервисная архитектура — много сервисов для агрегации
- Оптимизация производительности — минимизация данных для мобильных
- Независимые команды — отдельные команды frontend и backend
Преимущества
- Оптимизация для каждого типа клиента
- Независимое развёртывание
- Изоляция изменений
- Упрощение клиентского кода
Недостатки
- Дублирование логики между BFF
- Увеличение количества сервисов
- Сложность синхронизации изменений