운영 및 → 운영 인프라 확장
운영 인프라 스케일링
1) 왜 그리고 "스케일링" 으로 간주되는 것
스케일링은 SLO 및 제어 된 비용으로 처리량 (RPS/TPS, 연결, IOPS, 처리량) 및 데이터 볼륨을 증가시키는 플랫폼의 시스템 기능입니다. iGaming/fintech의 경우 이는 예금/베팅 전환, 라이브 게임 및 합의와 같은 돈에 관한 것입니다.
목표:- SLO를 X- 폴드 로드 성장과 계절별 피크로 유지하십시오.
- 예측 가능한 스케일링 시간 (시간이 아닌 분) 을 제공합니
- 경제 절약: 비용/RPS, 비용/거래, 비용/1k 이벤트.
2) 확장 가능한 플랫폼 원칙
1. 수평 우선: 소규모 무국적 서비스로 분할; 상태-데이터 클러스터에서.
2. 역압 및 대기열: 스무딩 버스트, "폭풍" 방지.
3. 클라이언트/에지/서비스/데이터베이스의 모든 계층에서 캐싱.
4. 이념과 반복성: 안전한 퇴각, 아웃 박스, 디드 업.
5. 제한된 종속성: 타임 아웃, 차단기, 격벽 격리, 속도 제한.
6. 용량 신호 별 관찰 가능성: 헤드 룸, p95/p99, 지연, 연결, 할당량.
7. 가드 레일이있는 자동 스케일링: HPA/VPA/Cluster Autoscaler + 정지 조건.
8. 의도적으로 다중 영역: 독립적 인 블라스트 존, 로컬 데이터, 안정적인 파이 오버.
3) 용량 계획: "필요한 금액 계산" 방법
모델 입력: 대상 피크 TPS, 트래픽 프로파일 (시간당), "임계 경로", 캐시 적중 비율, 평균 페이로드, SLO 및 공급자 제한.
빠른 평가 (규칙):- RPS → CPU/포드: 'pods = RPS p99 _ time/perfect _ CPU _ in _ pod' (30-50% 의 마진).
- 대기열: '최소 _ speed _ of _ savers는 피크 _ speed _ of _ producers 1입니다. 2`.
- DB 연결: 'max _ conns = active _ service _ pools medium _ pool _ size 1. 3`.
- 캐시: 크기 = "N 분에 뜨거운 작업 설정" + 20-30% 마진.
- 탈출/CDNA: 피크 출구 = 피크 요청 평균 응답 크기 (압축 고려).
헤드 룸: 피크에서 20-40% 목표 (계층 별). 15% 이하 → "용량 향상" 트리거.
4) 레이어 및 스케일링 패턴
4. 1 가장자리/CNC/WAF
가장자리 캐싱 (TTL + SWR), 지리 균형, 압축, TH/2/3.
IP/JWT/key에 의한 주변의 속도 제한, 서지 보호.
중개인/펍/서브 채널을 통한 이벤트 팬 아웃 (잭팟, 라이브 알림).
4. 2 개의 백엔드 용 API 게이트웨이
통계에 의한 수평 스케일링, 다운 스트림에 의한 전용 풀.
비즈니스 지표 별 HPA: RPS, p99, CPU뿐만 아니라 풀 대기열 작업.
4. 3 비동기 대기열/스트리밍 (Kafka/Rabbit/Pulsar)
당사자 및 소비자별로 규모; 왜곡 (키 및 분포) 을 피하십시오.
Lag 경고 + 소비자의 자동 스케일링; DLQ 및 재 시도 주제.
SLA 조정 및 재생에 따른 유지.
4. 4 캐시 (Redis/Memcached)
클러스터 모드, 복제본, 퇴거 정책 (LFU), 멀티 젯, 파이프 라인.
핫키 및 배경 작업 분리, 클라이언트 제한 및 최대 메모리 정책.
4. 데이터베이스 5 개
복제본을 읽고 라우팅, 연결 풀링을 읽으십시오.
지역/테넌트/키 범위별로 조화를 이룹니다.
CQRS: 마스터/리더에게 쓰고 복제본을 읽습니다.
인덱싱 및 배치 기록 워크 플로 (아웃 박스 → 스트림 → 싱크).
보관 및 핫/콜드 데이터 (계층).
4. 6 개의 파일/오브젝트 상점
멀티 스레딩, 멀티 파트 다운로드, CDN- 프론트, 비동기식 변환.
공급자 할당량, 꼬리 청소 및 탈출 예산.
4. 7 제공자 (PSP/KYC/스튜디오)
다중 공급 업체 및 견적/SLO/비용 라우팅.
각 공급자에 대한 회로 차단기 + 속도 제한, 대기열을 다시 트레이하십시오. "그레이스 모드".
5) 자동 스케일링 및 가드 레일
쿠 베르네 테스:- HPA: 'rps _ per _ pod', 'queu _ deep', 'p99 _ latency'; 'targetAverageValue'.
- VPA: 자원 지침; 최고점에서 업데이트하십시오.
- 클러스터 오토 스케일러: 우선 순위가있는 스팟 + 주문형 프로파일.
- PodDisruptionBudget/TopologySpreadConstrints: 구역 간 균일.
- LimitRange/ResourceQuota: "취한" 고지에 대한 보호.
apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler spec:
scaleTargetRef: {apiVersion: apps/v1, kind: Deployment, name: api-gw}
minReplicas: 8 maxReplicas: 200 metrics:
- type: Pods pods:
metric:
name: rps_per_pod target:
type: AverageValue averageValue: "120"
- type: Pods pods:
metric:
name: p99_latency_ms target:
type: AverageValue averageValue: "280"
behavior:
scaleUp:
stabilizationWindowSeconds: 90 scaleDown:
stabilizationWindowSeconds: 300
가드 레일 (예):
- 카나리아 p99> 1의 경우 "일시 정지 및 롤백" 3 × 기준선 10 분
- 프라임 타임에 "동결 스케일 다운", 스케일 업 만.
- '오픈 _ 회로 = 1' 에서 병목 현상에 대한 "재시도 중지".
6) 다 지역: 자산/자산 및 자산/책임
폭발적인 지역: 독립적 인 클러스터, 지역 비밀/할당량.
글로벌 라우팅: 후기/지리 기반, 건강 프로브, 수동 재정의.
- 핫 - 로컬 + 최종 복제 (스트림).
- 중요한 거래-도메인 (원장/잔액) 에 따라 일치합니다.
- 실패한 플레이 북: 단계별 소스 변경, TTL, 워밍업 캐시.
- 운동 규정 (DR): RTO/RPO 목표를 가진 분기 별 운동.
7) 네트워크 및 서비스 패턴
서비스 메시: 다운 스트림 한계 당 mSL, 재 시도/차단기, 특이 치 감지.
L4/L7의 eBPF/관찰 가능성, 연결 제한, 헤드 오브 라인 보호.
S2S, 일반 요율 제한 및 감사를위한 내부 API 게이트웨이.
블라스트 영역 별 VPC/서브 넷, GPS/Egress 제어, 공급 업체와의 피어링.
8) 성능: 테스트 및 증거
프라임 타임 + 최악의 프로파일로로드 및 스트레스.
흡수 (긴) -메모리/디스크립터 누출, 대기 시간 증가.
혼돈/게임 일: 중개인/공급자/영역 드롭, "느린 공급자".
CI의 Perf 회귀: 일련의 참조 시나리오 및 자동 게이트.
9) 데이터 및 저장: 성장 전략
천장으로의 수직 성장 → 수평/샤딩.
→ 복제본/캐시를 읽으십시오. → 배치/asynchron/log를 기록합니다.
스키마 마이그레이션: 전역 자물쇠가없는 확장 → 마이그레이션 → 계약.
보관: 저렴한 저장 공간에 콜드 배치 + 주문형 재수 화.
검색: 증분 업데이트 파이프 라인이있는 개별 인덱스 (OpenSearch/Solr).
10) 공급자 및 할당량 관리
쿼터 카드 (TPS, 창, 비용); (PHP 3 = 3.0.6, PHP 4) 9`.
비용/품질 별 라우팅 (스마트 라우팅).
OLA SL SLO 계약 및 할당량 증가 프로세스.
대안의 풀 및 "핫" 스위칭.
11) 관찰 및 스케일링 신호
메트릭 (최소):- 수용 인원 헤드 룸 계정 및 '큐 _ lag/백 로그 성장'; 'kafka ISR'; 'db 연결 '/' repl lag'; '레디스 퇴거'; '오픈 _ 회로 '/' 재 시도 _ rate'; '할당량 _ 사용량'.
- 비즈니스 지표: 성공률/예금 변환, 게임 시작 시간.
- 비용: 비용/RPS, 비용/1k 통화.
- 용량 개요 (헤드 룸, 최고 위험, 연소 속도 SLO).
- 스트림 및 큐 패널 (지연/백 로그, 소비자 채도).
- DB & Cache (p99, 연결, 적중/퇴거).
- 공급자 및 인용문 (TPS, 타임 아웃, 비용, 전환).
- 안전 변경 (사전/사후 릴리스, 카나리아, 자동 게이트).
ALERT HeadroomLowAPI
IF capacity_headroom{layer="api"} < 0. 15 FOR 10m
ALERT KafkaBacklogAtRisk
IF (consumer_lag > 5e6 AND rate(consumer_lag[5m]) > 5e4) AND (hpa_desired == hpa_max) FOR 10m
ALERT DBConnectionsNearMax
IF active_conns / max_conns > 0. 85 FOR 5m
ALERT ProviderQuota90
IF usage_quota_ratio > 0. 9 FOR 5m
12) FinOps: 스케일링은 수익성이 있습니다
효율성 비율: 비용/RPS, 비용/예금, 비용/1k 이벤트.
올바른 크기: VPA/권장 사항, 초과 프로비저닝 보고서.
중요하지 않은 스팟/선점 가능; 베이스 로드 예약/커밋.
탈출 예산 및 캐싱, CDNA/에지 오프로드.
값별 로그 수집 및 보관 (핫 vs 콜드).
확장을위한 경고 할당량 (소프트 캡) 및 자동 티켓.
13) 프로세스와 사람들
변경 관리: 카나리아, phicheflags, 회귀가 중단됩니다.
사건 준비: 런북 '및 "용량 추가 위치", "영역 전환 방법".
일정 피크: 경기/토너먼트/캠페인 일정 및 제공자 창.
정규 경기 일 및 DR 운동.
소유권 행렬: 누가 feilover/증가 할당량에서 "버튼을 누를 수 있습니까?"
14) 구현 점검표
기본 확장 성 시작 (2-4 주):- 중요한 경로와 한계 (계층별로) 의지도는 헤드 룸 대상이 30% 이상입니다.
- Business Metrics + Cluster Autoscaler의 HPA; PDB/SpreadConstraints.
- 핫 경로, demempotency 키, 아웃 박스에 대한 대기열.
- 캐시: 목표 90% 이상, 퇴거 정책, 주요 지수.
- DB: 복제본, 연결 풀, 날카로운 계획을 읽으십시오.
- 제공자: 다중 공급 업체, 할당량, 차단기/퇴각.
- 대시 보드 "용량/스트림/DB/제공자", § 11에서 경고합니다.
- 카나리아 및 사전/사후 릴리스 자동 게이트.
- DR 플레이 북과 하나의 부분 feilover 교육.
- 캐시 예열, 사전 규모 HPA/ASG, 따뜻한 대기 복제품.
- 공급자 할당량을 늘리고 스마트 라우팅을 가능하게합니다.
- 중요하지 않은 경고에 대한 야간 모드 억제를 사용할 수 있습니다.
- "안전 모드" 기능은 즉시 활성화 할 수 있습니다.
15) 반 패턴
수평 대신 수직 업그레이드 "풀 스톱".
모든 다운 스트림의 일반적인 스레드/연결 풀입니다.
병목 현상 시간 초과, 지터 → 폭풍의 부족.
경고 및 규모 정책에는 히스테리시스가 없습니다 → "톱질".
데이터 샤딩 및 현지화가없는 단일 글로벌 데이터베이스.
타임 아웃/리트레이/관찰 가능성 제어없이 공급 업체 SDK에 대한 맹목적인 믿음.
DR 운동 부족: feilover "종이에만".
16) 확장 성 KPI
최고점에서의 SLO 준수 (p95/p99, 성공률).
프라임 타임에 레이어 별 헤드 룸.
MTTS (Mean Time To Scale) -추가 리소스가 제공 될 때까지.
백 로그/래그 해상도 시간-피크 후 대기열이 붕괴되는 시간.
활발한 성장 기간 동안 실패율을 변경하십시오.
비용/RPS 및 캐시/CNC/에지 오프로드로 인한 절약.
DR 준비 상태: 운동중인 RTO/RPO.
17) "빠른" 템플릿의 예
카프카: 소비자의 참여 및 자동 규모 (아이디어):
partitions(topic="bets") = ceil(peak_msgs_per_sec / target_msgs_per_partition)
consumers = min(partitions, max_pods); rebalance_on: skew > 1. 5x scale_up_if: lag > 5e5 && rate(lag[5m]) > 5e4
PostgreSQL:
max_connections = poolers pool_size 1. 3 read_routing: primary (write), replicas (read majority)
shard_key: tenant_id or region_id
리디스:
maxmemory-policy: allkeys-lfu cluster-replicas: 1 evict-alert: rate(evictions[5m]) > 0 && used_mem/limit > 0. 8
카나리아 자동 게이트 정책 (요약):
guardrails:
- metric: api_p99_ms, threshold: 1. 3 baseline_1d, window: 10m, action: pause_and_rollback
- metric: error_rate, threshold: 2 baseline_1d, window: 5m, action: pause max_step: 10%
step_interval: 15m
18) FAQ
Q: 먼저 무엇을 확장해야합니까?
A: 대시 보드에 따른 병목 현상: 대기열/캐시/데이터베이스 판독. 핫 경로 (예금/베팅/게임 출시) 가 우선 순위입니다.
Q: 자동 스케일링이 "더 나빠진다" 는 것을 이해하는 방법?
A: 상관 관계를 참조하십시오: scaleup JP를 참조하십시오. p99/오류는 개선되지 않습니다. 아마도 "문제를 확장" 할 수 있습니다 (스트림/할당량을 좁히십시오). 차단기/저하를 포함합니다.
Q: 항상 두 번째 공급자가 필요하십니까?
A: 중요한 경로는 그렇습니다. 그렇지 않으면 단순화 된 스크립트 및 캐시가있는 "안전 모드" 이상입니다.
Q: 액티브 액티브 에스코트 액티브-패시브?
A: RTO 요구 사항이 낮고 많은 지역 플레이어가 활동적인 경우. 그렇지 않으면 사용 된 feilover로 능동 수동으로 시작하십시오.