Вопрос по architecture, npm, node.js – Узел Модульная Архитектура
Я создаю приложение nodejs, которое сейчас довольно большое. В попытке избежать применения монолитного узла я пошел по архитектурному маршруту более модульной системы, разбив несколько компонентов на отдельные модули npm. Они публикуются с использованием npm и устанавливаются в зависимые модули. У меня есть около 6 различных модулей (которые я хотел бы выделить больше), и теперь стало трудно управлять пакетами.
Проблемы являются:
быстровозводимые дома проекты цены
модульные мини дома для постоянного проживания
Существует вложенная зависимость, поэтому, если я меняю модуль A, а модуль B зависит от модуля A, а модуль C зависит от модуля B, то при обновлении модуля AI необходимо опубликовать его новую версию, что означает, что мне нужно обновить его в модуле. B, что означает, что мне также нужно опубликовать это, и, наконец, мне нужно установить эту новую версию в модуле A . вы можете увидеть, где это может быть больно. Более того, обновление версий во всех файлах package.json выполняется вручную и поэтому подвержено ошибкам, а ожидание каждой публикации отнимает много времени.Модули могут совместно использовать зависимости npm, поэтому иногда при обновлении пакетов возникают конфликты. Чем больше модулей, тем выше вероятность конфликта.
модульные лестницы в частном доме
Выгоды в том, что у нас очень модульная система, в которой библиотеки можно легко использовать повторно, и существует четкая иерархия модулей, поскольку не может быть никаких циклических зависимостей.
Возможные решения являются:
Монолит - Управлять зависимостями как одним приложением в одном репозитории, при этом каждый модуль просто становится сервисом. Это означает, что требуется только одно обновление, и все модули API будут синхронизированы. Однако ссылаться на библиотеки в коде может быть немного сложно (так как я считаю, что на них нужно ссылаться по отношению к локальному файлу), я не уверен, как можно применить структурную иерархию между модулями и повторное использование кода Сложнее с модулями вне хранилища.
Microservices - сделать каждый модуль микро сервисом. Это сохраняет все преимущества модульной системы, но я обеспокоен тем, что она значительно усложнит сборку, и управление всеми сервисами само по себе станет работой на полный рабочий день.
Продолжайте идти - Разработайте способ сохранить текущую архитектуру, но избавьтесь от необходимости загружать обновления и т. Д. Может быть, скрипты для обновления версий и сокращения, чтобы обеспечить правильные зависимости. Я думаю, что это было бы сложно и потенциально привело бы к тому, чтобы стать монолитной системой другого сорта.
Вариант 1 кажется мне наиболее управляемым, но я не хочу терять модульную структуру, если не буду этого делать.
Это довольно широкий вопрос, но любые предложения советы комментарии были бы действительно полезны.