Skip to content

FractalOps 코드베이스 승격/강등 정책

FractalOps 코드베이스 승격/강등 정책

Section titled “FractalOps 코드베이스 승격/강등 정책”
  • SSOT 우선 원칙 유지: 실행 경로에 테넌트/도메인/IP 하드코딩 금지
  • 멱등성과 재현성 보장: 인프라/커넥터 연산은 반복 실행 가능해야 함
  • 단기 전술 코드는 빠르게 강등하고, 재사용 가능한 모듈만 승격
flowchart LR
  newcode["신규 기능\n(기본 Tier A로 시작)"] --> gate{승격 게이트}
  gate -->|SSOT high=0\n+ 멱등 재실행\n+ 배포/검증 통과| tierS["Tier S\n재사용 코어"]
  gate -->|일부만 충족| tierA["Tier A\n정규화 후보"]
  tactical["특정 호스트/테넌트 전제\nside effect 큼 · 가드 없음"] --> tierB["Tier B\n전술/retired-path\n→ Tier S/A로 대체 후 제거"]
  tierA -. 정규화 .-> tierS
  tierB -. 강등/제거 .-> tierA
  • 조건
    • 런타임 값은 FRACTALOPS_* SSOT에서만 읽는다. (근거: backend/src/fractalops/foundation/ssot_keys.py, foundation/runtime_ssot.py)
    • 멱등 실행 보장(같은 입력으로 재실행 시 상태 안정).
    • 특정 조직값 하드코딩 없음.
    • 자동화 가능한 출력(JSON 요약/머신리더블)을 제공.
  • 예시
    • platform/k8s/cue-generate.sh
    • ops/lxc/drift_check.py
    • backend/src/fractalops/domain/<context>/features/* 하위 도메인 모듈

Tier A (후보: 거의 충족, 정규화 필요)

Section titled “Tier A (후보: 거의 충족, 정규화 필요)”
  • 증상
    • helper 중복/유사 로직 중복
    • 플래그/옵션 네이밍 불일치
    • 임시 우회 경로가 실행 코드로 유입
  • 조치
    • 공통 helper로 흡수 (예: foundation/ 공유 유틸로 추출)
    • SSOT 키 네이밍 통일 (FRACTALOPS_*)
    • preflight/wizard 템플릿 경로로 입력 강제
  • 증상
    • 특정 호스트/테넌트 전제 스크립트
    • 수동 절차 없이는 재현 불가능
    • side effect가 크고 가드레일 없음
  • 조치
    • 운영 재사용 금지
    • Tier S/A 모듈로 대체 후 제거

실행 경로에 하드코딩된 테넌트/도메인/IP가 있는지 검사합니다.

Terminal window
make infra-ssot-scan # 비엄격: 리포트만
make infra-ssot-scan-strict # 엄격: high 발견 시 실패 (승격 게이트)
make infra-ssot-scan-strict-all

Tier S 승격은 strict 스캔에서 high=0이어야 합니다.

  • 동일 입력으로 2회 실행해 결과가 안정적인지 확인 (두 번째 실행이 새 부수효과를 만들지 않아야 함)
  • 배포 경로에서 preflight/readiness가 정상인지 확인
Terminal window
make smoke-api # API 스모크
make verify-runtime # API + readiness + Temporal 전체 검증
make drift-check # 토폴로지 대비 인프라 드리프트
  • 신규 기능은 Tier A로 시작
  • 다음 3가지 충족 시 Tier S 승격
    1. SSOT 스캔 high=0 (make infra-ssot-scan-strict)
    2. 멱등 재실행 성공
    3. 배포/검증 파이프라인 통과 (make verify-runtime 등)