Etapowanie: wysyłanie i synchronizacja
TL; DR
Staging jest środowiskiem przedprodukcyjnym o maksymalnej parytecie produkcji, gdzie na anonimizowanych danych i symulatorach sprawdzane są umowy, migracje, konfiguracje, haki internetowe i łańcuchy płatnicze. Sukces daje: immutable-deploy (niebieski/zielony), parytet danych bez PII, schemat-rejestr, ruch cieni, plan kanaryjski, flagi funkcji, przezroczyste bramy i auto-rollback.
1) Rola postoju i parytet ze sprzedażą
Cel: potwierdzenie, że wydanie jest bezpieczne dla pieniędzy i graczy: schematy bazy danych, migawki, konfiguracje, limity, haki internetowe, routing, obserwowalność.
Parytet: te same obrazy, ta sama topologia (wejście/brama, siatka, kolejki, bufory, silniki bazy danych, wersje jądra/sterownika), ta sama polityka (auth/rate/circuit).
Różnice: dane są depersonalizowane, interakcje z zewnętrznymi dostawcami - poprzez piaskownicę/symulatory, DNS/domeny i tajemnice - oddzielne.
2) Topologia i dostęp
Domeny: "ustawianie. api. przykład. com ',' inscenizacja. ws. przykład. com ".
Izolacja: indywidualny VPC/klaster, niezależne tajemnice (KMS/Vault), mTLS wewnątrz.
Dostęp: SSO + RBAC (role: 'release-manager', 'qa', 'dev', 'partner-view'), tymczasowe żetony, wejścia audytu.
3) Zwolnienie pociągu
1. Budowanie (znacznik, SBOM, podpisy artefaktowe).
2. Testy (jednostka/integracja/umowa, urządzenia zabezpieczające).
3. Opakowanie/skanowanie (SAST/DAST, wulnowe bramy).
4. Wdrożyć do postoju (immutable, niebieski/zielony lub walcowanie z kontrolą p95/p99).
5. Staging Gates (§ 10).
6. Canary Prod (1 → 5 → 25 → 50 → 100%).
7. Auto-rollback na naruszenie SLO/błędy.
4) Synchronizacja konfiguracji
GitOps: wszystkie konfiguracje i politycy w Git; pojedyncze wykresy/manifesty dla prod/staging z 'values. postoju. yaml'.
Kontrola parytetu: „ręczne edycje” są zabronione w postoju. Drift jest wykrywany przez automatyzację (policy-diff, kube-diff).
Sekrety: poszczególne klucze i żetony; rotacja niezależnie od prod.
5) Schematy: API/DB/Wydarzenia
Jednolity rejestr: OpenAPI, deskryptory Protobuf, GraphQL SDL, wydarzenia. słownik.
Łamanie kontroli w CI: zakazanie zakłócających zmian.
migracje DB: „do” do etapowania przed promocją; możliwość „wypalenia ”/odwracalności; suchy bieg z migawką oszacowania czasu.
Kompatybilność zdarzeń: „podwójny wpis” (stary + nowy format) podczas przejść.
6) Dane i synchronizacja
Źródło: regularne wysypisko z prod → anonimizacja/tokenizacja/maskowanie → import do postoju.
dokumenty PII/PAN/KYC: skreślone/zastąpione syntetyką; sumy i częstotliwości - zniekształcone (hałas) dla prywatności.
Okna synchroniczne: plan/kroony (na przykład każdej nocy), czas trwania i monitorowanie błędów.
Identyfikatory: Utrzymać gęstość i kardynalność (dla realizmu testu obciążenia).
7) Integracje zewnętrzne (PSP/KYC/dostawcy)
Konta Sandbox lub symulatory z hakami HMAC, retras, idempotencja.
Widelec w fladze: prawdziwa piaskownica dostawcy lub naszego symulatora (przełącznik w konfiguracji).
Webhooks: podpisy, okno czasu, konsola DLQ/replay są włączone na etapie.
Szyny płatnicze: prawdziwa wypłata/auth na postoju są zabronione na poziomie kodu (blok twardy).
8) Ruch cieni i powtórki
Cieniowanie: skopiować podzbiór produkcji czyta się do etapowania (bez skutków ubocznych), porównać odpowiedzi/opóźnienia.
Lusterko ruchu: ≥ 1-5% GET/status. Mutacje cieni nie są dozwolone.
Powtórka syntetyczna: przebieg historycznych śladów (zamaskowany) do regresji.
9) Cechy flagi, zamrażanie i kompatybilność
Flagi kontrolują zachowanie bez przesunięcia; konfiguracje flagi są wersjonowane.
Zwolnienie zamrożenia na okres dużego zdarzenia/obciążenia; ustawianie jest stałe w „lustro” prod.
Kompatybilność z powrotem/przodu: najpierw przeczytaj nowy format, a następnie napisz.
10) Bramy: co sprawdzamy przed promocją
SLO: opóźnienie p95/p99, szybkość błędów, nasycenie korytarza.
Kontrakt: API diff - беz breaking; haki internetowe podpisane, idempotencja ok.
Migracja DB: czas w budżecie, brak zamków na tabelach „long-playing”, analiza planu.
Płatności/KYC: pozytywne/negatywne przypadki przeszedł, retrace webhooks → 2xx <3 c p95.
Stawka/kwoty: prawidłowa 429/Retry-After.
Bezpieczeństwo: luki poniżej progu; sekrety/uprawnienia są ważne.
Docs/SDK: OpenAPI/SDL/Proto opublikowane w rejestrze; Listman/SDK zaktualizowany.
Runbooks: Playbooks i plan rollback przetestowane.
11) Obserwowalność i wpisy
Метрика: RPS, p50/p95/p99, 4xx/5xx, otwarte obwody, kolejka len, cache hit, dostawa webhook.
Ślady: korelacja końcowa "trace _ id'; porównanie z prod (różnica opóźnienia).
Kłody: maskowanie, pobieranie próbek, „ciche” błędy (kolce WARN).
Deski rozdzielcze: oddzielne, ale identyczne w strukturze; zielone/czerwone bary SLO.
12) Realizacja strategii
Niebieski/zielony na postoju (preferowane): szybki przełącznik, łatwy wałek.
Walcowanie z małych partii i kontroli zdrowia.
Wewnętrzne ustawienie kanaryjskie: Ruch procentowy między 'staging-a' i 'staging-b' dla profilowania A/B.
Migracja DB: zero-przestoje wzory (rozszerzyć → migrate → kontrakt), „podwójny zapis”, wyszukiwanie bloków.
13) Bezpieczeństwo i zgodność
Aktywny jest profil mTLS, WAF, DDoS.
RBAC/ABAC w odniesieniu do punktów końcowych administratora; wyłączanie integratorów do paneli wewnętrznych.
Warunki kłód są krótsze niż prod; raporty z audytu są zapisywane.
Sprawdzanie kluczy/sert: indywidualne JWKS/serty, obroty są testowane pod kątem etapowania.
14) Playbooks incydentu (postój)
Awaria SLO po migracji: zwrot do „zielonego”, rolka systemu (jeśli to możliwe), umożliwiająca degradację (odcięcie „drogich” agregatów).
Splash 5xx: otwarty wyłącznik-wyłącznik do kruchych w górę strumienia, podnieść backoff do BFF, włączyć pamięci podręcznej.
Wyciek PII w postoju: natychmiastowe czyszczenie porzuceń, odwoływanie tajemnic, dostęp do audytu, ustalanie zasad maskowania.
Zakaz haków webowych: tymczasowe przeniesienie do martwej litery, ręczne powtórzenie po naprawie.
15) Listy kontrolne
15. 1 Promocja na prod
- Wszystkie bramy (§ 10) minęły; załączone sprawozdanie.
- Zdefiniowano plan kanaryjski i kryteria stopy.
- Przygotowano flagi funkcji (on/off/gradations).
- Dokumentacja/SDK/Portal zaktualizowany.
- Zgłoszone zainteresowane strony, uzgodnione okna wsparcia.
15. 2 Rollback
- Niebieski/zielony: ruch do poprzedniego gniazda, konfiguracje zwinięte z powrotem.
- Programy są odwracalne lub zdegradowane pod banderą do bezpiecznego stanu.
- Wzór pośmiertny i kolekcja artefaktów.
16) Mini snajpery
Promocja GitOps (pseudo)
yaml stages:
- deploy-staging
- verify-gates
- promote-prod deploy-staging:
script: kubectl apply -f k8s/overlays/staging verify-gates:
script:./scripts/check_slo. sh &&./scripts/check_contracts. sh promote-prod:
when: on_success script: kubectl apply -f k8s/overlays/prod
Rozszerzenie → Migracja → Umowa (DDL)
sql
-- expand
ALTER TABLE payouts ADD COLUMN note TEXT NULL;
-- migrate (background job copies data)
-- contract
ALTER TABLE payouts DROP COLUMN comment;
Nagłówek cienia
X-Shadow-Trace: 1
Idempotencja mutacji na etapie
pseudo if store. has(idempotency_key) return store. get(idempotency_key)
res = do()
store. set(idempotency_key,res,ttl=72h)
return res
17) Antypattery
Etapowanie jest „prawie jak produkcja”, ale z różnymi limitami/filtrami → fałszywie pozytywne wyniki.
Prawdziwe PANS/doki w postoju.
Ręczne „gorące” edycje konfiguracyjne.
Migracje wolne od czasu i bez blokady.
Brak ruchu cieni/powtórki - błędy pojawiają się tylko w prod.
Promocja bez planu wstecznego.
18) SLO do postoju (punkty orientacyjne)
Czas uptime: ≥ 99. 5% (prezentacja integracyjna nie powinna spaść).
Dodatek do żywności o opóźnieniu: ≤ + 10-20%.
Haki p95: ≤ 3 c do 2xx z przekładkami.
Budżet błędu: brama 5xx ≤ 0. 1% na okno wydania.
Udział kontroli cieni: ≥ 1% odczytów.
Podsumowanie
Staging nie jest „piaskiem”, ale prawdziwą próbą produkcji: ten sam stos i politycy, anonimowe dane, symulatory kolejowe, cienie ruchu prod, ścisłe bramy i natychmiastowy zwrot. Owiń wszystko w GitOps + schematy rejestru + niezmienne depla, zachowaj flagi funkcji i plan kanaryjski, a Twoje wydania staną się przewidywalne, a incydenty staną się rzadkie i zarządzalne.