# 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)