Skip to content

재고 대사(Reconciliation), Redis Rebuild, 장애 대응 구현 #98

@koosco

Description

@koosco

배경

Redis 선처리 + 비동기 반영 구조에서는 Redis와 RDB projection 간 일시적 불일치가 발생할 수 있다.
또한 Redis 장애/유실/교체 상황에서는 재적재(rebuild) 전략이 필요하다.


구현 내용

1. reconciliation 배치 구현

주기적으로 최근 변경 SKU 또는 전체 SKU를 대상으로 비교:

  • Redis: available/reserved/sold/version
  • RDB projection: available/reserved/sold/last_version

비교 규칙 예시:

  • redis.version == rdb.last_version인데 수량 다름 -> 오염/버그 의심
  • redis.version > rdb.last_version -> consumer lag 또는 미처리 이벤트 의심
  • rdb.last_version > redis.version -> Redis 유실/재구축 필요 의심

2. lag / pending / DLQ 점검 로직

  • stream/kafka consumer lag 수집
  • pending message 수집
  • 실패 이벤트 재처리 경로 정의

3. Redis rebuild 기능 구현

  • 기준: RDB projection
  • Redis 상태를 projection 기준으로 재적재
  • 필요 시 전체 rebuild / SKU 단위 rebuild 지원

4. 운영 알림 기준 정의

  • version mismatch
  • projection 반영 지연
  • pending 증가
  • rebuild 필요 SKU 감지

5. 운영 문서화

  • 장애 발생 시 점검 순서
  • rebuild 실행 방법
  • reconciliation 결과 해석 방법

체크리스트

  • reconciliation 배치 구현
  • Redis/RDB version 비교 로직 구현
  • mismatch 탐지 로직 구현
  • consumer lag/pending 모니터링 구현
  • 재처리 절차 정의
  • Redis rebuild 기능 구현
  • 운영 알림 조건 정의
  • 운영 문서 작성

의존관계

선행

  • event log / projection consumer 구현

후행

  • 운영 고도화
  • 필요 시 외부 시스템(ERP/물류) 연동 확장

작업 순서

  1. reconciliation 비교 기준 정의
  2. 배치 구현
  3. lag/pending 모니터링 추가
  4. rebuild 기능 구현
  5. 운영 문서 작성

완료 조건

  • Redis와 RDB projection의 차이를 탐지할 수 있다.
  • mismatch 발생 시 원인 분류가 가능하다.
  • Redis 유실/장애 시 projection 기준 rebuild가 가능하다.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions