[BE-41] 수집 v2 설정·scheduler 통합·릴리즈 검증
작업 내용 (설계 의도)
변경 사항
공통 application.yml budget/lease/tick 설정, runtime feature flag, BE-34 최소 trigger의 cron/config wiring, 모든 adapter wiring을 마지막에 통합한다. 기존 00:00/00:10 legacy 수집 scheduler와 v2 dispatcher가 동시에 외부 호출하지 않도록 release 순서를 코드/운영 절차로 검증한다. 09:00 SLA capture/MISSED 기록이 notification dispatch보다 먼저 끝나는 ordering을 실제 scheduler 구성으로 보장한다. 09:00 이전 미종료 cycle을 operations summary/log metric으로 표면화한다. 롤백은 flag OFF, lease expiry 확인, 다음 KST 일자의 legacy 재개다.
의존
- BE-34
- BE-35
- BE-36
- BE-37
- BE-38
- BE-39
- BE-40
- BE-42
- BE-43
다이어그램
처리 흐름
sequenceDiagram participant O as Operator participant F as Feature Flag participant S as Scheduler participant D as Dispatcher O->>F: enable v2 after legacy disabled S->>D: each minute tick D-->>S: progress metrics O->>F: disable on incident
클래스 의존
flowchart LR SchedulingConfig --> DispatcherScheduler DispatcherScheduler --> CollectionDispatchUseCase CollectionDispatchUseCase --> FeatureFlagGateway OperationAPI --> CollectionSummary
테스트 케이스
- v2 ON 상태에서 legacy collection scheduler는 외부 수집을 시작하지 않는다.
- v2 OFF 상태에서 기존 scheduler와 기존 결과 API가 동작한다.
- 동일 source를 두 application context가 동시에 tick해도 하루 cycle은 하나만 claim한다.
- 2,594건 fixture는 slice/daily budget을 넘지 않고 09:00 이전 상태를 summary에 남긴다.
- 모든 source adapter의 request delay, UA, whitelist, page-size 상한 regression test가 통과한다.
- 09:00에는 SLA capture 또는 MISSED 기록이 notification dispatch보다 먼저 단 한 번 완료된다.
- legacy collection scheduler와 v2 dispatcher scheduler가 같은 활성 source에 동시 HTTP를 발행하지 않는다.