Версионирование, развёртывание и оркестрация
Развёртывайте удалённые приложения независимо с помощью семантического версионирования, управляйте конфликтами общих библиотек и координируйте выпуски
«Версионирование, развёртывание и оркестрация» — бесплатный урок React Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения React Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс React Academy содержит 4 уроков всего.
Независимое развёртывание: основная ценность
Главная ценность Module Federation — независимое развёртывание: команда может обновлять, тестировать и разворачивать своё удалённое приложение без координации с командами хостов и без запуска повторных развёртываний хостов. Хост автоматически получает изменения при следующей загрузке remoteEntry.js по URL удалённого приложения.
Версионирование URL удалённых приложений
Вместо размещения remoteEntry.js по фиксированному URL, который изменяется при каждом развёртывании, включайте хеш содержимого в URL: remoteEntry.[hash].js. Это делает каждое развёртывание неизменяемым: старые URL продолжают работать, а хост начинает использовать новый хеш после обновления до нового развёртывания. Неизменяемые URL позволяют использовать интенсивное кэширование в CDN.
Флаги функций на уровне инфраструктуры
Поскольку хост обнаруживает удалённые приложения по URL, можно реализовать A/B-тестирование на уровне инфраструктуры: предоставлять разным пользователям разные URL remoteEntry.js, указывающие на разные версии удалённого приложения. Это позволяет выполнять настоящие канареечные развёртывания микроинтерфейсов без логики флагов функций в коде приложения.
Подход с манифестом для гибкого обнаружения
Вместо жёстко заданных URL удалённых приложений в конфигурации Webpack хост при запуске получает JSON-манифест: GET /federation-manifest.json возвращает { buttonApp: 'https://cdn.example.com/button/remoteEntry.abc123.js' }. Чтобы изменить используемую хостом версию, обновите манифест — пересборка хоста не требуется.
Откат через обновление манифеста
Если развёртывание удалённого приложения вызывает регрессию, откат выполняется мгновенно: обновите federation-manifest.json, указав URL предыдущего remoteEntry.js. При следующем цикле запросов хост сразу начнёт использовать старую версию. Пересборка хоста не требуется, откат хоста не требуется, координация не нужна.
Федерация модулей 2.0 для Webpack
Федерация модулей 2.0 (пакет @module-federation/enhanced) предлагает значительные улучшения: более качественную поддержку TypeScript с автоматической генерацией типов из удалённых манифестов, программный интерфейс плагинов для пользовательской логики загрузки во время выполнения и расширенное управление общей областью видимости для сложных сценариев согласования версий.
vite-plugin-federation для Vite
Пакет vite-plugin-federation переносит Федерацию модулей в проекты на основе Vite, используя интерфейс конфигурации, схожий с ModuleFederationPlugin в Webpack. Он совместим и с удалёнными модулями Vite, и с приложениями-хостами Webpack, а также наоборот, позволяя командам постепенно переходить на Vite, не отказываясь от Федерации модулей.
Динамические удалённые модули во время выполнения
Для высокодинамичных архитектур можно полностью настроить адреса удалённых модулей во время выполнения: import(remoteRegistry[featureName]), где remoteRegistry заполняется вызовом программного интерфейса. Это позволяет создавать архитектуры, подобные плагинным, в которых новые микрофронтенды можно добавлять без пересборки приложения-оболочки.
Приложение-оболочка как координатор
Основная задача приложения-оболочки — координация: оно читает манифест удалённых модулей, инициализирует среду выполнения Федерации модулей, регистрирует удалённые модули в именованных маршрутах и отображает подходящий удалённый модуль в зависимости от текущего адреса. Оболочка намеренно остаётся тонкой — она знает, что загружать, но не знает, как это отображать.
Мониторинг Федерации модулей в рабочей среде
Добавьте мониторинг производительности загрузки удалённых модулей: оберните импорты в try/catch, чтобы корректно обрабатывать сбои загрузки (отображайте запасной интерфейс, если удалённый модуль недоступен), измеряйте время загрузки remoteEntry.js и фрагментов компонентов и создайте оповещение, если время загрузки удалённого модуля превышает пороговое значение (это указывает на проблемы CDN).
Полный конвейер CI/CD
Зрелый конвейер CI/CD для Федерации модулей выглядит так: команда удалённого модуля фиксирует изменения → CI собирает удалённый модуль → загружает неизменяемый remoteEntry.[hash].js в CDN → обновляет federation-manifest.json → приложение-хост подхватывает новый удалённый модуль при следующем запросе пользователя. Каждый шаг автоматизирован, и команде приложения-хоста никогда не приходится участвовать в развёртывании удалённых модулей.
Стратегия отката Федерации модулей
Как быстрее всего откатить неудачное развёртывание удалённого модуля Федерации модулей?
Итоги урока
Федерация модулей обеспечивает полностью независимое развёртывание: удалённые модули развёртываются без пересборки приложения-хоста, а приложение-хост автоматически обнаруживает новые версии. Используйте адреса удалённых модулей с хешем содержимого для неизменяемого кэширования в CDN и динамический манифест для гибкой маршрутизации версий и мгновенных откатов. vite-plugin-federation переносит эти возможности в Vite, а динамический импорт удалённых модулей позволяет создавать архитектуры, подобные плагинным. Оболочка координирует загрузку удалённых модулей, оставаясь намеренно тонкой.
Изучай React с ИИ-репетитором — бесплатно
Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.
- Курсы
- 88
- Уроки
- 324
Часто задаваемые вопросы
Урок «Версионирование, развёртывание и оркестрация» бесплатный?
Да — полный текст урока «Версионирование, развёртывание и оркестрация» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс React Academy, подпишись на CoddyKit PRO. Курс React Academy содержит 4 уроков всего.
Чему я научусь в уроке «Версионирование, развёртывание и оркестрация»?
Развёртывайте удалённые приложения независимо с помощью семантического версионирования, управляйте конфликтами общих библиотек и координируйте выпуски Ты практикуешь React Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать React Academy?
Предыдущий опыт не требуется. React Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Версионирование, развёртывание и оркестрация»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке React Academy?
Да. Каждый урок React Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Федерация модулей: динамический импорт во время выполнения
- Настройка приложений React: основного и удалённых
- Общий доступ к состоянию и маршрутизации между удалёнными приложениями
- Версионирование, развёртывание и оркестрация