{"id":35434,"date":"2025-11-29T17:31:10","date_gmt":"2025-11-29T14:31:10","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/react-router-v7-rsc-ve-module-federation-ile-mikro-frontend-gelistirme-rehberi\/"},"modified":"2025-11-29T17:31:10","modified_gmt":"2025-11-29T14:31:10","slug":"react-router-v7-rsc-ve-module-federation-ile-mikro-frontend-gelistirme-rehberi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/react-router-v7-rsc-ve-module-federation-ile-mikro-frontend-gelistirme-rehberi\/","title":{"rendered":"React Router v7 RSC ve Module Federation ile Mikro Frontend Geli\u015ftirme Rehberi"},"content":{"rendered":"<p><body><\/p>\n<p>B\u00fcy\u00fck \u00f6l\u00e7ekli web uygulamalar\u0131n\u0131 y\u00f6netmek giderek karma\u015f\u0131kla\u015f\u0131yor mu? Ba\u011f\u0131ms\u0131z ekipler, farkl\u0131 teknolojiler ve s\u00fcrekli de\u011fi\u015fen i\u015f gereksinimleri, monolitik mimarilerin s\u0131n\u0131rlar\u0131n\u0131 zorluyor. React Router v7, React Server Components (RSC) ve Module Federation gibi g\u00fc\u00e7l\u00fc ara\u00e7lar\u0131 bir araya getirerek mikro-frontend mimarisine ge\u00e7i\u015f yapmak, uygulama geli\u015ftirmede \u00e7evikli\u011fi, \u00f6l\u00e7eklenebilirli\u011fi ve ekip otonomisini nas\u0131l art\u0131rabilece\u011finizi ke\u015ffedin.<\/p>\n<p>Modern web uygulamalar\u0131, kullan\u0131c\u0131 beklentilerinin artmas\u0131yla birlikte giderek daha karma\u015f\u0131k bir hal almaktad\u0131r. Geleneksel monolitik mimarilerde, t\u00fcm uygulaman\u0131n tek bir kod taban\u0131nda toplanmas\u0131, geli\u015ftirme h\u0131z\u0131n\u0131 d\u00fc\u015f\u00fcrebilir, farkl\u0131 ekipler aras\u0131nda ba\u011f\u0131ml\u0131l\u0131klar\u0131 art\u0131rabilir ve yeni teknolojilerin entegrasyonunu zorla\u015ft\u0131rabilir. \u0130\u015fte tam da bu noktada, mikro-frontend mimarisi devreye giriyor ve adeta bir kurtar\u0131c\u0131 rol\u00fc \u00fcstleniyor.<\/p>\n<p>Mikro-frontend mimarisi, bir web uygulamas\u0131n\u0131 ba\u011f\u0131ms\u0131z olarak geli\u015ftirilebilen, da\u011f\u0131t\u0131labilir ve y\u00f6netilebilir daha k\u00fc\u00e7\u00fck par\u00e7alara (mikro-frontendlere) b\u00f6lme yakla\u015f\u0131m\u0131d\u0131r. Her bir mikro-frontend, uygulaman\u0131n belirli bir i\u015f alan\u0131n\u0131 veya \u00f6zelli\u011fini temsil eder. \u00d6rne\u011fin, bir e-ticaret platformunda \u00fcr\u00fcn listesi, sepet, \u00f6deme ve kullan\u0131c\u0131 profili gibi mod\u00fcller ayr\u0131 mikro-frontendlere b\u00f6l\u00fcnebilir. Bu yakla\u015f\u0131m, mikroservis mimarisinin backend d\u00fcnyas\u0131ndaki faydalar\u0131n\u0131 frontend d\u00fcnyas\u0131na ta\u015f\u0131yarak \u00f6nemli avantajlar sunar.<\/p>\n<p>Bu mimarinin en b\u00fcy\u00fck avantajlar\u0131ndan biri, ba\u011f\u0131ms\u0131z geli\u015ftirme ve da\u011f\u0131t\u0131m yetene\u011fidir. Her ekip, kendi mikro-frontend\u2019i \u00fczerinde izole bir \u015fekilde \u00e7al\u0131\u015fabilir, kendi teknolojisini se\u00e7ebilir ve ba\u011f\u0131ms\u0131z olarak da\u011f\u0131t\u0131m yapabilir. Bu durum, geli\u015ftirme s\u00fcre\u00e7lerini h\u0131zland\u0131r\u0131r, farkl\u0131 ekipler aras\u0131ndaki ba\u011f\u0131ml\u0131l\u0131klar\u0131 azalt\u0131r ve pazara \u00e7\u0131k\u0131\u015f s\u00fcresini k\u0131salt\u0131r. B\u00f6ylece, bir ekibin yapt\u0131\u011f\u0131 de\u011fi\u015fiklikler veya hatalar di\u011fer ekipleri do\u011frudan etkilemez, bu da hata izolasyonunu kolayla\u015ft\u0131r\u0131r.<\/p>\n<p>\u00d6rne\u011fin, b\u00fcy\u00fck bir bankac\u0131l\u0131k uygulamas\u0131n\u0131n mobil bankac\u0131l\u0131k, yat\u0131r\u0131m ve kredi ba\u015fvuru gibi farkl\u0131 departmanlar taraf\u0131ndan geli\u015ftirilen mod\u00fcllerini d\u00fc\u015f\u00fcn\u00fcn. Monolitik bir yap\u0131da, bu departmanlar ortak bir kod taban\u0131nda \u00e7al\u0131\u015ft\u0131\u011f\u0131 i\u00e7in herhangi bir de\u011fi\u015fiklik veya hata, uygulaman\u0131n tamam\u0131n\u0131 etkileyebilir ve da\u011f\u0131t\u0131m s\u00fcre\u00e7lerini geciktirebilir. Ancak mikro-frontend yakla\u015f\u0131m\u0131yla, her departman kendi mod\u00fcl\u00fcn\u00fc ayr\u0131 bir mikro-frontend olarak geli\u015ftirip da\u011f\u0131tabilir. Bu sayede, yat\u0131r\u0131m departman\u0131 yeni bir \u00f6zellik yay\u0131nlarken, mobil bankac\u0131l\u0131k mod\u00fcl\u00fc kesintisiz bir \u015fekilde \u00e7al\u0131\u015fmaya devam edebilir.<\/p>\n<p>Elbette, her mimari yakla\u015f\u0131m gibi mikro-frontendlere ge\u00e7i\u015fin de baz\u0131 zorluklar\u0131 bulunmaktad\u0131r. Artan operasyonel karma\u015f\u0131kl\u0131k, farkl\u0131 mikro-frontendler aras\u0131nda kullan\u0131c\u0131 deneyimi ve tasar\u0131m tutarl\u0131l\u0131\u011f\u0131n\u0131 sa\u011flama ihtiyac\u0131, ortak bir altyap\u0131 ve ileti\u015fim stratejisi belirleme gibi konular dikkatli planlama gerektirir. Ancak do\u011fru ara\u00e7lar ve stratejilerle, bu zorluklar\u0131n \u00fcstesinden gelmek ve uzun vadede s\u00fcrd\u00fcr\u00fclebilir, \u00f6l\u00e7eklenebilir uygulamalar olu\u015fturmak m\u00fcmk\u00fcnd\u00fcr. \u0130\u015fte bu noktada React Router v7, React Server Components ve Module Federation gibi modern web teknolojileri g\u00fc\u00e7l\u00fc \u00e7\u00f6z\u00fcmler sunmaktad\u0131r.<\/p>\n<h2>React Router v7, React Server Components (RSC) ve Modern Web Uygulamalar\u0131: Bu G\u00fc\u00e7l\u00fc Kombinasyon Ne Sunar?<\/h2>\n<p>Web geli\u015ftirme d\u00fcnyas\u0131 s\u00fcrekli bir evrim i\u00e7indedir ve bu evrim, kullan\u0131c\u0131 deneyimini ve uygulama performans\u0131n\u0131 en \u00fcst d\u00fczeye \u00e7\u0131karmay\u0131 hedefler. Bu hedefe ula\u015fmada React Router v7, React Server Components (RSC) ve modern web paketleme ara\u00e7lar\u0131 \u00f6nemli bir \u00fc\u00e7l\u00fc olu\u015fturur. Peki, bu kombinasyon mikro-frontend mimarilerine nas\u0131l bir de\u011fer kat\u0131yor ve uygulamalar\u0131m\u0131z\u0131 nas\u0131l daha verimli hale getiriyor?<\/p>\n<p>React Router, React uygulamalar\u0131nda y\u00f6nlendirme i\u015flemlerini y\u00f6netmek i\u00e7in vazge\u00e7ilmez bir k\u00fct\u00fcphanedir. React Router v7 ile birlikte gelen yenilikler, \u00f6zellikle daha sade bir API, performans iyile\u015ftirmeleri ve React&#8217;\u0131n en yeni \u00f6zellikleriyle uyum, y\u00f6nlendirme deneyimini \u00e7ok daha ak\u0131c\u0131 hale getiriyor. Mikro-frontend d\u00fcnyas\u0131nda, farkl\u0131 mikro-frontend&#8217;lerin kendi rotalar\u0131na sahip olmas\u0131 veya ana uygulaman\u0131n bu mikro-frontend&#8217;ler aras\u0131ndaki ge\u00e7i\u015fleri y\u00f6netmesi gerekti\u011finde React Router v7, esnek ve g\u00fc\u00e7l\u00fc bir \u00e7\u00f6z\u00fcm sunar. \u00d6rne\u011fin, bir e-ticaret uygulamas\u0131nda &#8220;\/\u00fcr\u00fcnler&#8221; rotas\u0131 \u00fcr\u00fcn listesi mikro-frontend&#8217;ine, &#8220;\/sepet&#8221; rotas\u0131 ise sepet mikro-frontend&#8217;ine y\u00f6nlendirilebilir. React Router, bu ge\u00e7i\u015fleri sorunsuz bir \u015fekilde y\u00f6neterek kullan\u0131c\u0131ya kesintisiz bir deneyim sunar.<\/p>\n<p>React Server Components (RSC) ise React ekosistemine getirilen en \u00e7\u0131\u011f\u0131r a\u00e7\u0131c\u0131 yeniliklerden biridir. RSC, client (taray\u0131c\u0131) taraf\u0131nda de\u011fil, sunucu taraf\u0131nda render edilen bile\u015fenlerdir. Bu sayede, sunucu taraf\u0131nda veritaban\u0131 sorgular\u0131 yapabilir, dosya sistemine eri\u015febilir ve a\u011f\u0131r hesaplama i\u015flemleri ger\u00e7ekle\u015ftirebilirsiniz. Bu yetenek, a\u011f y\u00fck\u00fcn\u00fc \u00f6nemli \u00f6l\u00e7\u00fcde azalt\u0131r, ilk y\u00fckleme s\u00fcresini k\u0131salt\u0131r ve dolay\u0131s\u0131yla uygulama performans\u0131n\u0131 art\u0131r\u0131r. Geleneksel olarak client&#8217;a g\u00f6nderilen b\u00fcy\u00fck JavaScript bundle&#8217;lar\u0131n\u0131n yerini, sunucu taraf\u0131nda i\u015flenmi\u015f ve yaln\u0131zca gerekli etkile\u015fimli client kodu i\u00e7eren daha k\u00fc\u00e7\u00fck paketler al\u0131r. RSC, \u00f6zellikle mikro-frontend&#8217;lerde payla\u015f\u0131lan layout&#8217;lar, statik i\u00e7erik mod\u00fclleri veya kritik ilk render bile\u015fenleri i\u00e7in m\u00fckemmel bir kullan\u0131m senaryosu sunar. Bir haber portal\u0131 uygulamas\u0131nda, ana sayfan\u0131n man\u015fet haberleri gibi s\u0131k g\u00fcncellenen ancak kullan\u0131c\u0131 etkile\u015fimi gerektirmeyen bile\u015fenler RSC olarak olu\u015fturularak, ana uygulaman\u0131n ilk y\u00fcklenme h\u0131z\u0131n\u0131 art\u0131rabilir.<\/p>\n<p>Bu iki teknolojiyi bir araya getirdi\u011fimizde, mikro-frontend uygulamalar\u0131 i\u00e7in inan\u0131lmaz bir potansiyel ortaya \u00e7\u0131kar. React Router v7, farkl\u0131 mikro-frontend&#8217;ler aras\u0131nda ak\u0131c\u0131 ve kontrol edilebilir bir navigasyon sa\u011flarken, RSC&#8217;ler bu mikro-frontend&#8217;lerin performans\u0131n\u0131 temelden iyile\u015ftirir. Sunucu taraf\u0131nda render edilen ve client&#8217;a sadece &#8220;serile\u015ftirilmi\u015f&#8221; HTML\/CSS ve minimal JavaScript g\u00f6nderen RSC&#8217;ler sayesinde, mikro-frontend&#8217;ler daha h\u0131zl\u0131 y\u00fcklenebilir ve daha iyi bir ilk etkile\u015fim (FID) performans\u0131 sunabilir. Bu, \u00f6zellikle farkl\u0131 ekipler taraf\u0131ndan geli\u015ftirilen ve farkl\u0131 performans profillerine sahip olabilecek mikro-frontend&#8217;lerin oldu\u011fu bir senaryoda kritik \u00f6neme sahiptir.<\/p>\n<p>K\u0131sacas\u0131, React Router v7, RSC ile birlikte, mikro-frontend geli\u015ftiricilerine hem esnek bir y\u00f6nlendirme hem de \u00fcst d\u00fczey bir performans optimizasyonu imkan\u0131 sunar. Bu kombinasyon, sadece teknik olarak \u00fcst\u00fcn uygulamalar in\u015fa etmekle kalmaz, ayn\u0131 zamanda son kullan\u0131c\u0131ya daha h\u0131zl\u0131, daha ak\u0131c\u0131 ve daha keyifli bir deneyim sunulmas\u0131n\u0131 sa\u011flar. \u0130\u015fte bu y\u00fczden modern web uygulamalar\u0131 ve \u00f6zellikle mikro-frontend mimarileri i\u00e7in bu \u00fc\u00e7l\u00fcn\u00fcn g\u00fcc\u00fcn\u00fc anlamak ve kullanmak b\u00fcy\u00fck \u00f6nem ta\u015f\u0131maktad\u0131r.<\/p>\n<h3>Module Federation Nedir ve Mikro-Frontendlere Nas\u0131l K\u00f6pr\u00fc Kurar?<\/h3>\n<p>Mikro-frontend mimarisinin temel ta\u015flar\u0131ndan biri, farkl\u0131 mikro-frontend&#8217;lerin birbirleriyle ve ana uygulamayla nas\u0131l ileti\u015fim kurdu\u011fu ve kodlar\u0131n\u0131 nas\u0131l payla\u015ft\u0131\u011f\u0131d\u0131r. Bu sorunu \u00e7\u00f6zmek i\u00e7in geli\u015ftirilen en g\u00fc\u00e7l\u00fc ara\u00e7lardan biri Webpack 5 ile gelen &#8220;Module Federation&#8221; \u00f6zelli\u011fidir. Module Federation, ad\u0131ndan da anla\u015f\u0131laca\u011f\u0131 gibi, farkl\u0131 uygulamalar\u0131n (mod\u00fcllerin) \u00e7al\u0131\u015fma zaman\u0131nda birbirleriyle federasyon kurmas\u0131n\u0131, yani mod\u00fclleri dinamik olarak payla\u015fmas\u0131n\u0131 ve kullanmas\u0131n\u0131 sa\u011flar.<\/p>\n<p>Geleneksel olarak, birden fazla uygulama veya k\u00fct\u00fcphane ayn\u0131 anda kullan\u0131ld\u0131\u011f\u0131nda, her birinin kendi ba\u011f\u0131ml\u0131l\u0131klar\u0131 ve kodlar\u0131 ayr\u0131 ayr\u0131 paketlenir. Bu durum, \u00f6zellikle b\u00fcy\u00fck projelerde, ayn\u0131 ba\u011f\u0131ml\u0131l\u0131klar\u0131n (\u00f6rne\u011fin React veya React Router gibi) birden fazla kopyas\u0131n\u0131n taray\u0131c\u0131ya indirilmesine neden olabilir. Bu da bundle boyutunu art\u0131r\u0131r, y\u00fckleme s\u00fcrelerini uzat\u0131r ve performans d\u00fc\u015f\u00fc\u015flerine yol a\u00e7abilir. Module Federation, bu soruna zarif bir \u00e7\u00f6z\u00fcm getirir.<\/p>\n<p>Module Federation&#8217;\u0131n temel prensibi olduk\u00e7a basittir: Bir uygulama &#8220;host&#8221; g\u00f6revi g\u00f6r\u00fcrken, di\u011fer uygulamalar &#8220;remote&#8221; olarak adland\u0131r\u0131l\u0131r. Remote uygulamalar, belirli mod\u00fcllerini (bile\u015fenler, helper fonksiyonlar\u0131, servisler vb.) &#8220;expose&#8221; eder, yani d\u0131\u015f d\u00fcnyaya a\u00e7ar. Host uygulama ise bu a\u00e7\u0131\u011fa \u00e7\u0131kar\u0131lan mod\u00fclleri &#8220;remote&#8221; olarak tan\u0131mlar ve kendi kodunda sanki lokal bir mod\u00fcl gibi <code>import<\/code> edebilir. En g\u00fczeli de, bu import i\u015flemi \u00e7al\u0131\u015fma zaman\u0131nda, yani uygulama taray\u0131c\u0131da \u00e7al\u0131\u015f\u0131rken ger\u00e7ekle\u015fir. Bu, kod payla\u015f\u0131m\u0131n\u0131 ve entegrasyonu son derece dinamik hale getirir.<\/p>\n<p>Peki, bu mikro-frontendlere nas\u0131l k\u00f6pr\u00fc kurar? Module Federation sayesinde, her bir mikro-frontend (remote), kendi ba\u011f\u0131ms\u0131z geli\u015ftirme ve da\u011f\u0131t\u0131m ortam\u0131nda \u00e7al\u0131\u015fmaya devam ederken, ana uygulama (host) bu mikro-frontend&#8217;leri bir araya getirebilir. \u00d6rne\u011fin, bir e-ticaret sitesinde, \u00dcr\u00fcn Listesi mikro-frontend&#8217;i kendi &#8220;ProductCard&#8221; bile\u015fenini expose edebilir. Ana uygulama veya ba\u015fka bir mikro-frontend, bu &#8220;ProductCard&#8221; bile\u015fenini do\u011frudan kullanabilir. Ayr\u0131ca, React, React Router gibi ortak ba\u011f\u0131ml\u0131l\u0131klar da &#8220;shared&#8221; (payla\u015f\u0131lan) olarak tan\u0131mlanabilir. Bu sayede, taray\u0131c\u0131ya sadece bir kopyas\u0131 indirilir ve t\u00fcm mikro-frontend&#8217;ler bu payla\u015f\u0131lan kopyay\u0131 kullan\u0131r. Bu \u00f6zellik, bundle boyutunu dramatik bir \u015fekilde k\u00fc\u00e7\u00fclt\u00fcr ve uygulamalar aras\u0131 tutarl\u0131l\u0131\u011f\u0131 art\u0131r\u0131r.<\/p>\n<pre><code>\n\/\/ webpack.config.js (Host Uygulamas\u0131)\nconst { ModuleFederationPlugin } = require('webpack').container;\n\nmodule.exports = {\n  \/\/ ... di\u011fer Webpack ayarlar\u0131 ...\n  plugins: [\n    new ModuleFederationPlugin({\n      name: 'hostApp',\n      remotes: {\n        'productsApp': 'productsApp@http:\/\/localhost:3001\/remoteEntry.js',\n        'cartApp': 'cartApp@http:\/\/localhost:3002\/remoteEntry.js',\n      },\n      shared: {\n        react: { singleton: true, requiredVersion: '^18.2.0' },\n        'react-dom': { singleton: true, requiredVersion: '^18.2.0' },\n        'react-router-dom': { singleton: true, requiredVersion: '^6.x.x' },\n      },\n    }),\n  ],\n};\n<\/pre>\n<p><\/code><\/p>\n<pre><code>\n\/\/ webpack.config.js (Remote Uygulamas\u0131 - productsApp)\nconst { ModuleFederationPlugin } = require('webpack').container;\n\nmodule.exports = {\n  \/\/ ... di\u011fer Webpack ayarlar\u0131 ...\n  plugins: [\n    new ModuleFederationPlugin({\n      name: 'productsApp',\n      filename: 'remoteEntry.js',\n      exposes: {\n        '.\/ProductList': '.\/src\/components\/ProductList',\n        '.\/ProductDetail': '.\/src\/components\/ProductDetail',\n      },\n      shared: {\n        react: { singleton: true, requiredVersion: '^18.2.0' },\n        'react-dom': { singleton: true, requiredVersion: '^18.2.0' },\n        'react-router-dom': { singleton: true, requiredVersion: '^6.x.x' },\n      },\n    }),\n  ],\n};\n<\/pre>\n<p><\/code><\/p>\n<p>Yukar\u0131daki \u00f6rneklerde g\u00f6r\u00fcld\u00fc\u011f\u00fc gibi, <code>hostApp<\/code> iki farkl\u0131 remote uygulamay\u0131 (<code>productsApp<\/code>, <code>cartApp<\/code>) kendi i\u00e7ine entegre etmek i\u00e7in yap\u0131land\u0131r\u0131lm\u0131\u015ft\u0131r. Her iki uygulama da React, React DOM ve React Router DOM'u payla\u015f\u0131lan ba\u011f\u0131ml\u0131l\u0131k olarak tan\u0131mlam\u0131\u015f, b\u00f6ylece bu k\u00fct\u00fcphanelerin sadece bir kopyas\u0131n\u0131n y\u00fcklenmesi sa\u011flanm\u0131\u015ft\u0131r. Bu sayede Module Federation, mikro-frontend'ler aras\u0131ndaki entegrasyonu sadece teknik olarak kolayla\u015ft\u0131rmakla kalmaz, ayn\u0131 zamanda performans ve s\u00fcrd\u00fcr\u00fclebilirlik a\u00e7\u0131s\u0131ndan da \u00f6nemli avantajlar sunar.<\/p>\n<h2>Ad\u0131m Ad\u0131m Mikro-Frontend Uygulamas\u0131 Geli\u015ftirme: React Router v7 ve Module Federation ile Entegrasyon Nas\u0131l Yap\u0131l\u0131r?<\/h2>\n<p>\u015eimdiye kadar mikro-frontend mimarisinin, React Router v7'nin, React Server Components'\u0131n ve Module Federation'\u0131n teorik temellerini anlad\u0131k. Art\u0131k bu g\u00fc\u00e7l\u00fc teknolojileri bir araya getirerek ger\u00e7ek bir mikro-frontend uygulamas\u0131 geli\u015ftirmeye ba\u015flayabiliriz. Bu b\u00f6l\u00fcmde, ad\u0131m ad\u0131m bir ana kabuk (host) uygulamas\u0131 ile bir veya daha fazla mikro-frontend (remote) uygulamas\u0131n\u0131 nas\u0131l entegre edece\u011fimizi ve React Router v7 ile bu uygulamalar aras\u0131nda nas\u0131l y\u00f6nlendirme yapaca\u011f\u0131m\u0131z\u0131 \u00f6\u011frenece\u011fiz.<\/p>\n<h3>Ad\u0131m 1: Temel React Projelerini Olu\u015fturma<\/h3>\n<p>\u0130lk olarak, ana kabuk uygulamam\u0131z ve en az bir mikro-frontend uygulamam\u0131z i\u00e7in temel React projeleri olu\u015ftural\u0131m. Bu projeler i\u00e7in Vite veya Create React App kullanabilirsiniz, ancak Webpack yap\u0131land\u0131rmas\u0131n\u0131 manuel olarak yapaca\u011f\u0131m\u0131z i\u00e7in sade bir ba\u015flang\u0131\u00e7 daha faydal\u0131 olabilir.<\/p>\n<pre><code>\n# Ana kabuk uygulamas\u0131 i\u00e7in\nmkdir host-app\ncd host-app\nnpm init -y\nnpm install react react-dom react-router-dom@latest webpack webpack-cli webpack-dev-server html-webpack-plugin babel-loader @babel\/core @babel\/preset-react @babel\/preset-env style-loader css-loader\n\n# Mikro-frontend uygulamas\u0131 i\u00e7in\ncd ..\nmkdir products-app\ncd products-app\nnpm init -y\nnpm install react react-dom react-router-dom@latest webpack webpack-cli webpack-dev-server html-webpack-plugin babel-loader @babel\/core @babel\/preset-react @babel\/preset-env style-loader css-loader\n<\/pre>\n<p><\/code><\/p>\n<h3>Ad\u0131m 2: Webpack ve Module Federation Yap\u0131land\u0131rmas\u0131<\/h3>\n<p>Her iki uygulama i\u00e7in de <code>webpack.config.js<\/code> dosyalar\u0131n\u0131 olu\u015fturup Module Federation eklentisini eklemeliyiz. Host uygulamas\u0131 remote uygulamalar\u0131 tan\u0131mlayacak, remote uygulamas\u0131 ise bile\u015fenlerini expose edecektir.<\/p>\n<p><b>host-app\/webpack.config.js:<\/b><\/p>\n<pre><code>\nconst HtmlWebpackPlugin = require('html-webpack-plugin');\nconst { ModuleFederationPlugin } = require('webpack').container;\nconst path = require('path');\n\nmodule.exports = {\n  entry: '.\/src\/index.js',\n  mode: 'development',\n  devServer: {\n    port: 3000,\n    historyApiFallback: true, \/\/ React Router i\u00e7in gerekli\n  },\n  output: {\n    publicPath: 'auto',\n  },\n  module: {\n    rules: [\n      {\n        test: \/\\.jsx?$\/,\n        loader: 'babel-loader',\n        exclude: \/node_modules\/,\n        options: {\n          presets: ['@babel\/preset-react', '@babel\/preset-env'],\n        },\n      },\n      {\n        test: \/\\.css$\/,\n        use: ['style-loader', 'css-loader'],\n      },\n    ],\n  },\n  plugins: [\n    new ModuleFederationPlugin({\n      name: 'hostApp',\n      remotes: {\n        productsApp: 'productsApp@http:\/\/localhost:3001\/remoteEntry.js',\n      },\n      shared: {\n        react: { singleton: true, requiredVersion: '^18.2.0' },\n        'react-dom': { singleton: true, requiredVersion: '^18.2.0' },\n        'react-router-dom': { singleton: true, requiredVersion: '^6.x.x' },\n      },\n    }),\n    new HtmlWebpackPlugin({\n      template: '.\/public\/index.html',\n    }),\n  ],\n};\n<\/pre>\n<p><\/code><\/p>\n<p><b>products-app\/webpack.config.js:<\/b><\/p>\n<pre><code>\nconst HtmlWebpackPlugin = require('html-webpack-plugin');\nconst { ModuleFederationPlugin } = require('webpack').container;\nconst path = require('path');\n\nmodule.exports = {\n  entry: '.\/src\/index.js',\n  mode: 'development',\n  devServer: {\n    port: 3001,\n    historyApiFallback: true, \/\/ React Router i\u00e7in gerekli\n  },\n  output: {\n    publicPath: 'auto',\n  },\n  module: {\n    rules: [\n      {\n        test: \/\\.jsx?$\/,\n        loader: 'babel-loader',\n        exclude: \/node_modules\/,\n        options: {\n          presets: ['@babel\/preset-react', '@babel\/preset-env'],\n        },\n      },\n      {\n        test: \/\\.css$\/,\n        use: ['style-loader', 'css-loader'],\n      },\n    ],\n  },\n  plugins: [\n    new ModuleFederationPlugin({\n      name: 'productsApp',\n      filename: 'remoteEntry.js',\n      exposes: {\n        '.\/ProductList': '.\/src\/components\/ProductList',\n      },\n      shared: {\n        react: { singleton: true, requiredVersion: '^18.2.0' },\n        'react-dom': { singleton: true, requiredVersion: '^18.2.0' },\n        'react-router-dom': { singleton: true, requiredVersion: '^6.x.x' },\n      },\n    }),\n    new HtmlWebpackPlugin({\n      template: '.\/public\/index.html',\n    }),\n  ],\n};\n<\/pre>\n<p><\/code><\/p>\n<h3>Ad\u0131m 3: React Router v7'nin Host Uygulamas\u0131nda Kurulumu ve Remote Bile\u015fenlerinin Entegrasyonu<\/h3>\n<p>\u015eimdi host uygulamam\u0131zda React Router'\u0131 yap\u0131land\u0131racak ve <code>productsApp<\/code>'ten expose etti\u011fimiz <code>ProductList<\/code> bile\u015fenini dinamik olarak y\u00fckleyece\u011fiz.<\/p>\n<p><b>host-app\/src\/App.js:<\/b><\/p>\n<pre><code>\nimport React, { Suspense } from 'react';\nimport { BrowserRouter, Routes, Route, Link } from 'react-router-dom';\nimport '.\/index.css'; \/\/ Ortak stiller\n\n\/\/ productsApp'ten ProductList bile\u015fenini lazy loading ile y\u00fckl\u00fcyoruz\nconst RemoteProductList = React.lazy(() => import('productsApp\/ProductList'));\n\nfunction App() {\n  return (\n    <BrowserRouter>\n      <nav>\n        <Link to=\"\/\">Anasayfa<\/Link>\n        <Link to=\"\/products\">\u00dcr\u00fcnler<\/Link>\n      <\/nav>\n      <div className=\"container\">\n        <Suspense fallback={<div>Mikro-frontend y\u00fckleniyor...<\/div>}>\n          <Routes>\n            <Route path=\"\/\" element={<h1>Ana Uygulama Anasayfas\u0131<\/h1>} \/>\n            <Route path=\"\/products\" element={<RemoteProductList \/>} \/>\n            {\/* Di\u011fer mikro-frontend rotalar\u0131 buraya eklenebilir *\/}\n          <\/Routes>\n        <\/Suspense>\n      <\/div>\n    <\/BrowserRouter>\n  );\n}\n\nexport default App;\n<\/pre>\n<p><\/code><\/p>\n<p><b>host-app\/src\/index.js:<\/b><\/p>\n<pre><code>\nimport React from 'react';\nimport ReactDOM from 'react-dom\/client';\nimport App from '.\/App';\n\nconst root = ReactDOM.createRoot(document.getElementById('root'));\nroot.render(\n  <React.StrictMode>\n    <App \/>\n  <\/React.StrictMode>\n);\n<\/pre>\n<p><\/code><\/p>\n<p><b>host-app\/public\/index.html:<\/b><\/p>\n<pre><code>\n<!DOCTYPE html><body>\n    <div id=\"root\"><\/div>\n<\/body>\n<\/html>\n<\/pre>\n<p><\/code><\/p>\n<p>Her iki uygulamay\u0131 da ayr\u0131 ayr\u0131 ba\u015flat\u0131n (<code>npm run start<\/code> veya <code>webpack serve --open<\/code>). Host uygulamas\u0131 (localhost:3000) a\u00e7\u0131ld\u0131\u011f\u0131nda, \"\u00dcr\u00fcnler\" linkine t\u0131klayarak <code>productsApp<\/code>'ten gelen <code>ProductList<\/code> bile\u015feninin sorunsuz bir \u015fekilde y\u00fcklendi\u011fini g\u00f6receksiniz. Bu entegrasyon, Module Federation'\u0131n dinamik y\u00fckleme yetene\u011fi ve React Router'\u0131n esnek y\u00f6nlendirme \u00f6zelliklerinin birle\u015fimini sergiler.<\/p>\n<div class=\"expert-tip\">\n  Uzman \u0130pucu: Module Federation ile payla\u015f\u0131lan React, React DOM ve React Router DOM gibi ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131z\u0131 <code>singleton: true<\/code> olarak i\u015faretleyerek, uygulaman\u0131zda sadece bir kopyas\u0131n\u0131n \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olun. Bu, hem bundle boyutunu \u00f6nemli \u00f6l\u00e7\u00fcde k\u00fc\u00e7\u00fclt\u00fcr hem de olas\u0131 versiyon \u00e7ak\u0131\u015fmalar\u0131n\u0131 ve runtime hatalar\u0131n\u0131 engeller. Ayr\u0131ca, <code>requiredVersion<\/code> kullanarak ba\u011f\u0131ml\u0131l\u0131k versiyonlar\u0131n\u0131 daha s\u0131k\u0131 kontrol edebilirsiniz.\n<\/div>\n<p>React Server Components entegrasyonu, bu yap\u0131n\u0131n \u00fczerine in\u015fa edilebilir. \u00d6zellikle Next.js veya benzeri bir framework kullan\u0131ld\u0131\u011f\u0131nda, sunucu taraf\u0131nda render edilen React bile\u015fenleri, mikro-frontendler aras\u0131nda payla\u015f\u0131lan statik i\u00e7erikler veya ilk render edilmesi gereken kritik UI par\u00e7alar\u0131 i\u00e7in kullan\u0131labilir. Bu, mikro-frontend'lerin hem daha h\u0131zl\u0131 y\u00fcklenmesini sa\u011flar hem de genel performans\u0131 art\u0131r\u0131r. \u00d6rne\u011fin, ana navigasyon bar\u0131 veya footer gibi bile\u015fenler bir RSC olarak olu\u015fturulup her mikro-frontend taraf\u0131ndan t\u00fcketilebilir, b\u00f6ylece her sayfa y\u00fcklemesinde bu bile\u015fenler sunucudan stream edilerek client'a daha az JavaScript g\u00f6nderilir.<\/p>\n<h2>Performans ve Kullan\u0131c\u0131 Deneyimi Optimizasyonu: RSC ve Mod\u00fcl Federasyonunun Rol\u00fc<\/h2>\n<p>Web uygulamalar\u0131n\u0131n ba\u015far\u0131s\u0131, b\u00fcy\u00fck \u00f6l\u00e7\u00fcde sunduklar\u0131 performans ve kullan\u0131c\u0131 deneyimiyle do\u011fru orant\u0131l\u0131d\u0131r. \u00d6zellikle mikro-frontend mimarilerinde, birden fazla ba\u011f\u0131ms\u0131z uygulaman\u0131n bir arada \u00e7al\u0131\u015ft\u0131\u011f\u0131 d\u00fc\u015f\u00fcn\u00fcld\u00fc\u011f\u00fcnde, performans optimizasyonu ve tutarl\u0131 bir kullan\u0131c\u0131 deneyimi sa\u011flamak kritik \u00f6neme sahiptir. React Server Components (RSC) ve Module Federation, bu zorluklar\u0131n \u00fcstesinden gelmede geli\u015ftiricilere g\u00fc\u00e7l\u00fc ara\u00e7lar sunar.<\/p>\n<p><b>React Server Components (RSC) ve Lazy Loading:<\/b> RSC'ler, sunucu taraf\u0131nda render edildi\u011fi i\u00e7in, client taraf\u0131na g\u00f6nderilen JavaScript bundle boyutunu \u00f6nemli \u00f6l\u00e7\u00fcde azalt\u0131r. Bu durum, \u00f6zellikle ilk y\u00fckleme s\u00fcresini ve ilk etkile\u015fim gecikmesini (FID) d\u00fc\u015f\u00fcrerek uygulama performans\u0131n\u0131 do\u011frudan etkiler. RSC'ler, veritaban\u0131 sorgular\u0131 veya dosya okuma gibi a\u011f\u0131r i\u015flemleri sunucu taraf\u0131nda yaparak, client'\u0131n sadece minimal, interaktif JavaScript kodunu indirmesini sa\u011flar. Bu sayede, kullan\u0131c\u0131lar bir web sayfas\u0131n\u0131 a\u00e7t\u0131klar\u0131nda i\u00e7eri\u011fi \u00e7ok daha h\u0131zl\u0131 g\u00f6r\u00fcr ve etkile\u015fime ge\u00e7ebilirler.<\/p>\n<p>RSC'lerin bir di\u011fer avantaj\u0131 da \"streaming\" yetene\u011fidir. Sunucu, bile\u015fenleri par\u00e7a par\u00e7a client'a g\u00f6nderebilir, bu da sayfan\u0131n kademeli olarak y\u00fcklenmesini sa\u011flar. \u00d6rne\u011fin, bir mikro-frontend, RSC kullanarak bir \u00fcr\u00fcn listesini dinamik olarak sunucudan alabilir ve bu listeyi lazy loading ile y\u00fckleyebilir. Kullan\u0131c\u0131 sayfan\u0131n \u00fcst k\u0131sm\u0131n\u0131 g\u00f6r\u00fcnt\u00fclerken, listenin geri kalan\u0131 arka planda y\u00fcklenmeye devam eder. Bu da alg\u0131lanan performans\u0131 art\u0131r\u0131r.<\/p>\n<p><b>Module Federation'\u0131n Performans Katk\u0131lar\u0131:<\/b> Module Federation, payla\u015f\u0131lan ba\u011f\u0131ml\u0131l\u0131klar ve kod tekrar\u0131n\u0131 azaltma konusunda m\u00fckemmel bir i\u015f \u00e7\u0131kar\u0131r. Birden fazla mikro-frontend uygulamas\u0131n\u0131n ayn\u0131 React, React DOM veya React Router gibi k\u00fct\u00fcphaneleri kullanmas\u0131 durumunda, Module Federation sayesinde bu k\u00fct\u00fcphanelerin sadece tek bir kopyas\u0131 client'a g\u00f6nderilir. Bu durum, toplam bundle boyutunu ciddi \u015fekilde k\u00fc\u00e7\u00fclt\u00fcr ve a\u011f trafi\u011fini azalt\u0131r. Payla\u015f\u0131lan ba\u011f\u0131ml\u0131l\u0131klar i\u00e7in <code class=\"language-javascript\">singleton: true<\/code> ve <code class=\"language-javascript\">requiredVersion<\/code> gibi ayarlar kullanmak, bu avantaj\u0131 en \u00fcst d\u00fczeye \u00e7\u0131kar\u0131r ve versiyon \u00e7ak\u0131\u015fmalar\u0131n\u0131 \u00f6nler.<\/p>\n<p>Ayr\u0131ca, Module Federation, mikro-frontend'lerin dinamik olarak y\u00fcklenmesine izin verir. Bir mikro-frontend, yaln\u0131zca kullan\u0131c\u0131 ilgili rotaya gitti\u011finde veya o \u00f6zelli\u011fe ihtiya\u00e7 duydu\u011funda y\u00fcklenecek \u015fekilde yap\u0131land\u0131r\u0131labilir. Bu, uygulaman\u0131n ba\u015flang\u0131\u00e7ta gereksiz kodu indirmesini engeller ve daha h\u0131zl\u0131 bir ba\u015flang\u0131\u00e7 deneyimi sunar. \u00d6rne\u011fin, bir \"\u00f6deme\" mikro-frontend'i, kullan\u0131c\u0131 \u00f6deme sayfas\u0131na gelene kadar y\u00fcklenmeyebilir.<\/p>\n<p><b>Kullan\u0131c\u0131 Deneyimi Tutarl\u0131l\u0131\u011f\u0131 ve Mobil Uyumluluk:<\/b> Performans\u0131n yan\u0131 s\u0131ra, mikro-frontend mimarilerinde kullan\u0131c\u0131 deneyimi tutarl\u0131l\u0131\u011f\u0131 da b\u00fcy\u00fck \u00f6nem ta\u015f\u0131r. Farkl\u0131 ekipler taraf\u0131ndan geli\u015ftirilen mikro-frontend'ler, ortak bir tasar\u0131m sistemini ve kullan\u0131c\u0131 aray\u00fcz\u00fc bile\u015fen k\u00fct\u00fcphanesini kullanarak tutarl\u0131 bir g\u00f6r\u00fcn\u00fcm ve his sa\u011flayabilir. Bu payla\u015f\u0131lan bile\u015fen k\u00fct\u00fcphanesi, Module Federation ile t\u00fcm mikro-frontendlere expose edilebilir. \u00d6rne\u011fin, bir \"Button\" veya \"Modal\" bile\u015feni tek bir yerde geli\u015ftirilir ve t\u00fcm mikro-frontendlere dinamik olarak sunulur, bu da hem geli\u015ftirme h\u0131z\u0131n\u0131 art\u0131r\u0131r hem de marka tutarl\u0131l\u0131\u011f\u0131n\u0131 sa\u011flar.<\/p>\n<p>Mobil uyumluluk, g\u00fcn\u00fcm\u00fcz web uygulamalar\u0131 i\u00e7in bir gerekliliktir. Mikro-frontend'ler de duyarl\u0131 tasar\u0131m (responsive design) ilkelerine uygun olarak geli\u015ftirilmelidir. Ortak bir stil rehberi veya CSS framework'\u00fc, t\u00fcm mikro-frontend'lerde tutarl\u0131 bir mobil deneyim sa\u011flamak i\u00e7in kullan\u0131labilir. Yukar\u0131daki CSS \u00f6rne\u011finde oldu\u011fu gibi, medya sorgular\u0131 <code class=\"language-css\">@media (max-width: 768px)<\/code> kullan\u0131larak farkl\u0131 ekran boyutlar\u0131na uyum sa\u011flanabilir. Bu sayede, kullan\u0131c\u0131lar hangi mikro-frontend'i kullan\u0131rlarsa kullans\u0131nlar, cihazlar\u0131na uygun optimize edilmi\u015f bir aray\u00fczle kar\u015f\u0131la\u015f\u0131rlar.<\/p>\n<pre><code>\n\/* \u00d6rnek bir duyarl\u0131 tasar\u0131m bile\u015feni i\u00e7in CSS *\/\n.card-grid {\n  display: grid;\n  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n  gap: 20px;\n  padding: 20px;\n}\n\n.product-card {\n  border: 1px solid #e0e0e0;\n  border-radius: 8px;\n  padding: 15px;\n  background-color: #ffffff;\n  box-shadow: 0 2px 5px rgba(0,0,0,0.05);\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n}\n\n@media (max-width: 600px) {\n  .card-grid {\n    grid-template-columns: 1fr; \/* K\u00fc\u00e7\u00fck ekranlarda tek s\u00fctun *\/\n    padding: 10px;\n  }\n  .product-card {\n    padding: 10px;\n  }\n}\n<\/pre>\n<p><\/code><\/p>\n<p>Sonu\u00e7 olarak, React Server Components ve Module Federation, mikro-frontend mimarisinde performans darbo\u011fazlar\u0131n\u0131 a\u015fmak ve ola\u011fan\u00fcst\u00fc bir kullan\u0131c\u0131 deneyimi sunmak i\u00e7in bir araya gelen g\u00fc\u00e7l\u00fc sinerjilerdir. Do\u011fru kullan\u0131ld\u0131\u011f\u0131nda, bu teknolojiler uygulamalar\u0131n\u0131z\u0131 daha h\u0131zl\u0131, daha verimli ve daha y\u00f6netilebilir hale getirirken, kullan\u0131c\u0131lar\u0131n\u0131z\u0131n da daha memnun olmas\u0131n\u0131 sa\u011flar.<\/p>\n<h2>G\u00fcvenlik, Hata Y\u00f6netimi ve Da\u011f\u0131t\u0131m Stratejileri: Mikro-Frontend Projelerinde Zorluklar\u0131n \u00dcstesinden Gelme<\/h2>\n<p>Mikro-frontend mimarileri, bir\u00e7ok geli\u015ftirme ve \u00f6l\u00e7eklenebilirlik avantaj\u0131 sunarken, beraberinde g\u00fcvenlik, hata y\u00f6netimi ve da\u011f\u0131t\u0131m s\u00fcre\u00e7leri gibi alanlarda yeni zorluklar da getirir. Bir monolitik uygulamada tek bir merkezden y\u00f6netilebilen bu konular, birden fazla ba\u011f\u0131ms\u0131z uygulaman\u0131n oldu\u011fu bir ortamda \u00e7ok daha karma\u015f\u0131k hale gelebilir. Ancak do\u011fru stratejilerle, bu zorluklar\u0131n \u00fcstesinden gelmek ve sa\u011flam, g\u00fcvenli ve s\u00fcrd\u00fcr\u00fclebilir bir mikro-frontend ekosistemi olu\u015fturmak m\u00fcmk\u00fcnd\u00fcr.<\/p>\n<h3>G\u00fcvenlik Stratejileri<\/h3>\n<p>Mikro-frontend mimarisinde g\u00fcvenlik, her bir mikro-frontend'in ve ana uygulaman\u0131n ayr\u0131 ayr\u0131 ele al\u0131nmas\u0131 gereken bir konudur. Temel g\u00fcvenlik \u00f6nlemleri, XSS (Cross-Site Scripting) ve CSRF (Cross-Site Request Forgery) gibi sald\u0131r\u0131lara kar\u015f\u0131 koruma sa\u011flamay\u0131 i\u00e7erir. \u00d6zellikle, dinamik olarak y\u00fcklenen mod\u00fcllerin ve payla\u015f\u0131lan bile\u015fenlerin g\u00fcvenilir kaynaklardan geldi\u011finden emin olmak kritik \u00f6neme sahiptir. Content Security Policy (CSP) headers, bu t\u00fcr riskleri azaltmak i\u00e7in etkili bir ara\u00e7t\u0131r, \u00e7\u00fcnk\u00fc uygulaman\u0131z\u0131n hangi kaynaklardan script, stil veya di\u011fer varl\u0131klar\u0131 y\u00fckleyebilece\u011fini k\u0131s\u0131tlar.<\/p>\n<p>Kimlik do\u011frulama ve yetkilendirme (Authentication & Authorization) i\u015flemleri genellikle ana kabuk uygulamas\u0131 veya payla\u015f\u0131lan bir kimlik y\u00f6netim servisi arac\u0131l\u0131\u011f\u0131yla merkezi olarak y\u00f6netilmelidir. Kullan\u0131c\u0131 bir kez giri\u015f yapt\u0131ktan sonra, bu oturum bilgisi (\u00f6rne\u011fin JWT - JSON Web Token arac\u0131l\u0131\u011f\u0131yla) mikro-frontendlere g\u00fcvenli bir \u015fekilde aktar\u0131lmal\u0131d\u0131r. Her mikro-frontend, bu tokendeki yetkilendirme bilgilerini do\u011frulayarak kendi kaynaklar\u0131na eri\u015fimi kontrol edebilir. Bu sayede, her mikro-frontend kendi g\u00fcvenlik politikalar\u0131n\u0131 uygularken, kullan\u0131c\u0131 deneyimi de kesintisiz kal\u0131r.<\/p>\n<h3>Hata Y\u00f6netimi ve \u0130zleme<\/h3>\n<p>Bir mikro-frontend uygulamas\u0131nda hata ay\u0131klama ve izleme, monolitik bir uygulamaya g\u00f6re daha karma\u015f\u0131kt\u0131r. Bir mikro-frontend'deki hata, di\u011ferlerini etkilemese bile, genel kullan\u0131c\u0131 deneyimini bozabilir. Bu nedenle, kapsaml\u0131 bir hata y\u00f6netimi ve izleme stratejisi hayati \u00f6nem ta\u015f\u0131r.<\/p>\n<ul>\n<li><b>Ortak Hata Yakalama Mekanizmalar\u0131:<\/b> React'in Error Boundaries \u00f6zelli\u011fi, bir mikro-frontend i\u00e7indeki hatalar\u0131 yakalamak ve di\u011fer mikro-frontend'lerin \u00e7al\u0131\u015fmaya devam etmesini sa\u011flamak i\u00e7in kullan\u0131labilir. Ana kabuk uygulamas\u0131, her bir mikro-frontend'i kendi Error Boundary'si i\u00e7ine alarak, bir hata durumunda sadece ilgili b\u00f6l\u00fcm\u00fcn \u00e7\u00f6kmesini sa\u011flayabilir.<\/li>\n<li><b>Merkezi Loglama ve \u0130zleme:<\/b> T\u00fcm mikro-frontend'lerden gelen loglar\u0131 toplayan ve merkezi bir konumda (\u00f6rne\u011fin ELK Stack, Splunk, Datadog) analiz eden bir sistem kurulmal\u0131d\u0131r. Bu, hatalar\u0131n h\u0131zl\u0131 bir \u015fekilde tespit edilmesini, k\u00f6k neden analizi yap\u0131lmas\u0131n\u0131 ve performans darbo\u011fazlar\u0131n\u0131n belirlenmesini sa\u011flar.<\/li>\n<li><b>Hata \u0130zolasyonu ve Geri D\u00f6n\u00fc\u015f:<\/b> Bir mikro-frontend'in \u00e7al\u0131\u015fmaz hale gelmesi durumunda, ana kabuk uygulamas\u0131n\u0131n bu durumu zarif bir \u015fekilde y\u00f6netebilmesi (\u00f6rne\u011fin, kullan\u0131c\u0131ya bilgilendirici bir mesaj g\u00f6sterme veya alternatif bir bile\u015fen render etme) \u00f6nemlidir. Bu, genel uygulama stabilitesini art\u0131r\u0131r.<\/li>\n<\/ul>\n<h3>Da\u011f\u0131t\u0131m (Deployment) Stratejileri<\/h3>\n<p>Mikro-frontend mimarisinin en b\u00fcy\u00fck avantajlar\u0131ndan biri, ba\u011f\u0131ms\u0131z da\u011f\u0131t\u0131m yetene\u011fidir. Her mikro-frontend, kendi CI\/CD (S\u00fcrekli Entegrasyon\/S\u00fcrekli Da\u011f\u0131t\u0131m) boru hatt\u0131na sahip olabilir ve ba\u011f\u0131ms\u0131z olarak da\u011f\u0131t\u0131labilir. Bu, ekiplerin daha h\u0131zl\u0131 yineleme yapmas\u0131na ve pazara \u00e7\u0131k\u0131\u015f s\u00fcrelerini k\u0131saltmas\u0131na olanak tan\u0131r.<\/p>\n<ul>\n<li><b>Ba\u011f\u0131ms\u0131z CI\/CD Boru Hatlar\u0131:<\/b> Her mikro-frontend i\u00e7in ayr\u0131 bir GitHub Actions, GitLab CI veya Jenkins boru hatt\u0131 yap\u0131land\u0131r\u0131lmal\u0131d\u0131r. Bu boru hatlar\u0131, kod de\u011fi\u015fikliklerini otomatik olarak test eder, derler ve \u00fcretim ortam\u0131na da\u011f\u0131t\u0131r.<\/li>\n<li><b>Versiyonlama Stratejileri:<\/b> Payla\u015f\u0131lan mod\u00fcller ve API'ler i\u00e7in dikkatli bir versiyonlama stratejisi belirlemek \u00f6nemlidir. Semantik versiyonlama (SemVer) yayg\u0131n olarak kullan\u0131l\u0131r. Module Federation'da <code>requiredVersion<\/code> kullanarak ba\u011f\u0131ml\u0131l\u0131k versiyon \u00e7ak\u0131\u015fmalar\u0131n\u0131 \u00f6nleyebilirsiniz.<\/li>\n<li><b>A\/B Testi ve Kanarya Da\u011f\u0131t\u0131m\u0131:<\/b> Ba\u011f\u0131ms\u0131z da\u011f\u0131t\u0131m, yeni \u00f6zelliklerin veya de\u011fi\u015fikliklerin k\u00fc\u00e7\u00fck bir kullan\u0131c\u0131 grubuyla test edilmesine olanak tan\u0131r (Kanarya Da\u011f\u0131t\u0131m\u0131). Ba\u015far\u0131l\u0131 olursa, bu de\u011fi\u015fiklikler daha geni\u015f bir kitleye a\u015famal\u0131 olarak sunulabilir. A\/B testi i\u00e7in de farkl\u0131 mikro-frontend versiyonlar\u0131 farkl\u0131 kullan\u0131c\u0131 gruplar\u0131na g\u00f6sterilebilir.<\/li>\n<li><b>CDN Kullan\u0131m\u0131:<\/b> Mikro-frontend'lerin statik varl\u0131klar\u0131 (JavaScript, CSS dosyalar\u0131) bir CDN (\u0130\u00e7erik Da\u011f\u0131t\u0131m A\u011f\u0131) \u00fczerinden sunulmal\u0131d\u0131r. Bu, y\u00fckleme s\u00fcrelerini k\u0131salt\u0131r ve global kullan\u0131c\u0131lar i\u00e7in performans\u0131 art\u0131r\u0131r.<\/li>\n<\/ul>\n<p>Bu stratejilerin dikkatli bir \u015fekilde uygulanmas\u0131, mikro-frontend projelerinin kar\u015f\u0131la\u015ft\u0131\u011f\u0131 g\u00fcvenlik, hata y\u00f6netimi ve da\u011f\u0131t\u0131m zorluklar\u0131n\u0131n \u00fcstesinden gelmenize yard\u0131mc\u0131 olacakt\u0131r. Unutmay\u0131n ki, ba\u015far\u0131l\u0131 bir mikro-frontend mimarisi sadece kodun nas\u0131l b\u00f6l\u00fcnd\u00fc\u011f\u00fcyle de\u011fil, ayn\u0131 zamanda ekiplerin nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131 ve altyap\u0131n\u0131n nas\u0131l y\u00f6netildi\u011fiyle de ilgilidir.<\/p>\n<h2>Sonu\u00e7 ve S\u0131k\u00e7a Sorulan Sorular<\/h2>\n<p>Bu makale boyunca, b\u00fcy\u00fck \u00f6l\u00e7ekli web uygulamalar\u0131 geli\u015ftirme s\u00fcre\u00e7lerinde kar\u015f\u0131la\u015f\u0131lan karma\u015f\u0131kl\u0131klara modern ve etkin bir \u00e7\u00f6z\u00fcm olan mikro-frontend mimarisini detayl\u0131ca inceledik. React Router v7'nin esnek y\u00f6nlendirme yeteneklerini, React Server Components'\u0131n (RSC) sunucu taraf\u0131nda i\u015fleme g\u00fcc\u00fcn\u00fc ve Webpack Module Federation'\u0131n dinamik kod payla\u015f\u0131m\u0131ndaki rol\u00fcn\u00fc derinlemesine ele ald\u0131k. G\u00f6rd\u00fc\u011f\u00fcm\u00fcz gibi, bu \u00fc\u00e7 teknoloji bir araya geldi\u011finde, hem geli\u015ftirici deneyimini hem de son kullan\u0131c\u0131 performans\u0131n\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131ran g\u00fc\u00e7l\u00fc, \u00f6l\u00e7eklenebilir ve y\u00f6netilebilir bir mimari olu\u015fturulabiliyor.<\/p>\n<p>Mikro-frontend'ler, ekiplerin ba\u011f\u0131ms\u0131z \u00e7al\u0131\u015fmas\u0131na olanak tan\u0131yarak \u00e7evikli\u011fi art\u0131r\u0131r, farkl\u0131 teknoloji y\u0131\u011f\u0131nlar\u0131n\u0131n bir arada kullan\u0131lmas\u0131na izin verir ve hatalar\u0131n izolasyonunu kolayla\u015ft\u0131r\u0131r. React Router v7 ile kullan\u0131c\u0131lar aras\u0131nda ak\u0131c\u0131 ge\u00e7i\u015fler sa\u011flan\u0131rken, RSC'ler sayesinde ilk y\u00fckleme s\u00fcreleri k\u0131sal\u0131r ve a\u011f trafi\u011fi minimize edilir. Module Federation ise, uygulamalar aras\u0131 kod payla\u015f\u0131m\u0131n\u0131 ve ba\u011f\u0131ml\u0131l\u0131k y\u00f6netimini optimize ederek bundle boyutlar\u0131n\u0131 k\u00fc\u00e7\u00fclt\u00fcr ve geli\u015ftirme h\u0131z\u0131n\u0131 art\u0131r\u0131r. G\u00fcvenlik, hata y\u00f6netimi ve da\u011f\u0131t\u0131m stratejilerini de do\u011fru bir \u015fekilde planlamak, bu mimarinin uzun vadeli ba\u015far\u0131s\u0131 i\u00e7in anahtard\u0131r.<\/p>\n<p>\u015e\u00fcphesiz ki, mikro-frontend'lere ge\u00e7i\u015f baz\u0131 zorluklar\u0131 da beraberinde getirir. Operasyonel karma\u015f\u0131kl\u0131k, tutarl\u0131l\u0131k endi\u015feleri ve ba\u015flang\u0131\u00e7 yat\u0131r\u0131m maliyeti gibi fakt\u00f6rler g\u00f6z \u00f6n\u00fcnde bulundurulmal\u0131d\u0131r. Ancak do\u011fru ara\u00e7lar, yetkin ekipler ve iyi planlanm\u0131\u015f stratejilerle, bu zorluklar\u0131n \u00fcstesinden gelmek m\u00fcmk\u00fcnd\u00fcr. Gelecekte, bu t\u00fcr mimarilerin daha da yayg\u0131nla\u015fmas\u0131 ve geli\u015ftirici ara\u00e7lar\u0131n\u0131n daha da olgunla\u015fmas\u0131 beklenmektedir.<\/p>\n<p>Uygulaman\u0131z\u0131n \u00f6l\u00e7eklenebilirli\u011fini, ekip verimlili\u011fini ve kullan\u0131c\u0131 deneyimini bir \u00fcst seviyeye ta\u015f\u0131mak istiyorsan\u0131z, React Router v7, RSC ve Module Federation ile mikro-frontend mimarisine ge\u00e7i\u015f yapmay\u0131 ciddi olarak de\u011ferlendirmenizi \u00f6neririz. Bu yakla\u015f\u0131m, sadece bug\u00fcn\u00fcn de\u011fil, gelece\u011fin web uygulamalar\u0131n\u0131 in\u015fa etmek i\u00e7in de sa\u011flam bir temel sunar.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular<\/h3>\n<dl>\n<dt><b>1. Mikro-frontend mimarisi her proje i\u00e7in uygun mudur?<\/b><\/dt>\n<dd>Hay\u0131r, her proje i\u00e7in uygun de\u011fildir. Mikro-frontendler genellikle b\u00fcy\u00fck, karma\u015f\u0131k, birden fazla ekip taraf\u0131ndan geli\u015ftirilen ve ba\u011f\u0131ms\u0131z da\u011f\u0131t\u0131m gerektiren uygulamalar i\u00e7in en iyi sonucu verir. K\u00fc\u00e7\u00fck veya tek ki\u015filik ekiplerin geli\u015ftirdi\u011fi basit uygulamalar i\u00e7in monolitik bir mimari genellikle daha basit ve maliyet a\u00e7\u0131s\u0131ndan daha verimlidir. Projenin \u00f6l\u00e7e\u011fi, ekip yap\u0131s\u0131 ve uzun vadeli hedefler de\u011ferlendirilerek karar verilmelidir.<\/dd>\n<dt><b>2. React Router v7 ile dinamik olarak y\u00fcklenen mikro-frontend rotalar\u0131n\u0131 nas\u0131l y\u00f6netirim?<\/b><\/dt>\n<dd>React Router v7 ile dinamik y\u00fcklemeyi y\u00f6netmek i\u00e7in <code class=\"language-javascript\">React.lazy()<\/code> ve <code class=\"language-javascript\">Suspense<\/code> kullanabilirsiniz. Module Federation ile expose edilen bile\u015fenleri, <code class=\"language-javascript\">React.lazy(() => import('remoteApp\/ComponentName'))<\/code> \u015feklinde \u00e7a\u011f\u0131rarak y\u00fckleyebilir ve <code class=\"language-javascript\">Suspense<\/code> ile y\u00fcklenme durumunu y\u00f6netebilirsiniz. React Router'\u0131n <code class=\"language-javascript\">Routes<\/code> ve <code class=\"language-javascript\">Route<\/code> bile\u015fenleri i\u00e7inde bu lazy y\u00fcklenen bile\u015fenleri tan\u0131mlayarak dinamik rotalar\u0131 kolayca entegre edebilirsiniz.<\/dd>\n<dt><b>3. Module Federation ile payla\u015f\u0131lan ba\u011f\u0131ml\u0131l\u0131klar aras\u0131nda versiyon \u00e7ak\u0131\u015fmalar\u0131 nas\u0131l \u00f6nlenir?<\/b><\/dt>\n<dd>Versiyon \u00e7ak\u0131\u015fmalar\u0131n\u0131 \u00f6nlemek i\u00e7in Module Federation yap\u0131land\u0131rman\u0131zda <code class=\"language-javascript\">shared<\/code> k\u0131sm\u0131nda <code class=\"language-javascript\">singleton: true<\/code> ve <code class=\"language-javascript\">requiredVersion<\/code> \u00f6zelliklerini kullanmal\u0131s\u0131n\u0131z. <code class=\"language-javascript\">singleton: true<\/code>, ba\u011f\u0131ml\u0131l\u0131\u011f\u0131n yaln\u0131zca bir kopyas\u0131n\u0131n y\u00fcklenmesini sa\u011flar. <code class=\"language-javascript\">requiredVersion<\/code> ise, host veya remote uygulaman\u0131n, payla\u015f\u0131lan ba\u011f\u0131ml\u0131l\u0131\u011f\u0131n belirli bir versiyon aral\u0131\u011f\u0131n\u0131 gerektirdi\u011fini belirtir. Bu sayede, Webpack, uygulamalar aras\u0131nda en uygun versiyonu se\u00e7erek \u00e7ak\u0131\u015fmalar\u0131 engeller.<\/dd>\n<dt><b>4. React Server Components'\u0131 mikro-frontend'lerde kullanmak her zaman performans avantaj\u0131 sa\u011flar m\u0131?<\/b><\/dt>\n<dd>RSC'ler genellikle performans avantaj\u0131 sa\u011flar \u00e7\u00fcnk\u00fc sunucu taraf\u0131nda render edildikleri i\u00e7in client'a g\u00f6nderilen JavaScript miktar\u0131n\u0131 azalt\u0131r ve ilk y\u00fckleme s\u00fcresini iyile\u015ftirir. Ancak, her zaman avantajl\u0131 olmayabilir. Y\u00fcksek etkile\u015fimli, s\u0131k g\u00fcncellenen ve an\u0131nda kullan\u0131c\u0131 geri bildirimi gerektiren bile\u015fenler i\u00e7in client bile\u015fenleri daha uygun olabilir. Mikro-frontend'ler aras\u0131 ileti\u015fim ve veri ak\u0131\u015f\u0131 karma\u015f\u0131kla\u015ft\u0131\u011f\u0131nda, RSC'lerin kullan\u0131m\u0131 ek karma\u015f\u0131kl\u0131k getirebilir. Temel olarak, statik veya az etkile\u015fimli i\u00e7erikler, payla\u015f\u0131lan layout'lar ve ilk render i\u00e7in kritik olan bile\u015fenler i\u00e7in RSC'ler b\u00fcy\u00fck avantaj sa\u011flar.<\/dd>\n<\/dl>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"B\u00fcy\u00fck \u00f6l\u00e7ekli web uygulamalar\u0131n\u0131 y\u00f6netmek giderek karma\u015f\u0131kla\u015f\u0131yor mu? Ba\u011f\u0131ms\u0131z ekipler, farkl\u0131 teknolojiler ve s\u00fcrekli de\u011fi\u015fen i\u015f gereksinimleri, monolitik&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[128],"tags":[],"class_list":{"0":"post-35434","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-react","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>React Router v7 RSC ve Module Federation ile Mikro Frontend Geli\u015ftirme Rehberi<\/title>\n<meta name=\"description\" content=\"B\u00fcy\u00fck \u00f6l\u00e7ekli web uygulamalar\u0131n\u0131 y\u00f6netmek giderek karma\u015f\u0131kla\u015f\u0131yor mu? Ba\u011f\u0131ms\u0131z ekipler, farkl\u0131 teknolojiler ve s\u00fcrekli de\u011fi\u015fen i\u015f gereksinimleri, monolitik mimarilerin s\u0131n\u0131rlar\u0131n\u0131 zorluyor. React Router v7, React Server Components (RSC) ve Module Federation gibi g\u00fc\u00e7l\u00fc ara\u00e7lar\u0131 bir araya getirerek mikro-frontend mimarisine ge\u00e7i\u015f yapmak, uygulama geli\u015ftirmede \u00e7evikli\u011fi, \u00f6l\u00e7eklenebilirli\u011fi ve ekip otonomisini nas\u0131l art\u0131rabilece\u011finizi ke\u015ffedin.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/react-router-v7-rsc-ve-module-federation-ile-mikro-frontend-gelistirme-rehberi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"React Router v7 RSC ve Module Federation ile Mikro Frontend Geli\u015ftirme Rehberi\" \/>\n<meta property=\"og:description\" content=\"B\u00fcy\u00fck \u00f6l\u00e7ekli web uygulamalar\u0131n\u0131 y\u00f6netmek giderek karma\u015f\u0131kla\u015f\u0131yor mu? Ba\u011f\u0131ms\u0131z ekipler, farkl\u0131 teknolojiler ve s\u00fcrekli de\u011fi\u015fen i\u015f gereksinimleri, monolitik mimarilerin s\u0131n\u0131rlar\u0131n\u0131 zorluyor. React Router v7, React Server Components (RSC) ve Module Federation gibi g\u00fc\u00e7l\u00fc ara\u00e7lar\u0131 bir araya getirerek mikro-frontend mimarisine ge\u00e7i\u015f yapmak, uygulama geli\u015ftirmede \u00e7evikli\u011fi, \u00f6l\u00e7eklenebilirli\u011fi ve ekip otonomisini nas\u0131l art\u0131rabilece\u011finizi ke\u015ffedin.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/react-router-v7-rsc-ve-module-federation-ile-mikro-frontend-gelistirme-rehberi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-29T14:31:10+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"25 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/react-router-v7-rsc-ve-module-federation-ile-mikro-frontend-gelistirme-rehberi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/react-router-v7-rsc-ve-module-federation-ile-mikro-frontend-gelistirme-rehberi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"React Router v7 RSC ve Module Federation ile Mikro Frontend Geli\u015ftirme Rehberi\",\"datePublished\":\"2025-11-29T14:31:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/react-router-v7-rsc-ve-module-federation-ile-mikro-frontend-gelistirme-rehberi\/\"},\"wordCount\":4397,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"React\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/react-router-v7-rsc-ve-module-federation-ile-mikro-frontend-gelistirme-rehberi\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/react-router-v7-rsc-ve-module-federation-ile-mikro-frontend-gelistirme-rehberi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/react-router-v7-rsc-ve-module-federation-ile-mikro-frontend-gelistirme-rehberi\/\",\"name\":\"React Router v7 RSC ve Module Federation ile Mikro Frontend Geli\u015ftirme Rehberi\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-11-29T14:31:10+00:00\",\"description\":\"B\u00fcy\u00fck \u00f6l\u00e7ekli web uygulamalar\u0131n\u0131 y\u00f6netmek giderek karma\u015f\u0131kla\u015f\u0131yor mu? Ba\u011f\u0131ms\u0131z ekipler, farkl\u0131 teknolojiler ve s\u00fcrekli de\u011fi\u015fen i\u015f gereksinimleri, monolitik mimarilerin s\u0131n\u0131rlar\u0131n\u0131 zorluyor. React Router v7, React Server Components (RSC) ve Module Federation gibi g\u00fc\u00e7l\u00fc ara\u00e7lar\u0131 bir araya getirerek mikro-frontend mimarisine ge\u00e7i\u015f yapmak, uygulama geli\u015ftirmede \u00e7evikli\u011fi, \u00f6l\u00e7eklenebilirli\u011fi ve ekip otonomisini nas\u0131l art\u0131rabilece\u011finizi ke\u015ffedin.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/react-router-v7-rsc-ve-module-federation-ile-mikro-frontend-gelistirme-rehberi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/react-router-v7-rsc-ve-module-federation-ile-mikro-frontend-gelistirme-rehberi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/react-router-v7-rsc-ve-module-federation-ile-mikro-frontend-gelistirme-rehberi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"React Router v7 RSC ve Module Federation ile Mikro Frontend Geli\u015ftirme Rehberi\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"React Router v7 RSC ve Module Federation ile Mikro Frontend Geli\u015ftirme Rehberi","description":"B\u00fcy\u00fck \u00f6l\u00e7ekli web uygulamalar\u0131n\u0131 y\u00f6netmek giderek karma\u015f\u0131kla\u015f\u0131yor mu? Ba\u011f\u0131ms\u0131z ekipler, farkl\u0131 teknolojiler ve s\u00fcrekli de\u011fi\u015fen i\u015f gereksinimleri, monolitik mimarilerin s\u0131n\u0131rlar\u0131n\u0131 zorluyor. React Router v7, React Server Components (RSC) ve Module Federation gibi g\u00fc\u00e7l\u00fc ara\u00e7lar\u0131 bir araya getirerek mikro-frontend mimarisine ge\u00e7i\u015f yapmak, uygulama geli\u015ftirmede \u00e7evikli\u011fi, \u00f6l\u00e7eklenebilirli\u011fi ve ekip otonomisini nas\u0131l art\u0131rabilece\u011finizi ke\u015ffedin.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/react-router-v7-rsc-ve-module-federation-ile-mikro-frontend-gelistirme-rehberi\/","og_locale":"tr_TR","og_type":"article","og_title":"React Router v7 RSC ve Module Federation ile Mikro Frontend Geli\u015ftirme Rehberi","og_description":"B\u00fcy\u00fck \u00f6l\u00e7ekli web uygulamalar\u0131n\u0131 y\u00f6netmek giderek karma\u015f\u0131kla\u015f\u0131yor mu? Ba\u011f\u0131ms\u0131z ekipler, farkl\u0131 teknolojiler ve s\u00fcrekli de\u011fi\u015fen i\u015f gereksinimleri, monolitik mimarilerin s\u0131n\u0131rlar\u0131n\u0131 zorluyor. React Router v7, React Server Components (RSC) ve Module Federation gibi g\u00fc\u00e7l\u00fc ara\u00e7lar\u0131 bir araya getirerek mikro-frontend mimarisine ge\u00e7i\u015f yapmak, uygulama geli\u015ftirmede \u00e7evikli\u011fi, \u00f6l\u00e7eklenebilirli\u011fi ve ekip otonomisini nas\u0131l art\u0131rabilece\u011finizi ke\u015ffedin.","og_url":"https:\/\/fatihsoysal.com\/blog\/react-router-v7-rsc-ve-module-federation-ile-mikro-frontend-gelistirme-rehberi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-11-29T14:31:10+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"25 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/react-router-v7-rsc-ve-module-federation-ile-mikro-frontend-gelistirme-rehberi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/react-router-v7-rsc-ve-module-federation-ile-mikro-frontend-gelistirme-rehberi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"React Router v7 RSC ve Module Federation ile Mikro Frontend Geli\u015ftirme Rehberi","datePublished":"2025-11-29T14:31:10+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/react-router-v7-rsc-ve-module-federation-ile-mikro-frontend-gelistirme-rehberi\/"},"wordCount":4397,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["React"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/react-router-v7-rsc-ve-module-federation-ile-mikro-frontend-gelistirme-rehberi\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/react-router-v7-rsc-ve-module-federation-ile-mikro-frontend-gelistirme-rehberi\/","url":"https:\/\/fatihsoysal.com\/blog\/react-router-v7-rsc-ve-module-federation-ile-mikro-frontend-gelistirme-rehberi\/","name":"React Router v7 RSC ve Module Federation ile Mikro Frontend Geli\u015ftirme Rehberi","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-11-29T14:31:10+00:00","description":"B\u00fcy\u00fck \u00f6l\u00e7ekli web uygulamalar\u0131n\u0131 y\u00f6netmek giderek karma\u015f\u0131kla\u015f\u0131yor mu? Ba\u011f\u0131ms\u0131z ekipler, farkl\u0131 teknolojiler ve s\u00fcrekli de\u011fi\u015fen i\u015f gereksinimleri, monolitik mimarilerin s\u0131n\u0131rlar\u0131n\u0131 zorluyor. React Router v7, React Server Components (RSC) ve Module Federation gibi g\u00fc\u00e7l\u00fc ara\u00e7lar\u0131 bir araya getirerek mikro-frontend mimarisine ge\u00e7i\u015f yapmak, uygulama geli\u015ftirmede \u00e7evikli\u011fi, \u00f6l\u00e7eklenebilirli\u011fi ve ekip otonomisini nas\u0131l art\u0131rabilece\u011finizi ke\u015ffedin.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/react-router-v7-rsc-ve-module-federation-ile-mikro-frontend-gelistirme-rehberi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/react-router-v7-rsc-ve-module-federation-ile-mikro-frontend-gelistirme-rehberi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/react-router-v7-rsc-ve-module-federation-ile-mikro-frontend-gelistirme-rehberi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"React Router v7 RSC ve Module Federation ile Mikro Frontend Geli\u015ftirme Rehberi"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/35434","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=35434"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/35434\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=35434"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=35434"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=35434"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}