BFF とは
各フロントエンド用の個別バックエンド
BFF(Backend for Frontend)
Backend for Frontend — 各タイプのクライアント(Web、モバイルアプリ、IoT)に対して別々のバックエンド層を作成するアーキテクチャパターン。
BFFが必要な理由
| BFFなしの問題 | BFFでの解決策 | |--------------|--------------| | すべてのクライアントに1つのAPI | 各クライアント向けに最適化されたAPI | | レスポンスのデータ過多 | 特定のUIに必要なフィールドのみ | | クライアント側の複雑なロジック | サーバー側でのデータ集約 | | モバイルでの読み込みが遅い | リクエストとデータの最小化 |
アーキテクチャ
[Webアプリ] → [Web BFF] ↘
→ [マイクロサービス]
[モバイルアプリ] → [Mobile BFF] ↗
使用すべき場面
- 異なるクライアント — 異なるニーズを持つWeb、iOS、Android
- マイクロサービスアーキテクチャ — 集約すべき多くのサービス
- パフォーマンス最適化 — モバイル向けのデータ最小化
- 独立したチーム — 別々のフロントエンドとバックエンドチーム
メリット
- 各クライアントタイプへの最適化
- 独立したデプロイ
- 変更の分離
- クライアントコードの簡素化
デメリット
- BFF間でのロジック重複
- サービス数の増加
- 変更同期の複雑さ