Wersjonowanie, wdrażanie i orkiestracja
Wdrożą Państwo aplikacje zdalne niezależnie, stosując wersjonowanie semantyczne, zarządzą konfliktami współdzielonych bibliotek i skoordynują wydania.
Wersjonowanie, wdrażanie i orkiestracja to bezpłatna lekcja React Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej React Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs React Academy zawiera 4 lekcji w sumie.
Niezależne wdrażanie: najważniejsza korzyść
Najważniejszą korzyścią Module Federation jest niezależne wdrażanie: zespół może zaktualizować, przetestować i wdrożyć swój remote bez koordynacji z zespołami hosta i bez wywoływania ponownego wdrażania hosta. Host automatycznie pobierze zmiany przy następnym załadowaniu remoteEntry.js z adresu URL remote.
Wersjonowanie adresów URL remote
Zamiast udostępniać remoteEntry.js pod stałym adresem URL (który zmienia się przy każdym wdrożeniu), należy umieścić w adresie URL hash zawartości: remoteEntry.[hash].js. Dzięki temu każde wdrożenie jest niezmienne — stare adresy URL nadal działają, a host odwołuje się do nowego hasha po zaktualizowaniu do nowego wdrożenia. Niezmienne adresy URL umożliwiają agresywne buforowanie w CDN.
Flagi funkcji na poziomie infrastruktury
Ponieważ host wyszukuje remotes za pomocą adresu URL, można wdrożyć testy A/B na poziomie infrastruktury: różnym użytkownikom udostępniać różne adresy URL remoteEntry.js (wskazujące różne wersje remote). Umożliwia to prawdziwe wdrożenia canary dla mikrofrontendów bez umieszczania logiki flag funkcji w kodzie aplikacji.
Podejście oparte na manifeście do elastycznego wykrywania
Zamiast wpisywać adresy URL remote na stałe w konfiguracji Webpacka, host pobiera przy uruchomieniu manifest JSON: GET /federation-manifest.json zwraca { buttonApp: 'https://cdn.example.com/button/remoteEntry.abc123.js' }. Aby zmienić używaną przez hosta wersję, wystarczy zaktualizować manifest — przebudowa hosta nie jest wymagana.
Wycofywanie wersji przez aktualizację manifestu
Gdy wdrożenie remote wprowadzi regresję, wycofanie jest natychmiastowe: należy zaktualizować federation-manifest.json tak, aby wskazywał poprzedni adres URL remoteEntry.js. Przy następnym cyklu żądania host od razu zacznie używać starej wersji. Nie jest potrzebna przebudowa hosta, wycofanie hosta ani koordynacja.
Webpack Module Federation 2.0
Module Federation 2.0 (pakiet @module-federation/enhanced) wprowadza istotne ulepszenia: lepszą obsługę TypeScriptu dzięki automatycznemu generowaniu typów na podstawie manifestów remote, interfejs API wtyczek uruchamianych w czasie działania na potrzeby niestandardowej logiki ładowania oraz ulepszone zarządzanie współdzielonym zakresem na potrzeby złożonych scenariuszy negocjowania wersji.
vite-plugin-federation dla Vite
Pakiet vite-plugin-federation udostępnia Module Federation w projektach opartych na Vite, wykorzystując interfejs API konfiguracji podobny do Webpackowego ModuleFederationPlugin. Jest zgodny zarówno z remote opartymi na Vite i hostami opartymi na Webpacku, jak i odwrotnie, dzięki czemu zespoły mogą stopniowo migrować do Vite bez rezygnowania z Module Federation.
Dynamiczne remote w czasie działania
W przypadku wysoce dynamicznych architektur można skonfigurować adresy URL remote w całości w czasie działania: import(remoteRegistry[featureName]), gdzie remoteRegistry jest wypełniany na podstawie wywołania API. Umożliwia to tworzenie architektur przypominających wtyczki, w których można dodawać nowe mikrofrontendy bez przebudowy aplikacji shell.
Aplikacja shell jako orkiestrator
Podstawowym zadaniem aplikacji shell jest orkiestracja: odczytuje ona manifest remote, inicjalizuje środowisko uruchomieniowe Module Federation, rejestruje moduły remote pod nazwanymi trasami i renderuje odpowiedni remote na podstawie bieżącego adresu URL. Shell jest celowo niewielki — wie, co załadować, ale nie wie, jak to renderować.
Monitorowanie Module Federation na produkcji
Do ładowania remote należy dodać monitorowanie wydajności: opakować importy remote w try/catch, aby poprawnie obsługiwać błędy ładowania (w przypadku niedostępności remote renderować zastępczy interfejs), mierzyć czas pobierania remoteEntry.js i fragmentów komponentów oraz generować alert, jeśli czas ładowania remote przekroczy ustalony próg (co może wskazywać na problemy z CDN).
Pełny potok CI/CD
Dojrzały potok CI/CD dla Module Federation wygląda następująco: zatwierdzenie zmian przez zespół remote → kompilacja remote przez CI → przesłanie niezmiennego pliku remoteEntry.[hash].js do CDN → aktualizacja federation-manifest.json → host pobiera nowy remote przy następnym żądaniu użytkownika. Każdy etap jest zautomatyzowany, a zespół hosta nigdy nie uczestniczy we wdrażaniu remote.
Strategia wycofywania wdrożenia remote Module Federation
Jaki jest najszybszy sposób na wycofanie nieudanego wdrożenia remote Module Federation?
Podsumowanie lekcji
Module Federation umożliwia prawdziwie niezależne wdrażanie: remote są wdrażane bez przebudowy hosta, a host automatycznie wykrywa nowe wersje. Należy używać adresów URL remote z hashem treści, aby zapewnić niezmienne buforowanie w CDN, oraz dynamicznego manifestu na potrzeby elastycznego kierowania wersjami i natychmiastowego wycofywania zmian. vite-plugin-federation udostępnia te możliwości w Vite, a dynamiczne importy remote umożliwiają tworzenie architektur przypominających wtyczki. Shell orkiestruje ładowanie remote, pozostając celowo niewielki.
Często zadawane pytania
Czy lekcja „Wersjonowanie, wdrażanie i orkiestracja” jest bezpłatna?
Tak — pełny tekst „Wersjonowanie, wdrażanie i orkiestracja” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu React Academy, przejdź na CoddyKit PRO. Kurs React Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Wersjonowanie, wdrażanie i orkiestracja”?
Wdrożą Państwo aplikacje zdalne niezależnie, stosując wersjonowanie semantyczne, zarządzą konfliktami współdzielonych bibliotek i skoordynują wydania. Ćwiczysz React Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć React Academy?
Nie wymagamy żadnego doświadczenia. React Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Wersjonowanie, wdrażanie i orkiestracja”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji React Academy?
Tak. Każda lekcja React Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Module Federation: dynamiczne importy w czasie działania
- Konfiguracja aplikacji React hosta i aplikacji zdalnych
- Współdzielenie stanu i routingu między zdalnymi aplikacjami
- Wersjonowanie, wdrażanie i orkiestracja