1.5 KiB
1.5 KiB
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)