Приходилось ли работать с микрофронтендами и какую проблему они решают
Что проверяют
Отличаете ли вы техническую моду от решения организационной задачи. Микрофронтенды заводят ради того, чтобы несколько команд выкатывались независимо, поэтому интервьюер слушает, назовёте ли вы цену такого разделения. Следом спрашивают: «почему не хватило монорепозитория».
Как отвечать
Сначала проблема: большое приложение, десяток команд, общий релизный поезд, и правка в чужом модуле блокирует выкатку всем. Второй повод, постепенная замена старого приложения: оно работает, новые куски приезжают рядом и вытесняют его по частям.
Дальше способы собрать целое:
- Module Federation: webpack 5, Rspack и плагин для Vite; хост подтягивает удалённый модуль в рантайме, общие библиотеки объявляются в
sharedсsingleton: trueиrequiredVersion; - веб-компоненты и single-spa: изоляция фрагмента и свобода фреймворка внутри ценой ручной работы со стилями и событиями;
- серверная композиция: сборка страницы на бэкенде или на краю сети, Multi Zones в Next.js, когда важны SSR и поисковая выдача;
- iframe: максимальная изоляция и худший опыт использования.
Обязательно про цену. Два React в бандле, если не настроен shared. Разъезжающаяся дизайн-система. Общая авторизация и передача сессии между фрагментами. Сквозные e2e через границу приложений. Общее состояние лучше держать контрактом событий: общий Redux возвращает связность, ради ухода от которой всё затевалось.
Скажите и когда не надо: одной или двум командам монорепозиторий с Turborepo либо Nx и фича-флаги дают то же самое дешевле.
Опыта нет: так и отвечайте. Назовите, чем задачу решали у вас, и покажите, что понимаете механику Module Federation.
Где спотыкаются
Продают микрофронтенды как ускорение загрузки. Обычно наоборот: рантайм-склейка, дублирование зависимостей и лишние запросы, а выигрыш весь в скорости релизов команд.
Не могут ответить, кто владеет оболочкой. Роутинг верхнего уровня, общий каркас страницы и версии общих библиотек это чья-то зона ответственности, без неё через полгода получается зоопарк.
Забывают про версии контрактов. Фрагмент выкатывается независимо, значит, хост встретит и старую, и новую версию, и это надо предусматривать заранее.