Piaskownice i środowiska badawcze
1) Dlaczego potrzebujemy wybranych konturów
Piaskownice i środowiska testowe pozwalają na:- szybkie testowanie hipotez i integracji bez ryzyka produkcji;
- przyspieszyć cykl sprzężenia zwrotnego (PR → podgląd-link w minutach);
- reprodukować błędy i incydenty na bezpiecznej kopii;
- Wykonanie testów kontraktowych, integracyjnych, obciążeniowych i chaosu
- zespoły szkoleniowe i wyposażenie partnerów na „placu zabaw”.
Kluczowe zasady: izolacja, parytet konfiguracji, determinizm testowy, bezpieczeństwo danych, domyślna obserwowalność.
2) Hierarchia środowisk i ich cel
Lokalne (Dev) - lokalny rozwój: Docker Compose/Testcontainers, lekkie symulatory dostawców.
Sandbox to stoisko do integracji zewnętrznych (PSP, KYC, agregatory gier) z fałszywymi danymi i prawdziwymi protokołami.
QA/Test - integracja i testy e2e, stabilne poprawki danych, regresje.
Etap/Pre-Prod - zarys jak najbliżej produkcji (konfiguracje/limity/topologia).
Efemeryczny podgląd - środowisko „na PR” (życia dla godzin/dni), zasoby offline i URL, auto-rozbiórka po połączeniu/zamknięciu.
Zasada parytetu to „ustawienia, zasady i zależności infrastrukturalne w testach/etapach”, różnice są tylko w tajemnicach i granicach.
3) Typy piaskownic
1. Piaskownice dostawcy: zewnętrzne PSP/KYC/gry zapewniają punkty końcowe testów; dodajemy warstwę symulatorów, aby symulować rzadkie i błędne przypadki (timeouts, 5xx, niestabilne podpisy).
2. Piaskownice funkcjonalne: autonomiczne instancje usług domenowych (płatności, premie, osiągnięcia) + poprawki.
3. Piaskownice treningowe/demo: API „showcase” dla partnerów z DevPortal, klucze, kwoty i limit stawki.
4) Kontrakty, symulatory i moki
Testowanie umów (Paktu/Buf): konsument/dostawca uzgadnia systemy; niezgodne zmiany są blokowane na CI.
Symulatory dostawcy: obudowy krawędzi gry (podwójne kolbaki, dryf zegara, podpis HMAC z wygasłym znacznikiem czasowym).
Poprawki zdarzeń (Kafka/NATS): Płatność z biblioteki spraw. autoryzowany „,” kyc. zweryfikowany ',' gra. runda. załatwione ".
Wtrysk usterki: kontrolowane opóźnienia, szybkość spadku, wiadomości poza zamówieniem.
X-Timestamp: 1730812800
X-Signature: sha256=hex(hmac_sha256(secret, body + timestamp))
5) Dane z badań, RODO/PCI i anonimizacja
Nigdy nie używaj prawdziwej PII/PAN poza produkcją.
Anonimizacja: generacja syntetyczna + tokenizacja pól wrażliwych; whitelisting tylko dla kont demo.
Fabryki danych: fabryki użytkowników/transakcji/sesji z przewidywalnymi identyfikatorami i statusami.
Nasiona deterministyczne: Identyczne poprawki między przebiegami testowymi a środami.
Polityka retencji: automatyczne czyszczenie środowisk podglądu i baz danych testowych.
6) Tajemnice i dostęp
Oddzielne sekrety w środy; kredyty tymczasowe i role ograniczone.
KMS/HSM i obroty; wykluczone tajemnice w Git.
RBAC/ABAC dla QA/Stage; audyt dostępu, break-glass tylko przez negocjacje.
7) Obserwowalność w środowisku nieprzemysłowym
Kłody - ustrukturyzowane, bez PII, z maskowaniem;
Opóźnienie metryki p50/p95/p99, szybkość błędów, przepustowość, DLQ, retrai;
Śledzenie (OTel): end-to-end 'trace _ id' z żądania wejścia do symulatora;
Deski rozdzielcze jako kod - deski rozdzielcze i wpisy są wersjonowane obok usługi.
8) Efemeryczne środowiska podglądu (per-PR)
Zachowanie domyślne:- PR → CI zbiera obraz, generuje migracje, podnosi przestrzeń nazw 'pr-
' w Kubernetes; - Podgląd adresów URL i żetonów użytkowników testów są wydawane;
- włączone śledzenie/mierniki; po zamknięciu PR środowisko zostaje usunięte.
yaml apiVersion: v1 kind: Namespace metadata:
name: pr-4821 labels:
env: preview owner: team-payments
9) Rozwój lokalny: Compose/Testcontainers
Minimal 'docker-compose. yml' do jazdy lokalnej:yaml version: "3. 9"
services:
api:
build:.
environment:
- DB_URL=postgres://postgres:postgres@db:5432/app? sslmode=disable
- KAFKA_BROKER=kafka:9092 ports: ["8080:8080"]
depends_on: [db, kafka]
db:
image: postgres:16 environment: [POSTGRES_PASSWORD=postgres]
ports: ["5432:5432"]
kafka:
image: bitnami/kafka:latest environment:
- KAFKA_ENABLE_KRAFT=yes
- KAFKA_CFG_PROCESS_ROLES=controller,broker
- KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093
- KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@localhost:9093 ports: ["9092:9092"]
Do automatycznego podnoszenia zależności w testach - Testcontainers z mocowaniami.
10) Badania obciążenia i stabilności
Profile obciążenia: „turnieje”, „fale płatnicze”, „puchary masowe”.
KPI: RPS, p95/p99, ograniczenia zasobów (procesor/pamięć), TTFB, Time-to-Wallet.
Zastrzyki chaosu: odłączenie dostawców, wzrost opóźnień, „płatkowe” sieci.
Zasady wyłącznika/backoff są sprawdzane na etapie; dips przejść do DLQ i replikować.
11) Polityka rollback i replay
Brama powtórzenia zdarzeń z DLQ (tryby ręczne/auto, filtry według klawiszy).
Podstawy migracji: wyczyścić w górę/w dół i sucho w podglądzie/etap; ochrona przed zakłócającymi zmianami.
12) Integracja z DevPortal
Katalog piaskownic i dostawców, wymagania polowe, przykłady zapytań.
Przycisk „Otwórz podgląd” dla każdego PR/oddziału; Widget mierników SLO/SLA.
Generacja kolekcji SDK i Postman/Bezsenność z umów.
13) Bezpieczeństwo obwodu piaskownicy
Lista WAF + IP dla zewnętrznych piaskownic;
kwoty i limity stawek na klucz;
poszczególne domeny/subdomeny; automatyczne usuwanie nieaktywnych kluczy;
skanowanie luk w obrazie i zależności od każdego budynku.
14) Procesy: kto używa i jak
Deweloperzy - lokalnie i podgląd, szybkie opinie.
QA - stabilny test/etap z zarządzanymi danymi i symulatorami.
Partnerzy - zewnętrzna skrzynka piaskowa z DevPortal, kwoty i monitorowanie.
SRE/Platform - profile obciążenia, chaos, weryfikacja SLO.
15) Lista kontrolna uruchamiania piaskownicy
- Umowy w rejestrze, symulatory obejmują sukces/błędy/timeouts/powtórzenia.
- Dane z badań syntetyczne, deterministyczne, bez PII/PAN.
- Sekrety z KMS, role ograniczone, audyt włączone.
- Dostępne są mierniki/ścieżki/kłody; wpisy do budżetu błędów i DLQ.
- Efemeryczne podglądy idą w górę na PR i auto-rozbiórki.
- Profile obciążenia i scenariusze chaosu są opisane kodem.
- Polityka migracyjna i powtórka zdarzeń sprawdzone na scenie.
- DevPortal publikuje przewodniki i kolekcje zapytań.
16) Plan działania w zakresie wdrażania
M0-M1 (MVP): środowiska lokalne (Compose), podstawowy symulator PSP/KYC, testy kontraktowe w CI, przestrzenie podglądu w K8s.
M2-M3: katalogi opraw, deski rozdzielcze jako kod, DLQ + ręczna powtórka, profile obciążenia.
M4-M6: pełnoprawna zewnętrzna skrzynka piaskowa z kluczami/kwotami, infrastruktura chaosu, autogen SDK, „dwie wersje równolegle” polityka migracyjna.
M6 +: geo-rozproszony etap z awaryjnym, inteligentny routing dostawców za pośrednictwem SLA w testach, zautomatyzowane skrypty treningowe w DevPortal.
17) Model dojrzałości środowiska (krótki)
1. Podstawowy - jest test/etap, dane ręczne, słaba izolacja.
2. Zaawansowane - symulatory, testy kontraktowe, obserwowalność, częściowe podglądy.
3. Ekspert - per-PR środowiska, chaos/ładunek jako kod, DevPortal, silne bezpieczeństwo i pełna automatyzacja.
Krótki wniosek
Odpowiednio zaprojektowane piaskownice i środowiska badawcze są „poduszką powietrzną” i „akceleratorem” dostawy. Izolacja, parytet z produkcją, symulatory dostawcy, deterministyczne dane testowe, silna obserwacja i automatyzacja środowisk podglądu zapewniają szybki i niezawodny kod → sprawdź → cykl uwalniania, zmniejszając ryzyko regresji i upraszczając skalowanie platformy.