-
-
Notifications
You must be signed in to change notification settings - Fork 59
Micro vs Macro Frontends
Когда вся интеграция на уровне сборщика, внутри бандла.
- Высокая степень взаимной интеграции.
- Простая инфраструктура.
- Статическая проверка типов на стыке приложений.
- Воспроизводимость билдов - все можно собрать на одной машине за один проход.
- Минимизация суммарного объёма так как код максимально переиспользуется.
- Необходимость придерживаться всем разработчикам макро-проекта более строгих правил и в частности делать каждую часть на своей технологии.
- Более сложное кэширование разных частей билдов (tsc --build)
- Долгий холодный билд (если вам нужно собрать имеенно master-приложение со всеми страницами)
Когда более-менее крупные и цельные части функциональности собираются раздельно и выделяются в отдельные файлы
- Возможность независимого кэширования чанков.
- В условиях разнородных команд, подходов, стеков, можно зафиксить версии и разрабатывать в своем болоте, а потом встроить компонент в большое приложение и он ничего не сломает.
- Когда куча копипасты (любой современный UI) и надо ускорить загрузку большого бандла, подробив на чанки. Есть шанс, что с момента последнего посещения сайта проекта, браузерный кэш с чанками микросервисов не вытеснится другими ресурсами.
-
Исключается этап тайпчека между приложениями в реальной сборке. Только при билде всего и сразу из одного источника можно гарантировать тайпчек, интерфейсы от разных версий в рантайме - никак не проконтролируешь
-
Усложняется инфраструктура. Шарить код сложнее: нужны хитрые загрузчики в рантайме, контроль целостности, обработка ошибок. Ухудшается отказоустойчивость, проблемы с cdn сложнее контролировать, чем свое болото
-
Сложнее воспроизвести сборку. Нельзя гарантировать одинаковость версий в разных частях приложения, например, 2 разные версии реакта (на ssr-сервере из node_modules, а на клиенте из cdn) приводят к тому, что компоненты из разных версий могут просачиваться друг в друга, что приводит к сложноуловимым багам
-
Сложнее отлаживать - приходится библиотеку локально вкомпиливать в бандл или поднимать подобие cdn, что не гарантирует воспроизводимость на тесте или проде.
-
Стагнация версий - т.к. все изолированно, то по-принципу "работает - не трогай" версии не меняют. Что приводит к дублированию библиотек и усложнению обновления версий, когда "припрет".