[INFRA-01] Redis 쿨다운 키 계약

작업 내용 (설계 의도)

변경 사항

신호 단위 쿨다운(FR-7, ADR-003) 상태를 저장하는 Redis 키 계약 문서를 작성한다. 근거 TDD: ../TDD.md §실패경로·§ADR-003. private-redis-implementer가 계약 문서(md)를 산출하고 로컬 Redis로 검증한다. 앱 코드(AlertCooldownRepositoryImpl)는 BE-04.

  • 키 패턴: alerting:cooldown:{env}:{endpoint}:{source}:{severity} — 콜론 구분, 소문자-케밥.
  • 자료구조: String(단일 마커 값). 근거: 원자적 SET NX PX로 존재 여부만 판정, 값 내용 불필요.
  • 명령: SET key "1" NX PX 900000(15분). 반환 OK=쿨다운 진입(발송 진행), nil=쿨다운 중(억제).
  • TTL: 900000ms(15분) 필수 — 무기한 키 없음.
  • 무효화 트리거: TTL 자동 만료만(수동 삭제 없음).
  • eviction: 세션·락 혼용 인스턴스이므로 volatile-* 계열 유지(캐시 전용 아님) — 근거 1줄 명시.

의존

  • 없음 (wave 1)

다이어그램

처리 흐름

sequenceDiagram
    participant DS as AlertDomainService
    participant R as Redis
    DS->>R: SET alerting:cooldown:prod:/pay:latency:warn "1" NX PX 900000
    R-->>DS: OK (획득) 또는 nil (억제)

테스트 케이스

  • 동일 키에 첫 SET NX PX는 OK, 15분 내 재시도는 nil을 반환한다(redis-cli 재현).
  • TTL이 900초로 설정됨을 TTL 명령으로 확인한다.
  • env/endpoint/source/severity가 다르면 서로 다른 키로 독립 판정된다.
  • TTL 만료 후 동일 키 재획득이 OK를 반환한다.