Logo GH

Operacje i → Zarządzanie Skalowanie infrastruktury operacyjnej

Skalowanie infrastruktury operacyjnej

1) Dlaczego i co jest uważane za „skalowanie”

Skalowanie to zdolność systemu platformy do zwiększenia przepustowości (RPS/TPS, połączenia, IOPS, przepustowość) i wolumenu danych bez utraty SLO i po kontrolowanych kosztach. W przypadku iGaming/fintech chodzi bezpośrednio o pieniądze: konwersję depozytów/zakładów, gry na żywo i rozliczenia.

Cele:
  • Utrzymywanie SLO przy X-krotnym wzroście obciążenia i sezonowych szczytach.
  • Zapewnij przewidywalny czas skalowania (minuty, a nie godziny).
  • Oszczędność gospodarki: koszt/RPS, koszt/transakcja, koszt/1k zdarzenia.

2) Skalowalne zasady platformy

1. Pierwszy poziom: podział na małe, bezpaństwowe usługi; status - w klastrach danych.
2. Ciśnienie wsteczne i kolejki: wygładzanie wybuchów, ochrona przed „burzami”.
3. Buforowanie na wszystkich warstwach: klient/edge/service/database.
4. Idempotencja i powtarzalność: bezpieczne rekolekcje, outbox, dedup.
5. Zależność ograniczona: czasy, wyłączniki, izolacja grodzi, limity prędkości.
6. Obserwowalność przez sygnały pojemności: zagłówek, p95/p99, lag, połączenia, kontyngenty.
7. Automatyczne skalowanie za pomocą szyn ochronnych: HPA/VPA/Cluster Autoscaler + warunki zatrzymania.
8. Multi-region według projektu: niezależne strefy wybuchu, dane lokalne, stabilne fylovery.

3) Planowanie przepustowości: jak „obliczyć, ile potrzebujesz”

Wejścia modelu: docelowy maksymalny TPS, profil ruchu (co godzinę), „ścieżki krytyczne”, współczynniki trafienia pamięci podręcznej, średnie ładunki użytkowe, SLO i limity dostawców.

Szybkie oceny (zasada kciuka):
  • RPS → CPU/pods: 'pods = RPS p99_time/effective _ CPU _ in _ pod' (z marginesem 30-50%).
  • Kolejki: "minimum _ speed _ of _ consumers ≥ peak _ speed _ of _ producers 1. 2`.
  • Połączenia DB: 'max _ conns = active _ service _ pools medium _ pool _ size 1. 3`.
  • Pamięć podręczna: rozmiar = „gorący zestaw roboczy w N minut” + 20-30% marży.
  • Egress/CDN: peak egress = pik żądania średni rozmiar odpowiedzi (rozważyć kompresję).

Zagłówek: 20-40% cel na szczyt (według warstwy). Poniżej 15% → „zwiększenie pojemności” wyzwalacz.

4) Warstwy i wzory skalowania

4. 1 krawędź/CDN/WAF

Buforowanie krawędzi (TTL + SWR), geo-balans, kompresja, HTTP/2/3.
Limity prędkości na obwodzie przez IP/JWT/key, ochrona przed przepięciami.
Event fan-out (jackpoty, alerty na żywo) przez brokerów/pub/sub kanały.

4. 2 Backend-for-Frontend API Gateway

Poziomy skalowanie przez statle, dedykowane baseny przez niższych strumieni.
HPA według mierników biznesowych: RPS, p99, kolejka puli pracy - nie tylko procesora.

4. 3 kolejki asynchroniczne/strumieniowe (Kafka/Królik/Pulsar)

skala ze strony stron i konsumentów; unikać skew (klawiszy i dystrybucji).
Alerty lag + automatyczne skalowanie konsumentów; DLQ i powtórne tematy.
Zatrzymanie w ramach uzgodnień SLA i powtórzenie.

4. 4 bufory (Redis/Memcached)

Tryby klastra, repliki, zasady eksmisji (LFU), multiget, rurociąg.
Rozdzielenie zadań hot-key i tła, ograniczenia klienta i maks-polityka pamięci.

4. 5 Bazy danych

Czytaj repliki i czytanie routingu, łączenie połączeń.
Shading według regionu/najemcy/klucza.
CQRS: pisze do mistrza/lidera, czyta do replik.
Indeksowanie i zapisywanie partii przepływów pracy (outbox → stream → sink).
Archiwizacja i dane na gorąco/na zimno (wielopoziomowe).

4. 6 sklepów plików/obiektów

Multitreading, multipart downloads, CDN-front, asynchroniczne transformacje.
Kwoty dostawcy, czyszczenie ogona i budżet wyjścia.

4. 7 dostawców (PSP/KYC/Studios)

Multi-sprzedawca i quote/SLO/cost routing.
Wyłącznik + limit prędkości dla każdego dostawcy, kolejka retray, „tryby grace”.

5) Automatyczne skalowanie i osłony szyn

