moex-vibe/apps/docs/docs/adr/ADR-002-in-memory-cache.md
Sergey Krylov 106467e5c4
All checks were successful
CI / lint (pull_request) Successful in 2m8s
CI / test (pull_request) Successful in 1m57s
CI / build (pull_request) Successful in 2m5s
CI / lint (push) Successful in 2m1s
CI / test (push) Successful in 1m51s
CI / build (push) Successful in 2m9s
docs: translate docs to russian
2026-06-16 05:13:34 +03:00

1.6 KiB
Raw Blame History

ADR-002: In-memory cache с путём миграции на Redis

Статус: Accepted
Дата: 2026-06-13
Участники решения: Architect, Tech Lead

Контекст

Для MVP требуется кеширование MOEX-данных, чтобы снизить нагрузку на внешнее API и обеспечить приемлемое время ответа. На начальном этапе нет требований к горизонтальному масштабированию, и хочется избежать внешних зависимостей.

Решение

Использовать @nestjs/cache-manager с MemoryStore. TTL настраивается per-endpoint через конфигурацию.

Архитектура позволяет переключиться на Redis заменой импорта провайдера:

// Текущая реализация
CacheModule.register({ store: 'memory', ttl: 900 })

// Миграция на Redis (меняется только registration)
CacheModule.registerAsync({
  useFactory: () => ({
    store: redisStore,
    host: process.env.REDIS_HOST,
    port: process.env.REDIS_PORT,
  }),
})

Последствия

  • Нет внешних зависимостей для MVP
  • Кеш сбрасывается при рестарте сервера (приемлемо для read-only приложения)
  • Чистый путь миграции на Redis
  • Единый API для cache (cache-manager abstraction)