1.5 KiB
1.5 KiB
ADR-004: Feature Modules by Domain
Status: Accepted
Date: 2026-06-13
Deciders: Architect, Tech Lead
Context
NestJS рекомендует модульную архитектуру. Требования указывают на архитектуру по feature modules. Модули должны иметь чёткие границы и быть тестируемыми изолированно.
Decision
Каждый бизнес-домен — отдельный NestJS feature module:
| Module | Responsibility |
|---|---|
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: [...] }).
Consequences
- Чёткие границы, изолированное тестирование
- Возможность вынести модуль в отдельный микросервис
- Понятная навигация по коду
- Нет циклических зависимостей (MoexClient — единственный downstream)