본문으로 건너뛰기

ADR-0017: ACKO Reconciliation Circuit Breaker 임계값 자동 조정 메커니즘

상태

Deferred

  • 제안일: 2026-03-30
  • 관련 이슈: aerospike-ce-ecosystem/project-hub#5
  • 검토 결과: DEFER
  • 보류 사유: ACKO 안정화 단계에서 운영 데이터 없이 복잡성을 도입하는 것은 시기상조. Option C(메트릭 기반 수동 조정)를 먼저 도입하여 데이터를 확보한 후 재검토 필요.

맥락 (Context)

ADR-0013에서 도입된 reconciliation circuit breaker는 maxFailedReconciles = 10 고정 임계값과 2^n 초 지수 백오프(최대 300초)를 사용합니다. 이 구현은 무한 retry 방지라는 핵심 목표를 달성하지만, 다음과 같은 운영상 한계가 식별되었습니다:

고정 임계값의 한계

시나리오10회 임계값 영향
1-node 클러스터약 30분 대기 — 과도한 복구 지연
8-node 클러스터 (네트워크 파티션)너무 빠르게 circuit open — 자동 복구 기회 상실

단일 backoff 공식의 한계

모든 에러 유형에 동일한 2^n 백오프가 적용되어, 에러 특성에 맞지 않는 재시도 간격이 사용됩니다:

  • DNS resolution 실패: 매우 짧은 retry가 유리하나 지수 백오프로 불필요하게 대기
  • Storage full: 긴 backoff이 적절하나 초기 retry가 빠르게 소진
  • Pod CrashLoopBackOff: 짧은 retry가 유리

Reset 조건

현재 성공 1회로 전체 카운터가 리셋되어, 부분적 성공/실패 상태가 반영되지 않습니다.

결정 (Decision)

보류됨 — 운영 메트릭 데이터 확보 후 재검토

에러 유형별 차등 임계값(Option A)은 기술적으로 타당하나, 현재 ACKO v0.1.7 안정화 단계에서 다음 이유로 보류합니다:

  1. 운영 데이터 부재: 현재 고정 임계값 10회가 실제 운영 환경에서 어떤 빈도로 circuit breaker를 트리거하는지 데이터가 없음
  2. 에러 분류 기준 미검증: Transient/Infrastructure/Configuration 분류가 실제 환경에서 명확히 구분 가능한지 확인되지 않음
  3. 복잡성 대비 이점 불명확: 에러 카테고리별 독립 카운터와 임계값 조합은 테스트 매트릭스를 크게 증가시킴
  4. 프로젝트 목표 충돌: Goal 3-1 "심플한 CRD 구조 유지"와 Goal 3-4 "E2E 테스트 커버리지 확장"에 부담

권장 순서: Option C(메트릭 기반 수동 조정)를 먼저 구현하여 acko_circuit_breaker_state 메트릭으로 운영 데이터를 축적한 후, 해당 데이터를 기반으로 Option A의 에러 분류 기준과 임계값을 설계하는 것이 "Quality over speed" 원칙에 부합합니다.

대안 (Alternatives Considered)

Option A: 에러 유형별 차등 임계값 (제안 권장안)

type circuitBreakerConfig struct {
TransientThreshold int // DNS, timeout → 20회
InfraThreshold int // storage, OOM → 5회
ConfigThreshold int // validation, webhook → 3회
DefaultThreshold int // 기타 → 10회
}
  • 장점: 에러 특성에 맞는 세밀한 제어, 불필요한 circuit break 방지
  • 단점: 에러 분류 로직 추가, 분류 오류 시 동작 악화, 테스트 복잡성 증가
  • 평가: 기술적으로 우수하나 분류 기준의 실효성 검증 필요

Option B: 적응형 임계값 (Adaptive)

threshold = baseThreshold * clusterSize / expectedRecoveryFactor
  • 장점: 클러스터 크기에 자동 적응
  • 단점: 복잡도 증가, 테스트 어려움, expectedRecoveryFactor 결정 기준 모호
  • 평가: 제안 본문에서도 복잡도 문제를 인정. 현 단계에서 과도함

Option C: 현재 유지 + 메트릭 기반 수동 조정

  • 장점: 가장 낮은 리스크, ADR-0013의 기존 메트릭(acko_circuit_breaker_state) 활용, 운영 데이터 축적 가능
  • 단점: 수동 개입 필요, 즉각적 자동 최적화 불가
  • 평가: 안정화 단계에 가장 적합. CRD 오버라이드 필드 추가 시 운영자에게 즉각적 가치 제공

결과 (Consequences)

긍정적

  • 보류 결정으로 안정화 단계의 복잡성 증가를 방지
  • Option C 선행 구현 시 운영 데이터 기반의 정보화된 결정 가능
  • ADR-0013의 안정성을 유지하면서 점진적 개선 경로 확보

부정적

  • 고정 임계값의 한계(1-node 과대기, 8-node 조기 트리거)가 당분간 유지
  • 에러 유형별 최적화가 지연되어 일부 시나리오에서 비효율적 retry 패턴 지속
  • Option C의 CRD 필드 추가가 Goal 3-1과 충돌할 가능성

관련 ADR