BFF vs API Gateway: Perbedaan dan Kapan Menggunakannya

BFF vs API gateway, dijelaskan: BFF membentuk data sesuai kebutuhan frontend; sebuah gateway memusatkan autentikasi, perutean, dan pembatasan laju. Kapan menggunakan salah satu, keduanya, atau tidak sama sekali.

Ashley Innocent

Ashley Innocent

2 July 2026

BFF vs API Gateway: Perbedaan dan Kapan Menggunakannya

Apidog untuk Perusahaan

Penerapan On-Premises

SSO & RBAC

Sesuai SOC 2

Jelajahi Apidog Enterprise

“BFF vs API Gateway” adalah salah satu perbandingan yang paling membingungkan dalam arsitektur layanan mikro (microservices). Kedua pola ini terlihat serupa pada diagram. Keduanya berada di depan layanan Anda. Keduanya menerima permintaan klien dan meneruskannya ke backend. Jadi, tim berasumsi bahwa keduanya adalah pilihan yang bersaing, memilih salah satu, dan akhirnya menjejali tanggung jawab yang salah ke dalamnya.

Keduanya bukanlah pesaing. Backend for Frontend (BFF) dan API gateway menyelesaikan masalah yang berbeda, dimiliki oleh tim yang berbeda, dan sangat sering berjalan bersama dalam sistem yang sama. BFF berada di belakang atau di samping gateway, bukan menggantikannya.

Panduan ini menarik garis dengan jelas. Anda akan mempelajari apa sebenarnya masing-masing pola, di mana keduanya tumpang tindih, kapan menggunakan salah satu atau keduanya, dan kesalahan yang timbul karena mengaburkan keduanya. Sepanjang panduan ini, kontrak API adalah hal yang konstan: apakah permintaan mengalir melalui gateway, BFF, atau keduanya, setiap lapisan mengekspos API yang masih harus Anda rancang, uji, mock, dan dokumentasikan.

Apa Itu API Gateway?

Sebuah API gateway adalah titik masuk terpusat yang berada di antara klien dan layanan backend Anda. Setiap permintaan masuk melalui gateway, yang menerapkan serangkaian perhatian lintas-fungsi (cross-cutting concerns) yang konsisten sebelum meneruskan panggilan.

Perhatian-perhatian tersebut sama untuk setiap klien dan setiap layanan:

Ciri khas gateway adalah bersifat umum (general purpose) dan dimiliki secara terpusat. Tim platform atau infrastruktur menjalankannya, dan melayani semua klien secara setara. Tidak peduli apakah pemanggilnya adalah aplikasi seluler, SPA web, atau integrasi mitra; gateway menerapkan kebijakan yang sama untuk semua orang.

Hal ini menjadikan gateway sebagai rumah alami untuk aturan di seluruh organisasi. Jika Anda ingin setiap permintaan diautentikasi dengan cara yang sama, atau setiap API dibatasi lajunya secara konsisten, gateway akan menegakkannya tanpa setiap layanan harus mengimplementasikan ulang logikanya. Untuk melihat perbedaannya dari tooling platform yang lebih luas, lihat manajemen API vs API gateway.

Apa Itu Backend for Frontend (BFF)?

Backend for Frontend, yang diperkenalkan oleh Sam Newman, membalik orientasi. Alih-alih satu backend serbaguna yang melayani setiap klien, Anda membangun satu backend per pengalaman pengguna. Aplikasi web mendapatkan BFF web. Aplikasi seluler mendapatkan BFF seluler. Setiap BFF disesuaikan persis untuk satu frontend. Pola ini tumbuh dari pekerjaan layanan mikro (microservices), di mana satu backend bersama yang melayani banyak klien menjadi jenis hambatan yang sama seperti monolith.

Aturan praktis Newman adalah “satu pengalaman, satu BFF.” Frontend yang sangat berbeda mendapatkan BFF-nya sendiri; yang serupa (aplikasi iOS dan Android yang dikelola oleh tim yang sama) dapat berbagi satu.

