Введение
Проблемы
NestJS — отличный фреймворк, и с его помощью можно создавать замечательные вещи, но часто, когда мы разрабатываем множество приложений в одной организации, мы получаем разные архитектуры приложений, структуры файлов и много дублирующегося кода.
Для унификации архитектуры приложений и разработки стандартных модулей многие команды начали разрабатывать собственные решения, которые работают поверх NestJS.
Помимо написания продуктового кода, также существует потребность в едином процессе сборки и доставки этого кода непосредственно клиенту.
Когда продукт и команда одинаковы, то нет проблем с разными кодовыми базами, развертыванием и доставкой; вы настраиваете это один раз, и это всегда работает.
Но когда появляются новые продукты или новые микросервисы в отдельных репозиториях, все настройки и код начинают расходиться.
Если в организации есть devops-специалист или целый отдел, занимающийся автоматизацией процессов разработки, они могут взять на себя работу по синхронизации devops-настроек, но про блема синхронизации продуктовых архитектур и архитектур модулей останется.
Помимо вышеперечисленного, также существует необходимость генерации отчета о всей инфраструктуре проекта со всеми используемыми переменными окружения и их значениями, а также отчета обо всех опциях, которые использовались в модулях.
Решения
Поскольку я написал много различного кода на NestJS, я знаю типичные архитектурные решения, которые чаще используются при разработке модулей, но для их использования приходилось писать много однотипного кода.
Постоянная настройка devops для проектов с разными модулями также очень утомляла.
Коллекция утилит NestJS-mod предназначена для унификации приложений и модулей, а также предлагает новые логические возможности для разделения ответственности между модулями (System, Core, Feature, Integration, Infrastructure).
Поскольку все части приложения унифицированы, вы можете создать отчет о всей инфраструктуре проекта.
Единым источником информации для эксплуатации, развертывания, доставки и документации является само приложение NestJS-mod.
Модули NestJS-mod сами генерируют все необходимые настройки и скрипты для запуска различных инфраструктурных систем.