【びーえふえふ】
BFF(Backend for Frontend) とは?
最終更新:
💡 画面の要求に合わせて、専用のバックエンド層を用意する
特定のフロントエンドの要求に合わせたバックエンド層を用意する設計パターン。画面に必要なデータの集約や整形を担い、その体験に合わせてAPIを変更しやすくする。分け方は端末の数だけでなく、体験や担当チームの違いで考える。
📌 このページのポイント
- Webやモバイルなど、利用体験に合わせたAPI層を置く
- 複数のサービスの呼び出しやデータの整形を取りまとめる
- 同じ体験なら複数クライアントで共有する選択もある
- 運用、コードの重複、追加の通信と障害への対応も増える
BFFは、何のために置くの?
特定の画面や利用体験に合うAPIを用意するためだよ。例えばWebでは詳しい一覧、モバイルでは通信量を抑えた一覧が必要なら、それぞれの要求に合わせてデータをまとめる。必ずWebが多く、モバイルが少なくなるという決まりではないんだ
APIゲートウェイとは何が違う?
データをまとめるだけ?
同じ利用体験や要求なら、共通のBFFにする選択もあるよ。体験が違う場合や、別々のチームが独立して変更したい場合は分ける理由になる。端末やOSの数だけで機械的に決めるものではないんだ
いつでも入れた方がいい?
📖 おまけ:英語の意味
「Backend for Frontend」 = フロントエンドのためのバックエンド
💬 Sam Newmanが2015年の記事で紹介したパターンだよ。その記事はBackend For Frontendという呼び名をPhil Calçadoに帰していて、Newman一人が考案したと断定するものではないんだ