Ciri khas di sini adalah kepemilikan dan bentuk. BFF “terikat erat dengan pengalaman pengguna tertentu, dan biasanya akan dikelola oleh tim yang sama dengan antarmuka pengguna,” menurut Newman. Tim frontend memiliki BFF-nya. Mereka mengembangkan klien dan backend-nya secara bersamaan, tanpa menunggu tim backend terpisah untuk menyetujui setiap perubahan.

Apa sebenarnya yang dilakukan BFF? Ia membentuk data untuk satu klien:

BFF adalah semacam agregator API dengan kepribadian: ia menyusun panggilan downstream, tetapi selalu untuk melayani satu frontend tertentu daripada sebagai lapisan netral yang dibagikan.

Di Mana BFF dan API Gateway Tumpang Tindih

Kebingungan ini dapat dimaklumi karena kedua pola ini berbagi perilaku permukaan. Keduanya menyadap permintaan klien. Keduanya dapat merutekan ke backend. Keduanya dapat memanggil beberapa layanan dan menggabungkan hasilnya. Diagram salah satunya terlihat seperti kotak di antara klien dan layanan.

Tumpang tindihnya nyata tetapi dangkal. Perbedaannya terletak pada tujuan dan kepemilikan:

Panduan Microsoft sendiri lugas tentang pekerjaan mana yang harus ditempatkan di mana. Fitur lintas-fungsi seperti pemantauan, otorisasi, dan pembatasan laju harus diabstraksikan dari BFF dan ditangani secara terpisah oleh pola gaya gateway. BFF seharusnya hanya menampung logika khusus klien. Tempatkan autentikasi dan pembatasan (throttling) di BFF dan Anda baru saja membangun kembali setengah dari gateway, dengan buruk, dan Anda harus melakukannya lagi di setiap BFF yang Anda tulis.

Jadi, batasan praktisnya adalah ini: jika suatu tanggung jawab sama untuk setiap klien, itu milik gateway. Jika berubah per frontend, itu milik BFF.

BFF dan API Gateway Bekerja Bersama

Dalam sistem layanan mikro yang nyata, Anda jarang memilih salah satu. Anda menjalankan keduanya, berlapis. Gateway berada di tepi. BFF berada di belakangnya.

Alur permintaan tipikal terlihat seperti ini:

  1. Klien seluler mengirimkan permintaan dengan token autentikasinya.
  2. **API gateway** memvalidasi token, memberlakukan batas laju, mencatat permintaan untuk observabilitas, lalu merutekannya ke BFF seluler.
  3. **BFF seluler** memanggil layanan produk, layanan inventaris, dan layanan harga, menggabungkan hasilnya, memangkas payload sesuai kebutuhan layar seluler, dan mengembalikan satu respons.
  4. Gateway mengalirkan respons kembali ke klien.

Arsitektur referensi Microsoft untuk pola ini melakukan hal itu: API management gateway menangani otorisasi, pemantauan, caching, dan routing, kemudian meneruskan ke layanan BFF khusus klien yang berjalan sebagai fungsi tanpa server (serverless functions), yang memanggil layanan mikro yang mendasarinya.

Setiap lapisan melakukan apa yang terbaik. Gateway memiliki kebijakan yang harus seragam. BFF memiliki bentuk yang harus spesifik. Tim frontend mengirimkan perubahan ke BFF-nya tanpa menyentuh konfigurasi gateway, dan tim platform memperketat batas laju tanpa harus melakukan redeploy BFF apa pun.

Hubungan pelapisan ini mirip dengan bagaimana gateway hidup berdampingan dengan infrastruktur lain daripada menggantikannya. Gateway bukanlah penyeimbang beban (load balancer) (API gateway vs load balancer) dan juga bukan service mesh (service mesh vs API gateway); masing-masing menangani lapisan yang berbeda dari jalur permintaan, dan BFF hanyalah satu lapisan berbeda lainnya. Ini adalah prinsip yang sama di balik konektivitas berbasis API (API-led connectivity): berikan setiap lapisan tugas yang jelas dan biarkan ia melakukan itu saja.

