Arenili e ambienti di prova
1) Perché i tracciati selezionati
Gli arenili e gli ambienti di prova consentono:- Verificare rapidamente ipotesi e integrazioni senza rischi per la produzione
- Accelerare il ciclo fidback (PR) con un riferimento in minuti
- riprodurre errori e incidenti su una copia sicura;
- eseguire test contrattuali, di integrazione, di carico e di caos;
- Addestrare i team e creare partner sul terreno di gioco.
I principi chiave sono isolamento, parità di configurazione, determinismo dei test, sicurezza dei dati, osservabilità predefinita.
2) Gerarchia e assegnazione degli ambienti
Locale - Sviluppo locale: Docker Compose/Testcontainers, simulatori di provider leggeri.
Sandbox è uno stand per integrazioni esterne (PSP, KYC, aggregatori di giochi) con dati falsi e protocolli reali.
QA/Test sono test di integrazione e e2e-test, fitsture di dati stabili, regressione.
Stage/Pre-Prod è il tracciato più vicino possibile alla produzione (configurazioni/limiti/topologia).
Ephemeral Preview - Ambiente «su PR» (vive ore/giorno), risorse autonome e URL, demolizione automatica dopo merge/close.
Regola di parità: "Impostazioni, criteri e dipendenze dell'infrastruttura in Test/Stage" Prod ", differenze solo nei segreti e nei limiti.
3) Tipi di scudi di sabbia
1. Fornitori di sabbia: PSP/KYC/giochi esterni forniscono test endpoint; aggiungiamo uno strato di simulatori per modellare valigette rare e errate (timeouts, 5xx, firme instabili).
2. Arenili funzionali: istruzioni di servizi di dominio autonomi (pagamenti, bonus, pagamenti) + ficsture.
3. Arenili di studio/demo: «vetrina» API per partner con DevPortal, chiavi, quote e rate limit.
4) Contratti, simulatori e mochi
Contract-testing (Pact/Buf): il consumatore/provider concorderà gli schemi; modifiche incompatibili vengono bloccate su CI.
Simulatori di provider: riproducono le valigette edge (doppi colleback, deriva dell'orologio, firma HMAC timestamp scaduto).
Firewall (Kafka/NATS) - libreria di valigie 'payment. authorized`, `kyc. verified`, `game. round. settled`.
Fault injection - Ritardo gestito, drop-rate, out-of-order del messaggio.
X-Timestamp: 1730812800
X-Signature: sha256=hex(hmac_sha256(secret, body + timestamp))
5) Test-dati, GDPR/PCI e anonimizzazione
Non usiamo mai PII/PAN reali al di fuori della produzione.
Anonimato: generazione di sintetici + tornizzazione dei campi sensibili; elenchi bianchi solo per gli account dimostrativi.
Data factorie: strutture utente/transazioni/sessioni con ID e states prevedibili.
Deterministic seeds - Identiche ficsture tra test e ambienti.
Criteri di retinatura: pulizia automatica mediante la prevendita di ambienti e database di prova.
6) Segreti e accesso
Segreti separati il mercoledì; credenze temporanee e ruoli limitati.
KMS/HSM e rotazioni; I segreti di Git sono esclusi.
RBAC/ABAC per QA/Stage; controllo di accesso, break-glass solo tramite negoziazione.
7) Osservabilità in ambienti non protetti
Loghi - strutturati, senza PII, mascherati;
Metriche latency p50/p95/p99, error-rate, throughput, DLQ, retrai;
Tracing (OTEL) - Trace _ id (trace _ id) da una richiesta di input a un simulatore;
Dashboards as Code - I dashboard e gli alert sono versionati accanto al servizio.
8) Ambienti di pregio effimeri (per-PR)
Comportamento predefinito:- PR → CI raccoglie un'immagine, genera migrazioni, solleva namespace «pr-
» in Kubernets; - Visualizza l'estensione-URL e i token degli utenti di prova.
- Trasing/metriche abilitate quando si chiude il PR, l'ambiente viene rimosso.
yaml apiVersion: v1 kind: Namespace metadata:
name: pr-4821 labels:
env: preview owner: team-payments
9) Sviluppo locale: Compose/Testcontainers
Minimo dì docker-compose. yml "per l'avvio locale: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"]
Per le dipendenze automatiche nei test - Testcontainers con ficsture.
10) Prove di carico e sostenibilità
I profili di carico sono «tornei», «ondate di pagamento», «pesi di massa».
KPI: RPS, p95/p99, limiti di risorse (CPU/memory), TTFB, Time-to-Wallet.
Iniezioni Chaos: interruzioni dei provider, aumento della latitanza, flaky.
Il circuito breaker/backoff è testato su Stage; i fallimenti vengono inviati nel DLQ e replicati.
11) Criteri di ripristino e replica
Gateway per eventi DLQ (modalità manuale/auto, filtri chiave).
Basi di migrazione: chiare up/down e dry-run in anticipo/Stage; proteggersi da cambiamenti devastanti.
12) Integrazione con l' DevPortal
Catalogo degli arenili e dei provider, requisiti dei campi, esempi di query.
Pulsante «Open Preview» per ciascun ramo/PR; widget di metriche SLO/SLA.
Generazione di raccolte SDK e Postman/Insomnia da contratti.
13) Sicurezza del perimetro della sabbia
WAF + IP-allowlist per arenili esterni
quote e rate limits a chiave;
domini/sottotitoli separati rimozione automatica delle chiavi inattive
una serie di vulnerabilità di immagini e dipendenze su ogni cartello.
14) Processi: chi e come usa
Gli sviluppatori sono locali e precursori, veloci fidback.
QA è un test/stage stabile con dati e simulatori controllati.
I partner sono una Sandbox esterna con DevPortal, quote e monitoraggio.
SRE/Piattaforma - profili di carico, caos, controllo SLO.
15) Assegno-foglia di avvio della sabbia
- Contratti in Registry, simulatori coprono successo/errori/timeout/ripetizioni.
- Test dati sintetici, determinati, senza PII/PAN.
- I segreti di KMS, i ruoli limitati, il controllo abilitato.
- Metriche/trailer/logi disponibili; alert su error-budget e DLQ.
- L'ephemeral è in anticipo su PR e auto-demolito.
- I profili di carico e gli script di caos sono descritti dal codice.
- I criteri di migrazione e la replica degli eventi sono stati verificati in Stage.
- Il DevPortal pubblica gate e raccolte di richieste.
16) Road map di implementazione
M0-M1 (MVP): ambienti locali (Compose), simulatore di base PSP/KYC, test di contratto CI, pre-neomspace in K8s.
M2-M3: directory di ficstur, Dashboards as Code, DLQ + repliche manuali, profili di carico.
M4-M6 è una Sandbox esterna completa con chiavi/quote, infrastruttura di caos, gene SDK automatico, politiche di migrazione «due versioni parallele».
M6 +: Stage con failover geo-distribuiti, routing avanzato dei provider SLA nei test, script di apprendimento automatizzati in DevPortal.
17) Modello di maturità degli ambienti (brevemente)
1. Base - ci sono Test/Stage, dati manuali, isolamento debole.
2. I simulatori avanzati, i test contrattuali, l'osservazione, la prevendita parziale.
3. Esperti - per-PR ambiente, caos/carico di lavoro come codice, sicurezza rigorosa e completa automazione.
Output breve
Gli ambienti correttamente progettati sono «airbag» e «acceleratore». L'isolamento, la parità con la produzione, i simulatori di provider, i dati di test determinati, la forte osservabilità e l'automazione degli ambienti di avanzamento forniscono un ciclo rapido e affidabile dì codice-convalida-rilascio ", riducendo il rischio di regressione e semplificando la scalabilità della piattaforma.