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 ServisiFaydaları
- 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.
İlgili Web Mimarisi soruları
- SSR, SSG ve CSR arasındaki farklar nelerdir?
- Monorepo nedir? Avantajları, dezavantajları ve araçları nelerdir?
- MVC mimarisi nedir? Modern web uygulamalarında nasıl karşılık bulur?
- Bir kullanıcı girişinin uçtan uca akışını (frontend'den veritabanına) anlatın.
- Büyük dosya yükleme akışını nasıl tasarlarsınız? Presigned URL nedir?
- WebSocket, Server-Sent Events (SSE) ve polling arasındaki farklar nelerdir?
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.