[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를 반환한다.