
ProTrade
Микрофронтенды — инструмент организационной масштабируемости, а не модная архитектура «для всех». Мы предлагаем их тогда, когда командам реально нужна независимость релизов и стеков, а продукт распадается на чёткие домены: каталог, поиск, заказ, кабинет, админка. В этой статье — как мы режем границы, как собираем композицию в Next.js, где уместен Module Federation, как договориться о контрактах и разделить дизайн-систему, чтобы не потерять производительность и наблюдаемость.
Признаки: несколько автономных команд, отдельные Roadmap'ы, разные циклы релизов, интеграции с «своими» бэкендами, долгий цикл согласований в монолите. Если проект маленький или команда одна — выберите модульную монолитную архитектуру, не усложняйте жизнь ни себе, ни пользователям.
Режем по бизнес-доменам, которые владеют своими API/правами/событиями: «Каталог», «Оформление заказа», «Кабинет», «Админка». Каждый домен поставляет UI-модуль и «порт» для интеграции: контракты типов/событий, ограничения зависимостей, версии. Границы не должны пересекаться; общие элементы идут в платформу (shell).
В App Router мы собираем «shell» приложения (роутинг, шапка/футер, аутентификация, дизайн-токены) и подмешиваем модули: через маршруты (remote routes), через динамический импорт компонентов, через Module Federation для рантайм-композиции. Важно: «критический путь» (навигация, вход, корзина) должен оставаться под контролем оболочки, иначе ухудшится UX и поддержка.
Модули общаются через стабильные интерфейсы: типы пропсов, события/команды («addToCart», «checkoutComplete»), контракты ошибок. Сильно помогает «портовая» модель: shell объявляет интерфейсы, модули реализуют. Для асинхронных сценариев — событийная шина с именованными каналами и схемами полезной нагрузки. Важны версионирование и обратная совместимость.
Чтобы модули «не расползались», дизайн-токены и базовые компоненты живут в платформе: цвета, отступы, типографика, формы, таблицы, графики. Обновления приходят как версионированные пакеты; модули не тянут собственные UI-фреймворки без причины. Для критичных элементов проверяем визуальные контракты (storybook + визуальная регрессия).
Роутинг остаётся в shell: он знает, какой модуль отрисовать и как сформировать URL/метаданные. Данные: модуль ходит к своему BFF/API, но соблюдает правила кэша/инвалидаций и trace-корреляции. Кросс-модульные данные (например, авторизация, корзина) — сервисы платформы, а не «общая переменная».
Риск microfrontends — раздутые бандлы и дубли зависимостей. Мы фиксируем «allow-list» библиотек, включаем shared-зависимости, измеряем вклад каждого модуля в LCP/INP. Критичные части — стримим, тяжёлые виджеты — лениво. Любой модуль обязан укладываться в бюджет по весу и времени интерактива, иначе не попадает в релиз.
Отдельные пайплайны CI/CD, version pinning и «канарейки» на уровне маршрутов. Дашборды по модулям: ошибки, Web Vitals, вклад в конверсию. Инциденты — локализованные: модуль можно откатить/запинить версию без остановки всего приложения. В договорённостях — SLA по фиксам, контракты поддержки и «вредные» зависимости.
Итог: microfrontends — это организационный инструмент, который требует строгих границ, контрактов и платформы. Мы собираем их там, где это окупается: независимые команды, сложный продукт, разные циклы релизов. В остальных случаях лучше модульный монолит. Готовы оценить и предложить план миграции/внедрения под ваш продукт.

ProTrade

Studeks

VSP-Garant

Second hands

Omi

MURU