BFF(Back-end For Front-end) Nedir ?

Merhaba arkadaşlar,bu makalemde BFF yani Backend For Frontend’den bahsedeceğim.

Nedir bu BFF ?

Örnek bir senaryo ile açıklamaya çalışacağım.

Bu senaryonun 3 ana hattı olacaktır.

  • Web UI
  • Mobil App
  • 3rd party applications

Mikro-servis mimarisi ile geliştirdiğimiz bir e-ticaret uygulamamız olsun. Ürün detay sayfamız için bu mimariyi kullanarak geliştirme yapalım.

Peki ürün detay’da yer alacak bilgilerimiz ne olacak ?

  • Ürün ismi, açıklaması, kısa açıklaması vb. (Product Service)
  • Stok Kontrolü (Inventory Service)
  • Fiyat (Price Service)
  • Görüntülenme sayısı (Review Service)
  • Ürün yorumları (Comment Service) vb…

Gördüğünüz gibi ürün detay sayfamız için ufak bir senaryo’da bile 5 mikroservis ile iletişim halinde oluyoruz.

Burada aşağıdaki gibi sorunlar bizi bekleyecektir.

  • Farklı client’lar farklı data bekleyecektir. Yani ürün detay sayfamız için tarayıcıda açılan uygulamamız mobile app’deki ürün detay sayfamıza göre daha ayrıntılı olacaktır.
  • Aynı şekilde network performansı da tarayıcı ve mobile app için değişkenlik gösterecektir.

Peki bu ve benzeri sorunları nasıl çözebiliriz ?

2 farklı yoldan sorunumuzu çözebiliriz.

Api-Gateway:

Tüm client isteklerini tek bir noktadan yürütmemizi sağlar. Gateway gelen isteği tanımlanan yapıya göre ilgili mikroservise iletir.

Api-Gateway’in Data Aggregator özelliği de BFF yapısına benzer şekilde çalışmaktadır.

BFF:

Her client için ayrı bir api-gateway tanımlanmasını konu alır. Yani yukarıdaki 3 durum için (web-ui,mobile-app,3rd app) 3 farklı BFF ile sorunlarımızı çözümlemeye çalışan pattern’e denir.

Her client için ayrı bir BFF Api oluşturarak yukarıda bahsettiğimiz sorunlara çözüm getiriyoruz. Aşağıdaki resimde örnek senaryomuzun resme dökülmüş halini görebilirsiniz.

Image for post
Image for post

BFF’in avantajlarından bahsetmek gerekirse;

  • Her client için uygun api’yi sağlar.
  • Olası problemlerin yönetimini kolaylaştırır.
  • Her client için mikroservisleri bölümlere ayırır.
  • Business logic’i mikroservislerden alarak tek bir nokta üzerine almamızı sağlar.

BFF’in dezavantajlarından bahsetmek gerekirse;

  • Uygulama sayısının artmasıyla birlikte bakım ve operasyon maliyetlerinin artması
  • Mimari karmaşıklığın artması
  • Eklenecek ayrı bir katmanın ağ isteklerinde gecikme yaratma ihtimali
  • BFF’lerde kod tekrarlarının yapılma ihtimali

BFF’in ne olduğu ile ilgili temel düzeyde bilgi vermeye çalıştım.

Faydalı olması dileğiyle.İyi çalışmalar.

Kaynaklar:

Senior Software Developer

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store