[BE-12] Observability 지표 발신 (게이지·부트스트랩·전파 지연)
작업 내용 (설계 의도)
변경 사항
PRD Operations·NFR·Success Metrics를 발신 가능하게 지표를 조작화한다(senior-pm 정합 #2). 카운터(평가·캐시 접근)와 redis-degraded 경보는 각 소유 티켓(BE-06 평가, BE-03 캐시/pub-sub)에서 발신하고, 본 티켓은 게이지·전파 지연·부트스트랩 경보를 발신한다. 근거 TDD: ../TDD.md Observability “본 과제가 발신하는 지표·경보”. 임계 경보 규칙·대시보드 패널은 형제 과제(⑦·⑥)가 지표를 소비해 구성 — 본 과제는 정확한 발신까지 책임(경계).
FeatureFlagMetricsBinder(infrastructure, MeterRegistry 바인딩): 게이지feature_flag_local_snapshot_size(LocalStore 크기),feature_flag_bootstrap_success(부트스트랩 성공 1/0),feature_flag_pubsub_listener_active(RedisMessageListenerContainer 리스닝 여부),feature_flag_pubsub_connections(전용 구독 커넥션 수) — 리스너 스레드/커넥션 누수·미기동 조기 발견(NFR).- 전파 지연 게이지
feature_flag_propagation_lag_seconds: BE-03 subscriber가 기록한 최근 전파 지연(occurredAt→수신)을 게이지/타이머로 노출. - 부트스트랩 실패 시 critical 경보(
source=feature-flag) 발신. - 지표 소비(임계 알림·대시보드)는 형제 과제 위임 — 본 티켓은 발신만.
- 독립 파일(신규)이라 wave 4 병렬 배치. BE-03/BE-06 파일은 수정하지 않고 이미 발신된 값을 게이지로 읽거나 자체 게이지를 등록.
의존
- BE-03 (LocalStore·pub/sub 리스너·전파 지연 기록)
- BE-06 (평가 경로 — 카운터는 BE-06 소유, 본 티켓은 게이지)
다이어그램
클래스 의존
flowchart LR Binder["FeatureFlagMetricsBinder"] --> Registry["MeterRegistry"] Binder --> Local["LocalFeatureFlagStore"] Binder --> Listener["RedisMessageListenerContainer"]
테스트 케이스
- 로컬 스냅샷 크기 게이지가 적재된 플래그 수를 반영한다
- 부트스트랩 성공 시 bootstrap_success 게이지가 1, 실패 시 0이 되고 critical 경보가 발신된다
- pub/sub 리스너가 기동 상태면 listener_active 게이지가 1이다
- 전파 지연 게이지가 최근 수신 전파 지연 값을 노출한다
- 전용 구독 커넥션 수 게이지가 0보다 크다(리스너 기동 후)