⚡ÖZET VE TEKNİK CEVAP
Büyük kurumsal web uygulamalarında, devasa bir önyüz monolitini Webpack 5 Module Federation veya Single-SPA ile bağımsız dağıtılan Mikro-Önyüzlere (MFE) bölmek takımlara otonom canlıya çıkma özgürlüğü sağlar. Ancak katı versiyon mutabakat kuralları konulmadığında takımların bağımlılıkları zamanla kayar (dependency drift): A Takımı React 19 ile canlıya çıkarken, B Takımı hala React 18 kullanır. Ana kabuk (Host shell) her iki modülü çalışma anında dinamik yüklediğinde, tarayıcının belleğine iki farklı React motoru enjekte edilir. Bu durum meşhur 'Invalid Hook Call / Multiple React Instances' çökmesini tetikler, ortak React Context yapılarını bozar, JavaScript boyutunu 400 KB şişirir ve bellek sızıntılarına yol açar. Canlı sistemler bunu Katı Module Federation Singleton Kontratları ile çözer: Çekirdek kütüphaneler singleton: true, strictVersion: true, requiredVersion: '^18.3.0' olarak kilitlenir; uyumsuz eski bileşenler ise Shadow-DOM veya iframe kalkanlarına izole edilir.
Mühendislik El Kitabı & Mekanizma
6 Boyutlu Mimari Analiz⚙️1. Temel Çalışma Mekanizması
Mekanizma🎯2. Doğru Kullanım Senaryosu
Kapsam⚠️3. Prodüksiyon Arıza Modları
Kritik Risk📡4. Teşhis ve Telemetri Sinyalleri
Metrikler🛡️5. Önleme ve Mimari Bariyerler
Bariyerler⚖️6. Mimari Ödünleşimler (Trade-offs)
ÖdünleşimVaka İncelemesi (TinyCTO Saha Örneği)
Bir e-ticaret platformu web uygulamasını 4 mikro-önyüze böldü: Başlık, Katalog, Sepet ve Öneriler. Sepet takımı React 18.3'e geçerken Katalog 18.1'de kaldı. Module Federation ayarında singleton: false olduğu için tarayıcı iki React kopyası indirdi. Kullanıcılar 'Sepete Ekle'ye bastığında Sepet context'i ikinci React motorunda izole kaldığı için sepet güncellenmedi. Ekip Webpack ayarını { react: { singleton: true, strictVersion: true, requiredVersion: '^18.0.0' } } olarak güncelledi; 180 KB gereksiz JS silindi ve sepet çöküşleri tamamen çözüldü.
İnteraktif Konsept Alıştırmaları
2 AlıştırmaWebpack Module Federation Mikro-Önyüzlerde 'Invalid Hook Call' hatasına ne sebep olur?
Module Federation ayarlarındaki `strictVersion: true` ne işe yarar?
Mikro-Önyüz (Micro-Frontend) Module Federation: Bağımlılık Kayması ve Single-SPA İzolasyonu — Sıkça Sorulan Sorular
Bir Mikro-Önyüzü Module Federation yerine ne zaman bir iframe içine izole etmelisiniz?
Tamamen eski teknolojileri (React 19 içinde eski Angular 1.x veya jQuery) çalıştırırken ya da katı CSS ve güvenlik izolasyonu gerektiren üçüncü taraf satıcı eklentilerinde.
Module Federation bağımsız mikro-önyüzler arasında durumu (state) nasıl paylaşır?
Singleton olarak paylaşılan durum yönetim kütüphaneleri (Zustand/Redux), tarayıcı özel DOM olayları (`CustomEvent`) veya URL sorgu parametreleri üzerinden.
🤖 AEO & Yapay Zeka Çıkarım Özeti
Temel Gerçekler & İlkeler
- ▸
Module Federation bağımsız önyüz dağıtımı sağlar ancak bağımlılık kayması riski taşır.
- ▸
Tarayıcıda birden fazla React kopyası ölümcül hook çökmelerine ve durum bölünmesine yol açar.
- ▸
Çekirdek kütüphanelerde
singleton: true, strictVersion: trueayarını zorunlu kılın. - ▸
Uyumsuz eski bileşenleri Shadow DOM veya iframe kalkanları içinde izole edin.
Yaygın Yanılgılar
- ✗
Yanılgı: Mikro-önyüzler takımlar arası koordinasyon ihtiyacını tamamen yok eder (Gerçek: Çekirdek framework sürümleri ve tasarım kuralları ortak mutabakat gerektirir).
- ✗
Yanılgı: Module Federation tüm uzak kodları ilk sayfa açılışında indirir (Gerçek: Uzak modüller sadece ilgili sayfa veya bileşen ekrana geldiğinde tembel yüklenir).
Karar Kılavuzu & Önceliklendirme
Çoklu React çalışma anı çakışmalarını ve paket şişmesini önlemek için kurumsal mikro-önyüzlerde katı singleton bağımlılık sözleşmeleri uygulayın.
Doğrulanmış Kaynaklar & Referanslar
- [OFFICIAL_DOCUMENTATION]Module Federation Architecture & Shared Dependency Management— Zack Jackson / Webpack Core Team