Kubernety:
  • HPA: метрика 'rps _ per _ pod', 'queue _ depth', 'p99 _ latency'; ' Value'.
  • VPA: wytyczne dotyczące zasobów; aktualizacja poza szczytem.
  • Cluster Autoscaler: spot + profile na żądanie z priorytetami.
  • Budżet PodDis /Top Ograniczenia: jednolite w różnych strefach.
  • Limit Range/ Quota: ochrona przed zanieczyszczeniami „pijanymi”.
Pseudo-manifest HPA:

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
Poręcze (przykłady):
  • „Pauza & Rollback”, jeśli z kanaryjskim p99> 1. 3 × wartość wyjściowa 10 minut.
  • „Zamrożenie skali” w doskonałym czasie, tylko w skali.
  • „Stop retries” w 'open _ circuit = 1' do wąskich gardeł.

6) Wielregion: aktywa/aktywa i aktywa/zobowiązania

Regiony izolowane od wybuchu: niezależne klastry, lokalne tajemnice/kwoty.
Global routing: latency-/geo-based, health-probes, manual override.

Dane:
  • Hot - lokalnie + ewentualna replikacja (strumienie).
  • Transakcje krytyczne - spójne według domeny (księga/salda).
  • Odtwarzacze awaryjne: krok po kroku zmiana źródła, TTL, podręczniki rozgrzewające.
  • Rozporządzenie w sprawie ćwiczeń (DR): Ćwiczenia kwartalne z celami RTO/RPO.

7) Wzorce sieci i usług

Siatka serwisowa: mTLS, retry/breaker, detekcja zewnętrzna, limity na niższy szczebel.
eBPF/Obserwowalność na L4/L7, granice połączeń, ochrona głowy linii.
Wewnętrzne bramy API dla S2S, ogólnego limitu stawek i audytu.
VPC/podsieci według stref wybuchu, kontrola NAT/Egress, peering z dostawcami.

8) Wydajność: Badania i dowody

Obciążenie i stres w czasie początkowym + najgorszy profil przypadku.
Moczenie (długie) - wycieki pamięci/deskryptora, wzrost opóźnień.
Chaos/gra-days: broker/provider/zone drop, „slow provider”.
Regresje perf w CI: zestaw scenariuszy referencyjnych i automatycznych bram.

Mini-scenariusz matrycy:
ScenariuszCelPróg
Depozyt TPS × 2Płatności szczytowep99 ≤ 350ms, SR ≥ 99. 5%
Jackpot BroadcastWentylator missPołączenia WS ≤ 90%, bez kropli
Spowolnienie KYCDostawca zewnętrznyAutodegradacja + Feilover ≤ 2 min

9) Dane i przechowywanie: strategie wzrostu

Wzrost pionowy do sufitu → poziomy/shading.
Czytaj → replika/pamięć podręczna; rekordy → partia/asynchron/log.
Schemat migracji: rozszerzyć → migrate → kontrakt, bez globalnych zamków.
Archiwizacja: zimne partie do taniego magazynowania + nawodnienie na żądanie.
Wyszukiwanie: poszczególne indeksy (OpenSearch/Solr) z rurociągiem aktualizacji przyrostowych.

10) Zarządzanie dostawcami i kontyngentami

