moex-vibe/docs/architecture/adr/ADR-004-feature-modules.md

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)