← Вернуться ко всем статьям

Модульная архитектура NestJS для B2B платформы

21.05.2024 · Команда Flexagon

NestJSArchitectureCase study

С ростом продуктовой гипотезы количество команд и сервисов увеличивается, а изменения распространяются медленно. В этом кейсе мы рассказываем, как разделили домены на изолированные модули, подключили CQRS и событийный контур, а также внедрили тестирование контрактов между сервисами.

С чего начали

  • Провели аудит текущего REST API и выявили точки связности.
  • Разделили домены на автономные bounded context, описали контракты событий.
  • Внедрили принцип “internal only” для всех вспомогательных эндпоинтов.

Что сделали

  1. Настроили базовый модуль маршрутизации с синхронным REST и асинхронной шиной.
  2. Вынесли запросы и команды в отдельные CQRS обработчики, избавившись от массивных сервисов.
  3. Подключили модульные тесты с in-memory PostgreSQL и тестами контрактов через Pact.

Результаты

  • Время поставки новых фич сократилось на 30% за счет предсказуемости архитектуры.
  • Команды получили автономию: изменения в одном домене не ломают другие.
  • Упростили обучение новых разработчиков благодаря явным границам и документации.

В следующих материалах поделимся тем, как обкатываем архитектурные решения на feature environments и мониторим производительность через Observability стек.