GH GambleHub

Sandbox et environnement de test

1) Pourquoi des contours dédiés sont nécessaires

Les bacs à sable et les environnements de test permettent :
  • vérifier rapidement les hypothèses et l'intégration sans risque de production ;
  • Accélérer le cycle fidbek (PR → prévisualisation en minutes) ;
  • reproduire les erreurs et les incidents sur une copie sécurisée ;
  • effectuer des tests contractuels, d'intégration, de charge et de chaos ;
  • former les équipes et encourager les partenaires sur le terrain de jeu.

Principes clés : isolement, parité des configurations, déterminisme des tests, sécurité des données, observabilité par défaut.

2) La hiérarchie des environnements et leur destination

Local (Dev) - développement local : Docker Composer/Testcontainers, simulateurs de fournisseurs légers.
Sandbox est un stand pour les intégrations externes (PSP, KYC, agrégateurs de jeux) avec des fausses données et des protocoles réels.
QA/Test - intégrations et e2e-tests, fiches de données stables, régressions.
Stage/Pre-Prod est une boucle aussi proche que possible de la production (configurations/limites/topologie).
Ephemeral Preview - environnement « sur PR » (vit pendant des heures/jours), ressources autonomes et URL, démolition automatique après merge/close.

Règle de parité : « paramètres, politiques et dépendances d'infrastructure dans Test/Stage ≈ Prod », les différences ne sont que dans les secrets et les limites.

3) Types de bac à sable

1. Sandbox des fournisseurs : PSP/KYC/jeux externes fournissent test endpoints ; nous ajoutons une couche de simulateurs pour simuler des cas rares et erronés (timeouts, 5xx, signatures instables).
2. Sandbox fonctionnels : instances autonomes des services de domaine (paiements, bonus, actions) + fictions.
3. Didacticiels/démo sandbox : API « vitrine » pour les partenaires avec DevPortal, clés, quotas et rate limit.

4) Contrats, simulateurs et moki

