BFF 【Backend For Frontend】

概要

BFF(Backend For Frontend)とは、Webアプリケーション設計パターンの一つで、バックエンド(サーバ)側にフロントエンド(クライアント)とのやり取りに特化したプログラムを用意するもの。バックエンドマイクロサービスに分割する際に用いることが多い。

BFFはバックエンド側でフロントエンド通信する唯一アプリケーションであり、原則としてフロントエンド一つにつき一つのBFFが置かれる。BFFはフロントエンドの要求に応じてバックエンド側のサービスデータを呼び出し、担当のフロントエンドに適した状態に整理して返却する。

例えば、一つのWebアプリケーションWebブラウザ版とスマホアプリ版がある場合、ブラウザ用のBFFとアプリ用のBFFを用意し、バックエンド側の機能やデータをそれぞれに適した形式に整理して応答する。フロントエンドバックエンドの仲介役として機能する。

背景

近年のWebアプリケーション開発では、フロントエンド側はPCスマートフォンタブレット端末などの機器や機種、操作環境などの違いに対応しなければならず、WebブラウザiOSアプリAndroidアプリなど多様なソフトウェア環境にも対応しなければならない。

これを単一の巨大なバックエンドで対応しようとすると、内部の処理が複雑になり、品質や開発効率の低下を招く。異なる操作環境では必要なデータやタイミングも異なることが多く、環境ごとにそれぞれ別のAPIを用意するなどの対応が必要になる場合もる。

また、バックエンド側では全体を一つの巨大なアプリケーションにするのではなく、機能毎に独立性の高い「マイクロサービス」(microservice)に分割し、Web APIなどで連携する方式が広まっている。その場合にはフロントエンドとバックエンドサービスの「組み合わせ爆発」の問題に直面することになる。

利点・欠点

フロントエンドバックエンドに間にBFFという中間層を挟むことで、単一バックエンドのように巨大で複雑なバックエンドを抱える必要がなくなり、各BFFは担当のフロントエンドの要求や仕様に合わせてデータや機能を提供するだけのシンプルな実装とすることができる。

バックエンド側が多数のサービスに分かれている場合も、それらの呼び出しやデータの統合はBFFが担当し、フロントエンド側はユーザーインターフェースに注力するという役割分担が進む。BFFと各サービスサーバ側に実装されるため、フロントエンドと直接通信するより連携の自由度が高い点も副次的な利点となる。

一方、フロントエンドバックエンドに加えてBFFも追加で開発する必要があるため、その分のコストや工数は増大する。特に、フロントエンドの変更にもバックエンドの変更にも追従しなければならないため、修正とデプロイの頻度は高くなる。また、各BFFの機能は主にバックエンドの呼び出し部などが重複するため、コード冗長化しやすい。こうした欠点とのトレードオフで利点が勝る状況で導入すべき設計と言える。

(2024.9.7更新)

他の辞典による解説 (外部サイト)

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。
ホーム画面への追加方法
1.ブラウザの 共有ボタンのアイコン 共有ボタンをタップ
2.メニューの「ホーム画面に追加」をタップ
閉じる