moex-vibe/docs/architecture/adr/ADR-002-in-memory-cache.md

1.5 KiB
Raw Blame History

ADR-002: In-Memory Cache with Migration Path to Redis

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

Context

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

Decision

Использовать @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,
  }),
})

Consequences

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