moex-vibe/apps/docs/docs/adr/ADR-001-backend-single-point-of-access.md
Sergey Krylov aac5b2f873
All checks were successful
CI / lint (pull_request) Successful in 1m32s
CI / test (pull_request) Successful in 1m23s
CI / build (pull_request) Successful in 1m27s
CI / lint (push) Successful in 1m16s
CI / test (push) Successful in 1m23s
CI / build (push) Successful in 1m32s
docs: add Docusaurus documentation site as npm workspace
- Create apps/docs/ with Docusaurus 3.7.0
- Add documentation: architecture, backend, frontend, infrastructure, development, ADR
- Include 5 Mermaid diagrams (system architecture, request flow, modules, caching, deployment)
- Configure as npm workspace with dev:docs/build:docs scripts
- Copy existing ADR documents from docs/architecture/adr/
2026-06-13 21:37:10 +03:00

1.7 KiB
Raw Blame History

ADR-001: Backend — Single Point of Access to MOEX

Status: Accepted
Date: 2026-06-13
Deciders: Architect, Tech Lead

Context

Frontend должен отображать данные Московской биржи. MOEX ISS API отдаёт сырые данные со сложной структурой (вложенные таблицы, различные форматы). Прямые запросы с фронта приведут к дублированию логики нормализации, усложнят обработку ошибок и сделают систему зависимой от внешнего API.

Decision

Backend (NestJS) является единственной точкой доступа к MOEX. Frontend никогда не обращается к MOEX напрямую.

Backend:

  • Проксирует запросы к MOEX ISS
  • Нормализует данные в доменные модели
  • Кеширует ответы
  • Обрабатывает ошибки MOEX (пустые данные, rate limit, таймауты)
  • Предоставляет собственный OpenAPI-контракт для фронта

Consequences

  • Единый источник правды для трансформации данных
  • Изоляция изменений MOEX API — меняется только MoexClient
  • Централизованное кеширование сокращает количество запросов к MOEX
  • Фронтенд остаётся тонким клиентом
  • Дополнительная задержка (один hop), но нивелируется кешированием