Contract-testing (Pacte/Buf) : le consommateur/fournisseur est d'accord avec les schémas ; les modifications incompatibles sont bloquées sur CI.
Simulateurs de fournisseurs : reproduit les cas edge (collbecks doubles, dérive de l'horloge, signature HMAC avec timestamp périmé).
Fictions d'événements (Kafka/NATS) : bibliothèque de cas 'payment. authorized`, `kyc. verified`, `game. round. settled`.
Fausse injection : latence gérée, drop-rate, out-of-order du message.

Exemple de signature HMAC dans un bac à sable webhooks :

X-Timestamp: 1730812800
X-Signature: sha256=hex(hmac_sha256(secret, body + timestamp))

5) Données de test, RGPD/PCI et anonymisation

N'utilisez jamais de PII/PAN réels en dehors de la production.
Anonymisation : génération de synthétiques + tokenisation des champs sensibles ; listes blanches uniquement pour les comptes de démonstration.
Data Factories : usines d'utilisateurs/transactions/sessions avec ID et statuts prévisibles.
Deterministic seeds : les mêmes fictions entre le test et le mercredi.
Politique de rétention : auto-nettoyage prévisualiser les environnements et les OBD de test.

6) Secrets et accès

Secrets séparés le mercredi ; crédits temporels et rôles limités.
KMS/HSM et rotations ; les secrets de Git sont exclus.
RBAC/ABAC pour QA/Stage ; audit d'accès, break-glass uniquement par la négociation.

7) Observabilité dans les environnements non prod

Logs - structurés, sans PII, avec masquage ;

Métriques de latitude p50/p95/p99, error-rate, throughput, DLQ, retraits ;

Tracing (OTel) : "trace _ id'de bout en bout depuis la requête d'entrée jusqu'au simulateur ;

Dashboards as Code - Les dashboards et les alertes sont versionnés à côté du service.

8) Environnement éphémère (per-PR)

Comportement par défaut :
  • PR → CI recueille l'image, génère les migrations, soulève le namespace 'pr- ' dans Kubernetes ;
  • l'URL de prévisualisation et les jetons d'utilisateur de test sont délivrés ;
  • Tracing/métriques inclus ; lorsque le PR est fermé, l'environnement est supprimé.
Exemple de manifeste pour namespace sur PR :
yaml apiVersion: v1 kind: Namespace metadata:
name: pr-4821 labels:
env: preview owner: team-payments

9) Développement local : Composer/Testcontainers

Minimum 'docker-compose. yml'pour le lancement local :
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"]

Pour les dépendances automatiques dans les tests - Testcontainers avec des fictions.

10) Essais de charge et de stabilité

Profils de charge : « tournois », « vagues de paiements », « pushi de masse ».
KPI : RPS, p95/p99, limites de ressources (CPU/mémoire), TTFB, Time-to-Wallet.
Injections Chaos : coupures des fournisseurs, augmentation de la latence, « flaky » du réseau.
Les politiques Circuit breaker/backoff sont vérifiées sur Stage ; les échecs partent à la DLQ et se replient.

11) Politiques de repli et de repli

Passerelle Replay pour les événements de DLQ (modes manuel/automatique, filtres par clé).
Bases de migration : Clair up/down et dry-run dans Preview/Stage ; protection contre les changements destructeurs.

12) Intégration avec DevPortal

Annuaire des bacs à sable et des fournisseurs, exigences des champs, exemples de demandes.
Le bouton « Open Preview » de chaque PR/branche ; widget métrique SLO/SLA.
Génération de SDK et de collections Postman/Insomnia à partir de contrats.

13) Sécurité du périmètre des bac à sable

WAF + IP-allowlist pour les bacs à sable externes ;

quotas et limites de taux par clé ;

domaines/sous-domaines distincts ; La suppression automatique des clés inactives ;

scan de vulnérabilités d'images et de dépendances sur chaque projet de loi.

14) Processus : Qui et comment utilise

Développeurs - localement et avant, fidbek rapide.
QA est un test/stage stable avec des données gérables et des simulateurs.
Partenaires - Sandbox externe avec DevPortal, quotas et surveillance.
SRE/Plate-forme - profils de charge, chaos, vérification SLO.

15) Chèque de lancement du bac à sable

  • Les contrats du Registre, les simulateurs couvrent le succès/les erreurs/les délais/les répétitions.
  • Données de test synthétiques, déterministes, sans PII/PAN.
  • Secrets de KMS, rôles limités, audit inclus.
  • Métriques/remorques/logs disponibles ; alertes sur error-budget et DLQ.
  • Ephemeral preview monte sur PR et auto-démolition.
  • Les profils de charge et les scénarios de chaos sont décrits par le code.
  • Les politiques de migration et de repli d'événements ont été vérifiées sur Stage.
  • DevPortal publie des hydes et des collections de requêtes.

16) Feuille de route pour la mise en œuvre

M0-M1 (MVP) : environnements locaux (Compose), simulateur PSP/KYC de base, tests contractuels dans le CI, préview-neimspace dans le K8s.
M2-M3 : catalogues fictifs, Dashboards as Code, repliement manuel DLQ +, profils de charge.
M4-M6 : Sandbox externe à part entière avec clés/quotas, infrastructure de chaos, SDK automatique, politique de migration « deux versions en parallèle ».
M6 + : Stage géo-distribué avec failover, routage intelligent des fournisseurs SLA dans les tests, scripts d'apprentissage automatisés dans DevPortal.

17) Modèle de maturité des environnements (bref)

1. Base - il y a Test/Stage, données manuelles, isolation faible.
2. Avancé - simulateurs, tests contractuels, observabilité, prévisualisation partielle.
3. Expert - per-PR de l'environnement, chaos/charge comme code, DevPortal, sécurité stricte et automatisation complète.

Conclusion brève

Les bac à sable et les environnements de test correctement conçus sont un « airbag » et un « accélérateur » d'approvisionnement. L'isolation, la parité avec продакшеном, симуляторы des providers, les données de test déterminées, une forte perceptibilité et l'automatisation des prev'ju-mercredis donnent le cycle rapide et sûr "le code → le contrôle → le release", en réduisant le risque des régressions et en simplifiant la mise à l'échelle du quai.

Contact

Prendre contact

Contactez-nous pour toute question ou demande d’assistance.Nous sommes toujours prêts à vous aider !

Commencer l’intégration

L’Email est obligatoire. Telegram ou WhatsApp — optionnels.

Votre nom optionnel
Email optionnel
Objet optionnel
Message optionnel
Telegram optionnel
@
Si vous indiquez Telegram — nous vous répondrons aussi là-bas.
WhatsApp optionnel
Format : +code pays et numéro (ex. +33XXXXXXXXX).

En cliquant sur ce bouton, vous acceptez le traitement de vos données.