Αμμοκιβώτια και περιβάλλοντα δοκιμών
TL· DR
Ανθεκτικό αμμοκιβώτιο = πλήρης απομόνωση, συνθετικά/απρόσωπα δεδομένα, ρεαλιστικοί προσομοιωτές εξωτερικών συστημάτων, προβλέψιμες πλευρές και χρονοδιαδρόμηση, ενσωματωμένη ταυτότητα και webhooks, διαφανή όρια και μετρήσεις. Τρόφιμα - εκτός εμβέλειας, κλειδιά - σκάψιμο, προώθηση - μόνο σε καταλόγους ελέγχου.
1) Περιβαλλοντικός χάρτης και οι ρόλοι τους
Κανόνας: sandbox-prod. Οποιαδήποτε σύνδεση - μέσω μονόδρομων προσομοιωτών χωρίς πρόσβαση σε πραγματικά μέσα/παιχνίδια/προσωπικά δεδομένα.
2) Στοιχεία: συνθετικά, ανωνυμοποίηση, συνεδρίαση
Προκαθορισμένα συνθετικά. Γεννήτριες δεδομένων διαβατηρίου/κάρτας, έγκυρες αλλά μη χρηματοοικονομικές PAN (test BIN), ζωντανές μορφές τιμών και υπολοίπων.
Ανωνυμοποίηση για το στάδιο: μαρκινοποίηση αναγνωριστικών, διαφορική ιδιωτικότητα για συγκεντρωτικά στοιχεία, αφαίρεση σπάνιων συνδυασμών.
Σιντς και ντετερμινισμός: μία ομάδα - μία πολιτεία.
bash make db-reset && make db-seed ENV=sandbox SEED=2025_11_03
Χρονικό ταξίδι: συνολική «ώρα» του περιβάλλοντος για τις δοκιμές προθεσμίας/λήξης.
3) Προσομοιωτές και βύσματα (αποκόμματα)
Πληρωμές/Τράπεζες/ΠΥΠ
Auth/Capture/Refund/Payout со сценариями: 'εγκεκριμένο', 'αρνητικό _ ανεπαρκές', '3ds _ requirement', 'timeout', 'αντίγραφο'.
PSP webhooks: Υπογραφή HMAC, retrai, καθυστερήσεις και «βρώμικο διαδίκτυο».
KYC/AML/Κυρώσεις
: 'clear', 'pep _ match', 'sanction _ hit', 'doc _ mismatch', 'manual _ review'.
Υποστήριξη της ιδιαιτερότητας και των ορίων των ποσοστών, όπως στην περίπτωση του προτύπου.
Πάροχοι/Κατάλογος παιχνιδιών
Λόμπι, χαρακτηριστικό, RTP/γύροι - ψευδο-τυχαία παραγωγή, ελεγχόμενες «πληρωμές/αποτυχίες» για περιπτώσεις UX.
Επιλογή: διακόπτης «σοβαρότητας» προσομοιωτή (happy-path vs haos).
4) Webhooks in the sandbox
Υπογραφές HMAC (v1), κεφαλίδες 'X-Event-Id', 'X-Timestamp', παράθυρο ≤ 5 λεπτά.
Retrays με εκθετική backoff, DLQ και replay.
Κονσόλα «resend» και αρχεία καταγραφής των προσπαθειών.
pseudo
POST /psp/webhooks
Headers: X-Signature, X-Timestamp, X-Event-Id
Body: { event_id, type, data, attempt }
5) Ταυτότητα και προσδιορισμός
Όλες οι μεταλλάξεις δέχονται το «Idempotency-Key».
Οι προσομοιωτές αποθηκεύουν το αποτέλεσμα με κλειδιά (TTL 24-72 h).
«Προσδιορισμός σπόρων»: με την ίδια εισροή - το ίδιο αποτέλεσμα (για επαναλαμβανόμενες δοκιμές).
6) Ασφάλεια και πρόσβαση
απομόνωση δικτύου/VPC, μεμονωμένα μυστικά και πεδία ('sandbox. παράδειγμα. com ').
RBAC/ABAC: οι ρόλοι «εταίρος», «qa», «dev», ospreys των μαρκών είναι ελάχιστοι.
Όρια συντελεστών και ποσοστώσεις: δίκαιο μερίδιο ανά ενοικιαστή/κλειδί, κατανοητό «429 »/« Retry-After».
Μυστικά μόνο σε KMS/θησαυροφυλάκιο. τακτική εναλλαγή.
Απαγόρευση πραγματικών πληρωμών σε επίπεδο κωδικών/ρυθμίσεων (hard block feature-flag).
7) Πύλη API και παρατηρησιμότητα στην άμμο
Οι ίδιες πολιτικές: OAuth2/OIDC/JWT, CORS, WAF, προφίλ DDoS.
Μετρήσεις: p50/p95/p99, 4xx/5xx, όρια hit-rate, latency webhooks, idempotent hits.
Καταγραφές/μονοπάτια: δεν υπάρχει PII. συσχέτιση «trace _ id».
Ταμπλό «Sandbox Health»: uptime, ουρές webhook, σφάλματα προσομοιωτών.
8) Σημαίες, εκδόσεις και συμβατότητα
Συμπερίληψη χαρακτηριστικών στο αμμοκιβώτιο → στάδιο → prod.
SemVer για API· Αφαίρεση/πανό ηλιοβασίλεμα σε Swagger/Redoc sandboxes.
Συνεχιζόμενες ερωτήσεις για καταστήματα GraphQL (εάν υπάρχουν).
9) CI/CD - προώθηση
1. Κατασκευή/Μονάδα →
2. Δοκιμές σύμβασης/Mock (OpenAPI/Protobuf/GraphQL SDL) →
3. Ενσωμάτωση εναντίον προσομοιωτών →
4. Παλινδρόμηση σταδίου (anon. στιγμιότυπα) →
5. Canary в prod.
Προώθηση καταλόγου πυλών: παρακάτω στο § 12.
10) Σενάρια UAT για συνεργάτες (sandboxed)
Πληρωμές: auth/capture/refund/payout με webhooks και σφάλματα PSP.
KYC/AML: όλες οι καταστάσεις + χειροκίνητη κλιμάκωση.
Idempotency: το επαναλαμβανόμενο 'Idempotency-Key' → το ίδιο αποτέλεσμα.
Όριο ταχύτητας: Ορθός χειρισμός του '429'.
Χρονικά παράθυρα: λήξη των μαρκών, 'Retry-After', χρονικά ταξίδια.
Webhooks: υπογραφές/retrays/DLQ, χειροκίνητη αναπαραγωγή και dedup.
11) Πολιτική δεδομένων και προστασία της ιδιωτικής ζωής
Ποτέ μην αποθηκεύετε πραγματικές αποβάθρες PAN/KYC σε αμμοκιβώτιο/στάδιο.
Ανωνυμοποίηση: κάλυψη, αφαίρεση άμεσων αναγνωριστικών στοιχείων, συνθετική συσχέτιση.
TTL αποθήκευση κορμών και σωμάτων webhook ≤ ρουτίνα.
12) Κατάλογοι ελέγχου
12. 1 Εκτόξευση νέου αμμοκιβωτίου
- Απομονωμένο δίκτυο/βάση/μνήμη/αποθήκευση αντικειμένων
- Μυστικά που δημιουργήθηκαν στο KMS/Vault, πρόσβαση ανά ρόλο
- Οι προσομοιωτές PSP/KYC/παιχνιδιών γράφονται και εκδίδονται
- Συλλογή Swagger/Redoc + Postman (τελικά σημεία άμμου)
- Webhooks: HMAC, retry, DLQ, κονσόλα αναπαραγωγής
- Προφίλ ποσοστώσεων/ποσοστώσεων, Διαφήμιση/πανό ηλιοβασιλέματος (εάν υπάρχουν)
- Πίνακες και προειδοποιήσεις (καθυστέρηση, 5xx, 429, DLQ)
12. 2 Απελευθέρωση προώθησης (stage→prod)
- Έλεγχοι ανάθεσης συμβάσεων (χωρίς διακοπή)
- Φορτίο p95/p99 κανονικό στο στάδιο
- Webhooks υποβλήθηκε UAT, idempotency ok
- Έχουν ετοιμαστεί σημαίες, υπάρχει ένα σχέδιο ανατροπής
- Changelog, οδηγός μετανάστευσης και αποστολή μηνυμάτων στους εταίρους
13) Αντιπατερίδια
Ένα αμμώδες κουτί που «κρυφά» αγγίζει υπηρεσίες/βάσεις δεδομένων.
Δεδομένα πραγματικής κάρτας/διαβατηρίου σε στάδιο/αμμουδιά.
Οι προσομοιωτές χωρίς webhooks/retreats είναι μόνο ένα «χαρούμενο μονοπάτι».
Καμία ταυτότητα → διπλή πληρωμή/στοιχήματα.
Ένα κοινό μυστικό HMAC για όλους τους εταίρους.
Δεν υπάρχουν όρια ή διαφανείς 429/Retry-After.
14) Mini snippets
.env. αμμοκιβώτιο (παράδειγμα)
dotenv
API_BASE=https://sandbox.api.example.com
OAUTH_ISS=https://sandbox.idp.example.com
PSP_SIM_URL=https://sandbox.psp-sim.example.com
KYC_SIM_URL=https://sandbox.kyc-sim.example.com
WEBHOOK_SECRET_ROTATION_DAYS=90
FEATURE_FORCE_SANDBOX_PAYMENTS=1
Τμήμα OpenAPI (εξυπηρετητής sandbox)
yaml servers:
- url: https://sandbox.api.example.com/v1 description: Public Sandbox
Idempotency pseudocode (ψευδοκώδικας)
pseudo if store.exists(idem_key): return store.get(idem_key)
res = do_business()
store.set(idem_key, res, ttl=72h)
return res
Ενεργοποιητές προσομοιωτή PSP
json
{ "scenario": "payout", "case": "declined_insufficient", "payout_id": "p_123" }
15) Παρατηρησιμότητα αμμοκιβωτίου και SLO
Uptime sandbox API ≥ 99. 5% (η έκθεση ενσωμάτωσης δεν πρέπει να μειωθεί).
Webhooks p95 ≤ 3 s έως 2xx υπό κανονικό φορτίο.
Σφάλμα προϋπολογισμού 5xx πύλης ≤ 0. 1%.
Η πύλη σύνδεσης είναι διαθέσιμη και συγχρονίζεται με το συμβόλαιο.
16) Διακυβέρνηση
Ιδιοκτήτης περιβάλλοντος (SRE/πλατφόρμα) και διαχειριστής API (συμβάσεις).
Διαδικασία RFC για την παραβίαση αλλαγών, ημερολόγιο αποσύνθεσης/ηλιοβασιλέματος.
Χωριστά όρια/ποσοστώσεις και τιμολόγηση «δίκαιης χρήσης» για την άμμο.
Επανάληψη σύνοψης
Το αμμοκιβώτιο είναι προϊόν για τους προγραμματιστές και όχι "αντίγραφο της βάσης. "Δώστε: αυστηρή απομόνωση, συνθετικά δεδομένα, πλήρεις προσομοιωτές με webhooks και retras, προσδιορισμός μέσω πλευρών και χρονοταξιδιού, σημαίες και διαφανή όρια. Συνδέστε τα πάντα με τις συμβάσεις, την παρατηρησιμότητα και τη διακυβέρνηση - και η ολοκλήρωσή σας θα γίνει γρήγορη, ασφαλής και προβλέψιμη, και απελευθερώνει ανώδυνες.