Karta kwotowa (TPS, okna, koszt); współczynnik _ wykorzystania alertów> 0. 9`.
Routing według kosztów/jakości (inteligentny routing).
Umowy OLA, SLO i proces zwiększania kwot.
Pula alternatyw i „gorące” przełączanie.

11) Obserwowalność i sygnały skalowania

Mierniki (minimum):
  • Pojemność zagłówka, слоси; 'queue _ lag/backlog growth'; 'kafka ISR'; 'db connections '/' repl lag'; 'redis evictions'; 'open _ circuit '/' retry _ rate'; 'quota _ usage'.
  • Wskaźniki biznesowe: wskaźnik sukcesu/konwersja depozytu, czas rozpoczęcia gry.
  • Koszt: koszt/RPS, koszt/1k połączenia.
Deski rozdzielcze:
  • Przegląd pojemności (zagłówek, najwyższe ryzyko, szybkość spalania SLO).
  • Stream & Queue Panel (lag/backlog, nasycenie konsumenta).
  • DB & Cache (p99, połączenia, hit/eksmisje).
  • Dostawcy i cytaty (TPS, timeouts, cost, switching).
  • Zmiana bezpieczeństwa (przed/po zwolnieniu, kanarka, autoginiany).
Wpisy (pomysły):

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: Skalowanie jest opłacalne

Wskaźniki efektywności: koszt/RPS, koszt/depozyt, koszt/1k zdarzeń.
Rozmiar prawy: wiceprezes/rekomendacje, zawyżone raporty.
Spot/Preemptible for non-critical; Zarezerwowany/przeznaczony na ładunek podstawowy.
Egress budżet i buforowanie, CDN/edge offload.
Zbieranie i archiwizacja dzienników według poziomu wartości (hot vs cold).
Kwoty ostrzegawcze (miękka czapka) i auto-bilety na przedłużenie.

13) Procesy i ludzie

Zarządzanie zmianami: kanarki, ficheflagi, przystanki w regresjach.
Gotowość do incydentów: runbook'i „gdzie dodać pojemność”, „jak zmienić region”.
Planowanie szczytów: kalendarz meczów/turniejów/kampanii i okna dostawców.
Regularne dni gry i ćwiczenia DR.
Macierz własności: kto może „nacisnąć przycisk” na feilover/zwiększyć kwoty.

14) Listy kontrolne wdrażania

Początkowa podstawowa skalowalność (2-4 tygodnie):
  • Mapa ścieżek krytycznych i limitów (według warstwy), cel zagłówka ≥ 30%.
  • HPA by Business Metrics + Cluster Autoscaler; Ograniczenia PDB/ .
  • Kolejki na gorących ścieżkach, idempotency-keys, outbox.
  • Caches: cele trafienia ≥ 90%, polityka eksmisji, kluczowe indeksy.
  • DB: czytać repliki, basen połączeń, plan shading.
  • Dostawcy: wielokrotny sprzedawca, kwoty, wyłączniki/rekolekcje.
  • Tablice rozdzielcze „Capacity/Stream/DB/Providers”, wpisy z § 11.
  • Autogaty kanaryjskie i przed/po uwolnieniu.
  • DR playbook i jedno szkolenie częściowe feilover.
Przed wielkim szczytem:
  • Podgrzewanie buforów, przedskalowe repliki HPA/ASG, ciepłe repliki.
  • Zwiększenie kwot dostawców, umożliwienie inteligentnych tras.
  • Umożliwia tłumienie trybu nocnego dla niepodważalnych wpisów.
  • Funkcja „bezpiecznego trybu” jest gotowa do natychmiastowej aktywacji.

15) Anty-wzory

Uaktualnienie pionowe „full stop” zamiast poziomego.
Wspólna pula gwintów/połączeń na wszystkich niższych poziomach.
Retrai na wąskich gardeł czasu, brak jitter → burza.
Nie ma histerezy w wpisach i zasadach skali → „piła”.
Pojedyncza globalna baza danych bez strzępienia danych i lokalizacji.
Ślepa wiara w sprzedawcę SDK bez kontroli timeout/retray/observability.
Brak ćwiczeń DR: feilover „tylko na papierze”.

16) Skalowalność KPI

Zgodność SLO na szczycie (p95/p99, wskaźnik sukcesu).
Zagłówek według warstwy w Prime Time.
MTTS (Mean Time To Scale) - do czasu uzyskania dodatkowych zasobów.
Czas rozdzielczości zaległości/opóźnienia - czas, w którym kolejki zapadają się po szczycie.
Zmiana współczynnika awarii na okres aktywnego wzrostu.
Koszt/RPS i oszczędności z pamięci podręcznej/CDN/krawędzi offload.
DR Gotowość: RTO/RPO w ćwiczeniach.

17) Przykłady „szybkich” szablonów

Kafka: udział i autoskala konsumentów (pomysły):

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
Redis:

maxmemory-policy: allkeys-lfu cluster-replicas: 1 evict-alert: rate(evictions[5m]) > 0 && used_mem/limit > 0. 8
Polityka autogatowania kanaryjskiego (streszczenie):

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

P: Co najpierw skalować?
Odp.: Wąskie gardła według desek rozdzielczych: czytniki kolejek/buforów/bazy danych. Gorące ścieżki (uruchomienie depozytu/zakładu/gry) są priorytetem.

P: Jak zrozumieć, że automatyczne skalowanie „pogarsza sytuację”?
Odp.: Zobacz korelację: skale- up, a p99/błędy nie poprawiają się - być może „skala problemu” (wąski strumień/kwota). Zawierają wyłączniki/degradację.

P: Czy zawsze potrzebujesz drugiego dostawcy?
Odp.: Dla ścieżek krytycznych, tak. W przeciwnym razie przynajmniej „tryb bezpieczny” z uproszczonym skryptem i pamięcią podręczną.

P: Aktywny-aktywny ила aktywny-pasywny?
Odp.: Jeśli wymagania RTO są niskie i wielu regionalnych graczy są aktywne. W przeciwnym razie należy zacząć od aktywnego pasywnego użycia feilover.

Contact

Skontaktuj się z nami

Napisz do nas w każdej sprawie — pytania, wsparcie, konsultacje.Zawsze jesteśmy gotowi pomóc!

Telegram
@Gamble_GC
Rozpocznij integrację

Email jest wymagany. Telegram lub WhatsApp są opcjonalne.

Twoje imię opcjonalne
Email opcjonalne
Temat opcjonalne
Wiadomość opcjonalne
Telegram opcjonalne
@
Jeśli podasz Telegram — odpowiemy także tam, oprócz emaila.
WhatsApp opcjonalne
Format: kod kraju i numer (np. +48XXXXXXXXX).

Klikając przycisk, wyrażasz zgodę na przetwarzanie swoich danych.