1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

BFFをとりあえず概要だけまとめてみた

Posted at

現職でNext.jsを使って開発してるんですが、最初はSPAで作ってからBFF化させるという計画らしく、そもそもBFFって言葉しか知らなかったので、とりあえず概要だけまとめてみた。

そもそもBFFとは

Backend for Frontendの略
APIサーバがビジネスのドメインロジック部分を担当するのに対して、BFFはあくまでユーザーインタフェースをサポートするサーバである。なので、開発はフロントエンドエンジニアが行う。

フロントエンド開発において「複数のAPIをまとめる(下図参照)」「サーバサイドレンダリングを行う」などが求められる機会でBFFは有効。

従来の設計(フロントから直接APIを叩く)

Front-end ⇄ Back-end

BFFの設計(BFFがバックエンドをラップするとか、吸収するとかって言います)

Front-end ⇄ BFF ⇄ Back-end


news022_02.jpg

BFFのメリット

パフォーマンスの改善。
クライアントから複数のAPIを叩くと大量のリクエストをすることになります。BFFでAPIをひとまとめにする事ができれば、クライアントからのリクエストは1回になるので簡単。
またクライアントで欲しい形でデータを返してくれるのでクライアント側でデータの操作がなくなるので、コードがシンプルになる。

BFFのデメリット

BFFも一つのマイクロサービスなので、 BFF自体の開発コストが当然かかってしまう。サーバーにデプロイしメンテナンスも必要。

採用する技術に何がある?

・Next.jsであれば標準のAPI Routing機能を使う(Front, BFFをまとめて開発できる)
・Nest.jsを使う
・AWS AppSyncを使う
など

ちなみに必ずしもGraphQLである必要はないみたいです。REST APIでもOK。

とりあえずは概要だけまとめました、これを機に実際にトライしてみようとおもいます。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?