자동 치유 및 자기 치유
(섹션: 기술 및 인프라)
간략한 요약
자동 치유는 "Kubernetes magic" 이 아니라 올바른 샘플 및 한계, 제어 된 배신, 결함이있는 인스턴스 격리, SLO 자동화 및 버튼/봇에 의한 runabook 동작 등 일련의 분야입니다. 목표는 눈덩이 혼잡없이 MTTR을 줄이고 p95/p99, 지불 및 TTW를 최고점까지 유지하는 것입니다.
1) 자기 치유 원리
1. 실패 및 격리: 불량 포드/인스턴스를 신속하게 식별하고 격리합니다.
2. 백오프 + 지터: 지수 지연 및 지터가있는 모든 리트레이/스케일 아웃.
3. SLO 인식: 빠른 연소 오류 예산으로 자동화가 활성화/향상되었습니다.
4. 이념성: 반복 거래는 안전합니다 (특히 지불/대기열).
5. 심층 방어: 샘플, 할당량, 한계, 회로 차단기, 특이 치 배출, 속도 제한, 분해 모드.
2) Kubernetes의 기지
2. 샘플 1 개: 활력/준비/시작
startupProbe는 무거운 서비스의 조기 재시작으로부터 보호합니다.
준비 프로브는 교통 준비 상태 (따뜻한 캐시/연결) 를 결정합니다.
livenessProbe는 중단 된 프로세스를 다시 시작합니다
yaml readinessProbe:
httpGet: { path: /health/ready, port: 8080 }
periodSeconds: 5 timeoutSeconds: 1 failureThreshold: 3
livenessProbe:
httpGet: { path: /health/live, port: 8080 }
initialDelaySeconds: 20 periodSeconds: 10 failureThreshold: 3
startupProbe:
httpGet: { path: /health/startup, port: 8080 }
periodSeconds: 5 failureThreshold: 30
2. 한계, PDB 및 우선 순위 2 개
요청/제한은 "시끄러운 이웃" 을 제외합니다
PodDisruptionBudget (PDB) 은 모든 포드가 동시에 떨어지는 것을 방지합니다.
yaml apiVersion: policy/v1 kind: PodDisruptionBudget spec:
minAvailable: 2 selector: { matchLabels: { app: payments-api } }
중요한 경로 (지불, 게이트웨이) 에 대한 PriorityClass.
2. 3 재시작 및 배포 전략
'최대 사용할 수 없음: 중요한 서비스를위한 0'; 작은 증분으로 롤링 업데이트.
PodAntiAffinity는 포드를 노드/영역에 할당합니다.
3) 자동 스케일링 및 이벤트 스케일링
HPA (CPU/사용자 메트릭)
yaml apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler spec:
minReplicas: 3 maxReplicas: 30 metrics:
- type: Resource resource: { name: cpu, target: { type: Utilization, averageUtilization: 70 } }
- type: Pods pods:
metric:
name: http_requests_per_second target:
type: AverageValue averageValue: "50"
VPA
배경 작업자/배치 작업에 사용하십시오. prod-API에서-조심스럽게 (다시 시작).
KEDA (대기열/외부 이벤트)
Kafka 지연, RabbitMQ, Redis, Prometheus 요청에 대한 트리거-작업이 축적되면 소비자를 늘립니다.
4) 네트워크 방어: 회로 차단기 및 컬링 "나쁜"
특사/Istio 특이 치 탐지 (и
yaml outlierDetection:
consecutive5xx: 5 interval: 5s baseEjectionTime: 30s maxEjectionPercent: 50
회로 차단기는 종속성을 떨어 뜨리지 않도록 동시 요청/연결을 제한합니다.
속도 제한
복귀의 물결이 사고를 증가시키지 않도록 게임 제공 업체의 입력 호출/PSP 경로/를 제한하십시오.
5) 지터가있는 레트라이, 타임 아웃 및 백오프
규칙: 첫 번째 타임 아웃, 후퇴, 항상 지터와 제한된 시도로.
의사 코드:python def backoff(attempt, base=0. 1, cap=2. 0):
import random, math sleep = min(cap, base (2 attempt))
jitter = random. uniform(0, sleep 0. 4)
return sleep + jitter
결제-dempotent 키 + 중복 제거.
대기열의 경우-데드 레터 및 지연된 재 시도.
6) 대기열/스트리밍의자가 치유
DLQ + 성장 경고; 고립 된 재 처리.
제어 지연: 자동 규모 소비자 (KEDA), 생산자에 대한 역압.
정확히 한 번/적어도 한 번-의식적으로 선택; 작업은 demmpotent입니다.
7) 현금 및 예열
안전한 장애/롤백을위한 버전 키 ('v2:').
DB/PSP에 연결되는 따뜻한 풀; 전환 전 예열 (청록색/카나리아).
"콜드" 데이터베이스 적중률을 줄이기 위해 부동산 중입니다.
8) SLO에 의한 자동 치료 (신호 동작)
우리는 연소율/TTW/p95 경고를 안전한 자동 동작과 연관시킵니다
카나리아/롤백을 중지하십시오.
(PHP 3 = 3.0.6, PHP 4)
저하 모드 활성화 (UX 단순화, 무거운 기능 비활성화).
타임 아웃이 급증하면 PSP 경로를 전환합니다.
기능 플래그 킬 스위치 활성화
예 (Alertmanner → Webhook → Orchestrator 아이디어):yaml alert: WithdrawalsQueueLag labels: { action: "scale_workers", target: "withdrawals-consumers", by: "+5" }
9) 악화 모드 (우아한 저하)
UI (요청 감소) 를 단순화하고 "비싼" 위젯을 끄십시오.
더 많은 캐싱, 더 적은 팬 아웃/집계.
LLM/추천의 경우-컨텍스트/모델의 크기를 줄이고 "빠른 경로" 를 활성화하십시오.
10) 자동 수정에 대한 GitOps 접근
모든 자동 치료 정책 및 매개 변수 (타임 아웃, 임계 값) 는 Git에 있습니다.
모든 자동 동작은 Grafana에 주석과 변경 로그에 항목을 만듭니다.
카나리아 정책 및 SLO 게이트도 코드입니다.
11) 카오스 엔지니어링: 치유가 효과가 있는지 확인
장애 주사: 네트워크 지연, 난로 감소, PSP 에뮬레이터 장애, 대기열 지연.
게임 데이 시나리오: 우리는 MTTR, 자동 작업 품질, 아티팩트의 존재를 측정합니다.
결과 → runabooks, 임계 값, phicheflags 업데이트.
12) 자동 치유에 대한 관찰 가능성
Exemplars: p95 메트릭에서 트랙으로 빠르게 점프합니다.
'trace _ id' 및 필드 'Reshitory', 'sid', 'atorized _ mode = 참' 의 로그가 있습니다.
릴리스 비교 대시 보드 (안정 대 카나리아), SLO 카드.
자동 작업 감사: 누가/무엇/언제, 소스 메트릭, 결과.
13) 안전 및 준수
자동 치료 로그/메트릭에는 비밀이 없습니다.
지불 활동의 경우-이중 확인/역할.
Geo/PII-feilover로 "잘못된" 지역으로 트래픽을 전달하지 마십시오.
14) 실제 템플릿
Istio DestinationRule-연결 풀 및 특이 치
yaml trafficPolicy:
connectionPool:
http: { http1MaxPendingRequests: 1000, maxRequestsPerConnection: 100 }
outlierDetection:
consecutive5xx: 5 interval: 5s baseEjectionTime: 30s maxEjectionPercent: 50
플래거-자동 플러시/롤백이있는 카나리아
yaml analysis:
interval: 1m threshold: 5 metrics:
- name: request-success-rate thresholdRange: { min: 99 }
- name: request-duration thresholdRange: { max: 300 }
webhooks:
- name: smoke url: http://tester/smoke
KEDA ScaledObject-카프카 지연
yaml triggers:
- type: kafka metadata:
topic: withdrawals bootstrapServers: broker:9092 consumerGroup: w-consumers lagThreshold: "5000"
15) 구현 점검표
1. 시작/준비/활력 및 건강 종점이 구성됩니다.
2. 한계/자원 요청 + PDB/친 화성 방지.
3. API 및 근로자를위한 HPA/KEDA; 지연/처리량 지표.
4. 게이트/메쉬의 회로 차단기, 특이 치 배출, 속도 제한.
5. 백오프 + 지터, 결제 거래의 demempotency가있는 Retrai.
6. 버전 캐시 및 저하 모드.
7. SLO 게이트 → 자동 작동 (롤백/스케일/경로/킬 스위치).
8. GitOps 정책 코드 + 감사 조치, 주석 공개.
9. 주요 시나리오에 대한 혼돈 테스트 및 게임 데이.
10. MTTR/Alert Quality 대시 보드 및 자동 치료 보고서.
16) 반 패턴
시간 의존성 → 플 래핑으로 인해 라이브네스는 프로세스를 "손톱" 합니다.
타임 아웃/지터 → 요청의 폭풍이없는 Retrai.
IO 종속 서비스를 제공하는 CPU 별 HPA → "아무데도".
롤백 → 데이터 손상 중 버전이없는 공유 캐시.
감사/런북없이 자동 동작.
DLQ/지연 지표가 없습니다. → 조용한 부채 축적.
자동 치유와 "숨기기 문제" 혼합: 자동화는 증상을 치유합니다. 근본은 제거되지 않습니다. → 사고 반복.
요약
자가 치유는 고품질 샘플 및 한계, 유능한 배신 및 격리, SLO 신호에 대한 자동 동작, 혼돈 점검 및 감사 등 엔지니어링 분야입니다. 이 윤곽은 플랫폼 충돌에 강하고 MTTR을 차단하며 가장 뜨거운 시간에도 주요 iGaming 메트릭 (p99, 결제 변환 및 TTW) 을 절약합니다.