Tabel Keputusan: BFF vs API Gateway

Pertanyaan API Gateway BFF
Siapa pemiliknya? Tim platform / infrastruktur Tim frontend yang mengonsumsinya
Melayani siapa? Semua klien, secara seragam Satu frontend spesifik
Tugas utama Perhatian lintas-fungsi: autentikasi, pembatasan laju, routing, observabilitas Agregasi dan pembentukan data khusus klien
Berapa banyak yang Anda jalankan? Biasanya satu (per edge) Satu per pengalaman pengguna yang berbeda
Kopling Longgar, agnostik klien Ketat, khusus klien berdasarkan desain
Frekuensi perubahan Stabil, diatur oleh platform Cepat, mengikuti roadmap frontend
Termasuk di dalamnya Apa pun yang identik untuk setiap klien Apa pun yang unik untuk satu klien

Bacalah ini sebagai pertanyaan routing untuk tanggung jawab. Yang sama untuk semua orang masuk ke gateway. Yang berbeda per frontend masuk ke BFF. Ketika suatu tanggung jawab adalah keduanya (Anda menginginkan autentikasi pusat tetapi juga pembentukan payload per klien), itu adalah sinyal Anda untuk menjalankan kedua lapisan, bukan memilih satu sisi.

Kapan Menggunakan yang Mana

Gunakan API gateway ketika Anda memiliki beberapa layanan dan membutuhkan satu tempat yang konsisten untuk menerapkan autentikasi, pembatasan laju, dan routing. Hampir setiap sistem layanan mikro mendapat manfaat dari ini. Jika Anda memiliki lebih dari segelintir layanan yang diekspos ke klien, Anda menginginkan gateway sebelum hal lain.

Gunakan BFF ketika klien yang berbeda memiliki kebutuhan yang berbeda secara signifikan dari backend yang sama, dan API serbaguna yang dibagikan telah menjadi hambatan. Pemicu umum, berdasarkan panduan Microsoft:

Lewati BFF ketika semua antarmuka Anda membuat permintaan yang sama atau serupa, atau hanya satu antarmuka yang berkomunikasi dengan backend. BFF menambah satu langkah jaringan (network hop), lebih banyak layanan untuk di-deploy, dan kemungkinan beberapa duplikasi kode di antara BFF. Jika satu API bersama melayani setiap klien dengan baik, BFF adalah beban tambahan yang tidak Anda butuhkan. Microsoft mencatat bahwa lapisan GraphQL dengan resolver per frontend juga dapat menghilangkan kebutuhan akan BFF terpisah, karena klien meminta bidang yang persis mereka inginkan.

Gunakan keduanya ketika Anda menjalankan layanan mikro dalam skala besar: gateway untuk kebijakan seragam di tepi, BFF di belakangnya untuk pembentukan khusus klien. Ini adalah kondisi akhir yang umum, bukan yang eksotis.

Kesalahan Umum

Di Mana Apidog Cocok

Apakah sebuah permintaan mengalir melalui API gateway, BFF, atau keduanya, setiap lapisan mengekspos kontrak API. Apidog adalah tempat Anda merancang, menguji, mock, dan mendokumentasikan kontrak-kontrak tersebut. Ia tidak membangun, meng-host, atau menggantikan gateway atau BFF; ia memberi Anda satu ruang kerja untuk permukaan API yang mereka ekspos.

Secara konkret:

Pola yang Anda pilih adalah keputusan arsitektur. Kontrak yang diekspos setiap lapisan adalah konstan. Apidog menangani hal yang konstan, sehingga BFF dan gateway Anda tetap dirancang, diuji, di-mock, dan didokumentasikan tidak peduli bagaimana Anda menghubungkannya.

Coba Apidog gratis untuk merancang dan mock kontrak BFF dan gateway Anda sebelum Anda menulis sebaris kode backend.

tombol

FAQ

Mengembangkan API dengan Apidog

Apidog adalah alat pengembangan API yang membantu Anda mengembangkan API dengan lebih mudah dan efisien.