Как деплоились микрофронтенды
Что проверяют
Был ли у вас реальный опыт с микрофронтендами и понимаете ли вы, ради чего их разделяют: ради независимого релиза каждой части. Следом обычно спрашивают, как оболочка узнаёт о новой версии модуля и как вы откатывались.
Как отвечать
Отвечайте про свой проект и называйте свои цифры: сколько было модулей и команд, сколько занимал релиз. Каркас такой:
- способ интеграции: в рантайме через Module Federation (
remoteEntry.js), import maps с single-spa, iframe или серверная сборка страницы. Если модули собирались как npm-пакеты в один бандл, честно скажите, что независимого деплоя не было; - куда выкладывали: чаще всего статика в объектное хранилище за CDN. Каждый модуль собирается своим пайплайном и кладётся по пути с версией или хэшем. Контейнер нужен, только если модуль сам рендерит на сервере;
- как оболочка находит версию: через манифест, JSON с адресом
remoteEntryдля каждого модуля. Деплой модуля заканчивается обновлением манифеста, а откат это возврат прошлой записи без пересборки; - кэширование: чанки с хэшем в имени кэшируются надолго, а
remoteEntry.jsи манифест коротко или с ревалидацией, иначе пользователи неделю сидят на старой версии; - общие зависимости: React в
sharedсsingleton: true, иначе два экземпляра React ломают хуки; - проверки: контрактные тесты между оболочкой и модулем и смоук после выкладки.
Если с микрофронтендами вы не работали, так и скажите, опишите, как деплоили обычное приложение, и покажите, что понимаете, что изменится при разделении. Выдуманный опыт на уточняющих вопросах вскрывается за пару минут.
Где спотыкаются
Путают механизм загрузки с процессом деплоя. Module Federation отвечает за подгрузку кода в браузере, а куда и как код выкладывается, решает пайплайн.
Не могут ответить, как откатить один модуль, не трогая остальные. Без манифеста или версионированных путей ответ обычно «пересобрать всё», и смысл архитектуры пропадает.
Забывают про совместимость. Модуль, выкатившийся с новым контрактом раньше оболочки, роняет страницу у всех, поэтому изменения делают обратно совместимыми и выкатывают по шагам.