데이터로 설정
(섹션: 아키텍처 및 프로토콜)
1) "코드로서의 구성" 과의 아이디어와 차이
데이터로서의 구성 (CaD) 은 실행 코드와 무관하고 버전, 스키마, 마이그레이션, 감사 및 테스트를 통해 비즈니스 데이터로 관리되는 유형의 선언적 검증 된 모델로 구성을 표현한 것입니다.
구성 요소를 생성하는 논리가 템플릿/스크립트에 존재하는 "코드로서의 구성" 과 달리 CaD는 구성 요소 내에 루프, 조건 및 숨겨진 논리가없는 진실의 원천에서 명령을 제외합니다. 모두-깨끗한 데이터 + 엄격한 체계 + 정책.
주요 목표: 예측 가능성, diff 능력, 안전성 변경, 빠른 롤백, 규정 준수를 점진적으로 자동으로 제어하는 기능.
2) "데이터로 설정" 원리
1. 선언성과 모호성: 우리는 성취 단계가 아니라 원하는 상태를 설명합니다.
2. 안전 및 구성표를 입력하십시오: 엄격한 계약을 위해 JSON Schema/Proto/Avro/OpenAPI를 입력하십시오.
3. 아티팩트 불변성: 설정 샷이 버전으로 표시되고 서명됩니다 (출처).
4. 검증 및 정책: 파이프 라인-구문 → 의미론 → 코드 정책 (OPA, 규칙).
5. 구성 요소의 관찰 가능성: 로그/메트릭/추적의 버전 지문.
6. 책임 공유: 데이터 (설정), 스키마 (계약), 정책 (제한), 컨트롤러 (구현).
7. 모듈성 및 계층: 글로벌, 지역, 테넌트, 제품, 기능 수준, 예측 가능한 병합 및 우선 순위.
3) 구성 시뮬레이션: 계약으로서의 스키마
엔터티 패밀리: 라우팅, 제한, phicheflags, 관세, AB 세그먼트, 할당량, 위험 규칙, 재무 설정 등
유형: 명시 적 enum/oneOf, 범위, regex, 참조 무결성 (ref/ID).
스키마 버전 지정: 'v1 → v1beta2 → v2' (거부 계획, 마이그레이션).
결함/돌연변이: 검증 단계에서 안전한 채무 불이행; 결정 론적 적용 순서.
제약 조건: 비즈니스 제약 (예: 임차인의 'rateLimit <= 2000 rps').
yaml apiVersion: config. example. io/v1 kind: RateLimitPolicy metadata:
scope: tenant:acme spec:
targets:
- service: checkout endpoint: /api/pay method: POST limit:
unit: second value: 500 burst: 200 strategy: tokenBucket
4) 계층, 상속 및 갈등 해결
함수: '글로벌 → 영역 → 환경 → 테넌트 → 제품 → 코호트 → 사용자'.
병합 규칙: 선언적- "마지막 원" (무시) 또는 전략적 (필드 당 병합/패치/교체).
교차로에서의 검증: 상충되는 키를 금지하고 명시 적 재정의가 필요합니다.
최종 유효 설정의 시각화가 필요합니다 (결정 론적 확산).
5) 구성 수명주기 (GitOps 패러다임)
1. 진실의 출처: 데이터 + 스키마 + 정책이있는 저장소.
2. 파이프 라인:- 구문 검사 (lint),
- 계획에 따른 검증,
- 시맨틱 검사/테스트,
- 코드 정책 (예: OPA/레고),
- 안전한 이주 (§ 7 참조),
- 스냅 샷의 서명 및 게시.
- 3. 프로모션: 디렉토리 'dev/qa/staging/prod' or rings 'ring-0/.../ring-N' 사이의 PR.
- 4. 배송: 컨트롤러/운영자는 새로운 스냅 샷을 가져오고 조정주기를 통해 적용합니다.
- 5. 감사와 가역성: 모든 변화가 추적됩니다. 롤백-커밋/롤백 스냅 샷 되돌립니다.
6) 컨피그의 배달 및 배포
정적 (풀온 스타트): 시작시 스냅 샷을로드하고 다시 시작하여 업데이트하십시오.
동적 (시계/스트림): etcd/Consul/ZooKeeper, Kubernetes API/CRD, 독점 설정 서비스.
프로토콜: ETag/If-None-Match, long-poll/watch, 스냅 샷 + 증분 확산이있는 gRPC/REST.
캐싱: TTL 및 서명이있는 로컬 스냅 샷; 원자 변화 (이중 버퍼링).
시퀀스: 강력 (리더/쿼럼) vs 최종 (에지/IoT). 중요한 시스템의 경우 - 쿼럼 + RA.
글로벌 롤링: 동시 영역이 제한된 지역/링 (링 배치) 별.
7) 구성 데이터 마이그레이션
데이터베이스의 경우 확장 → 마이그레이션 → 계약이 작동합니
확장: 소비자를 깨뜨리지 않고 기본값으로 새로운 필드를 도입합니
마이그레이트: 백필/컨버터 (마이그레이션 제공 업체 스크립트, demempotency).
계약: 모든 컨트롤러가 새 버전의 스키마에있을 때 더 이상 사용되지 않습니다.
호환성 규칙: 오래된 논리는 새롭고 새롭고 오래된 전환을 이해합니다.
8) 정책, 준수 및 보안
코드로서의 정책: Rego/Conftest/OPA 게이트 키퍼-위험한 값 금지 (예: '타임 아웃 = 0', 비활성화시키기, 무제한 할당량).
RBAC/ABAC: 누가 어떤 섹션과 레이어를 변경할 수 있습니까?
민감한 세그먼트 (지불/제한) 에 대한 네 눈.
비밀: 우리는 설정에서 공통 구성 요소 (KMS, Vault, SOPS) 를 유지합니다. 링크/참조 만 있습니다.
서명 및 신뢰: 배송 검증 (증명), 서명되지 않은 스냅 샷 금지.
살균: 템플릿 및 렌더링 중 주입 방지.
9) 관찰 가능성, SLO 및 위험 관리
원격 측정에서 태그 설정: 로그/메트릭/트랙에서 '릴레이 _ 다이제스트, 설정 _ 버전, 링, 스코프}'.
설정 건의 황금 지표: 적용 시간, 성공률, 롤백 수, 일관성 시간.
롤링 구성시 게이트: 코드-카나리아 단계 및 SLO 저하를위한 자동 정지.
개발: 내부/베타 코호트 먼저.
10) 뜨거운 재 장전, 트랜잭션 및 응용 프로그램 보안
원자 스위치: 메모리 → 단일 원자 스위치에서 새로운 구성이 준비되고 있습니다.
드라이 런: 응용 프로그램을 검증하고 시뮬레이션합니다 (필드/정책 충돌 포함).
부분적 실패: 관련 구성 요소에 대한 전혀 또는 전혀없는 전략 또는 분해에 대한 명확한 설명.
백오프/재시도: 응용 프로그램 오류시-안전한 롤백 및 지수 지연으로 반복하십시오.
11) 구조의 하위 집합으로 Ficheflags
Ficheflags는 세그먼트 타겟팅, 포함 반경 제한, 킬 스위치와 같은 특수 정책으로 구성 데이터입니다.
요구 사항: 결정 론적 타겟팅 시맨틱, 감사, 보안 불이행, 클라이언트/서버 버전 호환성.
12) 도구 및 미디어
미디어: JSON/YAML/TOML/프로토콜/Avro (네트워크 전달의 경우-더 자주 프로토/JSON).
렌더/구성: Kustomize/Helm/Jsonnet (발전기와 같지만 결과는 깨끗한 데이터 임).
스토리 지/버스: Git, OCI 레지스터 (아티팩트), S3 호환 스토리지, etcd/Consul/KV.
컨트롤러: 독점 운영자, GitOps 에이전트, 사이드카 설정 제공 업체.
정책: OPA/Rego, Kyverno와 같은 메커니즘.
13) 점검표
디자인
- 체계가 먼저 온다 (JSON Schema/Proto), 유형/제한/기본값이 설명됩니다.
- 스키마 버전과 마이그레이션이 문서화되어 있습니다.
- 레이어 계층 및 병합 전략 정의 및 테스트.
파이프 라인
- Lint → 스키마 유효성 → 의미 론적 테스트 → 정책 확인 → 부호 → 게시.
- 리뷰어를위한 드라이 런 및 효과적인 구성 시각화.
- SLO를 통한 자동 게이트가있는 컨피그의 카나리아 롤링.
Prod
- 로그/메트릭에 '설정 _ 다이제스트' 가 있습니다.
- 설정 롤백-코드 입금과 동일한 버튼.
- 구성 스냅 샷/백업 및 감사 기록을 사용할 수 있으며 확인할 수 있습니다.
14) 빈번한 반 패턴
설정의 명령: 논리가있는 조건/스크립트/템플릿은 검증되지 않고 예측할 수 없습니다.
하나의 파일/저장소에서 비밀과 공유 설정을 혼합하십시오.
Opaque 병합: 결론이 어디에서 왔는지 확실하지 않습니다.
계획이 부족합니다: "모든 것이 유효합니다" 판매중인 버그.
글로벌 링/카나리아 무료 편집: 모두를위한 즉각적인 분해.
주변 환경의 드리프트: 진실의 근원을 넘어 런타임에 수동 편집.
강제 비활성화 메커니즘이없는 구성 캐시의 긴 TTL.
15) 시나리오 (스케치)
A. 지역별 미세 조정 트래픽 제한
1. 'RateLimitPolicy' 에서 'ring-0' (내부 클라이언트) 으로 변경된 PR.
2. 자동 점검 스키마/정책 (2k rps
3. p95/오류율 모니터링, 'ring-1' (사용자의 5%) 프로모션
4. 'ring-N' 으로 확장하고 스냅 샷을 수정하고 작업을 종료합니다.
B. 관세 일정 업데이트 (재무 설정)
강력한 의미 및 비즈니스 정책: 이중 검토, 2 단계 프로모션, 타임 창 참가, 감사 및 즉각적인 롤백 기능.
킬 스위치가있는 C. Global 결제 fifflag 설정 플래그: "직원 → 베타 → 10% → 100%", 성공적인 지불률이 임계 값 아래로 떨어지면 자동 정지.
16) 제로 다운 타임 및 프로그레시브 배송과의 통합
설정 카나리아는 릴리스 링과 동기화됩니다.
버전 호환성: 먼저 필드를 확장 한 다음 코딩 한 다음 강화합니다.
그림자 구성: 전투와 비교하기위한 솔루션의 병렬 계산 (예: 제한).
17) 요약
데이터 구성 방식은 깨지기 쉬운 파일의 설정을 명확한 계약, 검증 및 정책을 통해 강력한 도메인 모델로 변환합니다. 이것이 예측 가능한 롤링, 안전한 실험 및 사고에 대한 빠른 반응의 기초입니다. 체계, 별도의 비밀, GitOps 및 카나리아 구성 푸치를 공식화하면 구성이 위험에 빠지지 않아 관리 플랫폼 자산이됩니다.