Backend for Frontend (BFF) deseni nedir, ne zaman kullanılır?

Cevap

BFF, her istemci türü (web, mobil, admin paneli) için ayrı, o istemcinin ihtiyacına göre şekillenmiş ince bir backend katmanı oluşturmaktır. Bu katman arka plandaki mikroservisleri çağırır, veriyi birleştirir ve istemciye uygun formatta döner.

Web App    -> Web BFF    -+
                          +-> Kullanıcı Servisi
Mobil App  -> Mobil BFF  -+-> Sipariş Servisi
                          +-> Ödeme Servisi

Faydaları

  • Daha az istek: istemci 5 servise ayrı istek atmak yerine BFF'ye tek istek atar.
  • İstemciye özel veri: mobil için daha küçük yanıt, web için daha zengin.
  • Güvenlik: token'lar sunucuda tutulup tarayıcıya yalnızca HttpOnly session cookie verilebilir. Bu, SPA'larda önerilen bir OAuth yaklaşımıdır.
  • Frontend ekibi kendi BFF'sini sahiplenip bağımsız hareket edebilir.

Dezavantajları

  • Kod tekrarı riski: ortak mantık BFF'lere dağılabilir.
  • Ek bir deploy edilen ve izlenen bileşen, ek ağ adımı.

Ne zaman?

Birden fazla istemci türü ve birden fazla backend servisi olduğunda mantıklıdır. Tek bir web uygulaması ve monolit backend varsa genellikle gereksiz karmaşıklıktır. Next.js Route Handler'ları veya GraphQL gateway pratikte BFF rolü üstlenebilir.

  1. SSR, SSG ve CSR arasındaki farklar nelerdir?OrtaWeb MimarisiFull Stack
  2. Monorepo nedir? Avantajları, dezavantajları ve araçları nelerdir?ZorWeb MimarisiFull Stack
  3. MVC mimarisi nedir? Modern web uygulamalarında nasıl karşılık bulur?KolayWeb MimarisiFull Stack
  4. Bir kullanıcı girişinin uçtan uca akışını (frontend'den veritabanına) anlatın.OrtaWeb MimarisiFull Stack
  5. Büyük dosya yükleme akışını nasıl tasarlarsınız? Presigned URL nedir?ZorWeb MimarisiFull Stack
  6. WebSocket, Server-Sent Events (SSE) ve polling arasındaki farklar nelerdir?OrtaWeb MimarisiFull Stack

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle