BFF(Backends for Frontends)の目的と役割
BFF(Backends for Frontends)が必要となる前提に、マイクロサービスアーキテクチャの普及がある。マイクロサービス化すると、フロントエンドに必要なデータを集めるためのAPI呼び出し回数が増加して描画パフォーマンスが悪化する。また、回数が増えればエラー時の対応も増えるので複雑度も上がる。運用していくにつれて各サービスに変更が発生するけれど、それらが全てフロントエンドに集積することになる。
BFFはこういった問題を解決する。セッションレポート「Backends for Frontendsこそサーバーレスで楽をしよう!!~本来の目的に集中するために~」を見てBFFについて学習したことまとめによると
- API合成、リクエスト集約
- プロトコル変換
- クライアント最適化(画像のリサイズ等)
- エッジ機能(キャッシュ、セッション管理、o11y)
- サーバサイドレンダリング(SSR)
2025年ではSSRよりもReact Server Components対応が求められると思う。
逆に、これら以上のことはバックエンドで行う方が良い。例えばビジネスロジックはBFFには持たせない。そうするとレイヤーが薄くなるので、各デバイス向けにエンドポイントを用意してもメンテナンスコストはそれほど増えない。