30 lines
1.5 KiB
Markdown
30 lines
1.5 KiB
Markdown
# 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)
|