Micro-frontend mimarisi nedir? Ne zaman tercih edilir, dezavantajları nelerdir?

Cevap

Micro-frontend; büyük bir frontend uygulamasını bağımsız geliştirilen ve deploy edilen parçalara bölmektir. Backend'deki mikroservis fikrinin UI karşılığıdır; asıl çözdüğü problem teknik değil organizasyoneldir (çok sayıda ekip, tek monolit).

Entegrasyon yöntemleri

YöntemAçıklama
Build-time (npm paketi)Basit ama bağımsız deploy yok
Module Federation (webpack/Rspack, Vite eklentisi)Runtime'da başka uygulamanın modülünü yükler, paylaşılan bağımlılıklar
single-spa / route bazlıHer route farklı uygulama
Web ComponentsFramework bağımsız sınır
iframeEn güçlü izolasyon, ama UX/performans/SEO sorunları
Sunucu tarafı kompozisyon (edge/SSI)HTML parçalarını sunucuda birleştirme

Avantajları

  • Ekipler bağımsız deploy eder, farklı release döngüleri olur.
  • Eski bir kod tabanını parça parça yeni teknolojiye taşımak (strangler pattern).

Dezavantajları

  • Aynı kütüphanenin birden fazla kopyası yüklenebilir (React iki kez yüklenirse hook'lar bozulur); shared ve singleton ayarı gerekir.
  • Tutarsız UX, ortak design system zorunlu hale gelir.
  • Uygulamalar arası iletişim (custom event, URL, ortak küçük store) ve versiyon uyumu karmaşıklaşır.
  • Toplam bundle boyutu ve debug/test zorluğu artar.
// Module Federation host config (özet)
new ModuleFederationPlugin({
  name: "shell",
  remotes: { checkout: "checkout@https://cdn.example.com/remoteEntry.js" },
  shared: { react: { singleton: true }, "react-dom": { singleton: true } },
});

Küçük/orta ekipler için genelde iyi modülerleştirilmiş bir monorepo daha doğru seçimdir.

  1. Bir autocomplete (typeahead) arama bileşenini nasıl tasarlarsınız?ZorFrontend Sistem TasarımıFrontend
  2. Bir frontend sistem tasarımı mülakatına nasıl yaklaşırsınız? Hangi adımları izlersiniz?KolayFrontend Sistem TasarımıFrontend
  3. Offline-first çalışan bir web uygulamasını (ör. not alma uygulaması) nasıl tasarlarsınız?ZorFrontend Sistem TasarımıFrontend
  4. Çok dilli (i18n) bir frontend uygulamasını nasıl tasarlarsınız?OrtaFrontend Sistem TasarımıFrontend
  5. Büyük bir React uygulamasında state management mimarisini nasıl kurgularsınız?OrtaFrontend Sistem TasarımıFrontend
  6. Şirket genelinde kullanılacak bir design system / component library nasıl kurarsınız?OrtaFrontend Sistem TasarımıFrontend

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