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

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)