[BE-10] 통합 와이어업 + 데모 게이팅 E2E (통합 티켓)
작업 내용 (설계 의도)
변경 사항
공통 파일 수정(Single Writer 통합) + 전체 시나리오 E2E. 근거 TDD: ../TDD.md Testing Plan(scenario)·Release Scenario·Success Metrics. 공통 파일은 이 티켓 단독으로 수정해 wave 내 머지 충돌을 방지.
SecurityConfig.kt#configureAuthorization에/feature-demo/**permitAll1줄 추가(데모는 X-User-Id 기반, AUTH-04 관례). 관리 API/admin/feature-flags는 기존/admin/**hasRole ADMIN가 커버 — 추가 불필요.- 필요 시
application.yml에 pub/sub 관련 설정 확인(별도 신규 키 없으면 생략). - 데모 게이팅 E2E 시나리오 테스트(scenario 레이어, Testcontainers MySQL+Redis): 관리 API로 플래그 생성/전이 → 데모 엔드포인트 동작 검증.
- 롤백: SecurityConfig 변경은 permitAll 1줄 제거로 역전.
의존
- BE-08 (관리 API), BE-09 (데모 엔드포인트) — 최종 통합
- BE-12 (Observability 지표 — SM3 다중인스턴스 검증 시 전파 지연 지표 활용)
다이어그램
처리 흐름 (E2E)
sequenceDiagram participant T as E2E 테스트 participant A as AdminApi participant Demo as DemoApi T->>A: POST 플래그 ON 생성 T->>Demo: GET /feature-demo/hello (200) T->>A: POST archive T->>Demo: GET (503, 재배포 없이) T->>A: POST activate T->>Demo: GET (수 초 내 200)
테스트 케이스 (scenario E2E)
- 플래그 ON 생성 후 데모 엔드포인트가 200을 반환한다
- 플래그 archive(OFF) 후 데모 엔드포인트가 재배포 없이 503을 반환한다
- 재활성(ON) 후 수 초 내 데모 엔드포인트가 200으로 복구된다(전파)
- PercentageRollout 10→50→100 단계에서 이미 노출된 userId는 계속 노출된다(sticky·단조 증가)
- ARCHIVED 플래그는 목록 조회의 활성 필터에서 제외되고 평가 시 기본값을 반환한다
- 관리 변경 성공 건수와 감사 로그 적재 건수가 일치한다(커버리지 100%)
- Redis 중단 후에도 로컬 스냅샷으로 평가가 지속된다(폴백)
- 다중 인스턴스 킬스위치 전파(SM3): 같은 Redis에 붙은 2개 구독자(compose 스케일아웃 2 인스턴스 또는 2 Spring 컨텍스트/2 구독자)에서 플래그 변경 후 양쪽 로컬 반영이 3초 이내임을 시각차로 검증한다(20000TPS 부하 실측은 형제 과제 위임 — 경계)