moex-vibe/apps/docs/docs/adr/ADR-004-feature-modules.md
Sergey Krylov 106467e5c4
All checks were successful
CI / lint (pull_request) Successful in 2m8s
CI / test (pull_request) Successful in 1m57s
CI / build (pull_request) Successful in 2m5s
CI / lint (push) Successful in 2m1s
CI / test (push) Successful in 1m51s
CI / build (push) Successful in 2m9s
docs: translate docs to russian
2026-06-16 05:13:34 +03:00

1.6 KiB

ADR-004: Feature-модули по доменам

Статус: Accepted
Дата: 2026-06-13
Участники решения: Architect, Tech Lead

Контекст

NestJS рекомендует модульную архитектуру. Требования указывают на архитектуру по feature modules. Модули должны иметь чёткие границы и быть тестируемыми изолированно.

Решение

Каждый бизнес-домен — отдельный NestJS feature module:

Модуль Ответственность
MoexClientModule HTTP-клиент к MOEX ISS, rate limiting, circuit breaker
CacheModule Абстракция кеширования
SecuritiesModule Поиск по инструментам
SharesModule Спецификация, marketdata, дивиденды
BondsModule Спецификация, marketdata
CandlesModule OHLCV свечи (общий для shares+bonds)
HealthModule Healthcheck endpoint

Каждый module exports свой сервис, control imports через @Module({ imports: [...] }).

Последствия

  • Чёткие границы, изолированное тестирование
  • Возможность вынести модуль в отдельный микросервис
  • Понятная навигация по коду
  • Нет циклических зависимостей (MoexClient — единственный downstream)