ארגזי חול וסביבות בדיקה
TL; DR
ארגז חול חזק = בידוד מלא, מידע סינתטי/לא אישי, סימולטורים מציאותיים של מערכות חיצוניות, צדדים צפויים ומסע בזמן, אידמפוטנטיות מובנית וחוברות אינטרנט, גבולות שקופים ומדדים. אוכל מחוץ להישג יד, מפתחות, חפירה, קידום, רק ברשימות.
1) מפת הסביבה ותפקידיהם
כלל: ארגז חול לדרבן. כל חיבור - באמצעות סימולטורים בכיוון אחד ללא גישה לאמצעים אמיתיים/משחקים/נתונים אישיים.
2) נתונים: סינתטיים, אנונימיות, ישיבה
סינתטיקה ברירת מחדל. מחוללי מידע של דרכון/כרטיס, תקפים אך לא פיננסיים (test BINs), דפוסים חיים של תעריפים ואיזונים.
אנונימיות לשלב: אסימונים של מזהים, פרטיות דיפרנציאלית עבור צבירים, הסרת שילובים נדירים.
סידים ודטרמיניזם: קבוצה אחת - מדינה אחת.
bash make db-reset && make db-seed ENV=sandbox SEED=2025_11_03
מסע בזמן: ”שעה” גלובלית של הסביבה לבדיקות תאריך יעד/תפוגה.
3) סימולטורים ואטמים (תלתן)
תשלומים/בנקים/PSP
Auth/Capture/Refund/Payout: "אושר", "נדחה _ לא מספיק", "3ds _ נדרש", "timeout'," שכפול ".
HMAC חתום, רטריי, עיכובים ו ”אינטרנט מלוכלך”.
KYC/AML/סנקציות
”ברור”, ”pep _ match”, ”senction _ hit”, ”doc _ match”, ”manual _ review”.
תמיכה אידמפוטנטיות והגבלת קצב כמו בדרבן.
ספקי משחקים/קטלוג
לובי, תכונה, RTP/סבבים - דור פסאודו-אקראי, מבוקר ”תשלומים/כשלים” עבור מקרים של UX.
אפשרות: סימולטור ”חומרה” מתג (happy-path vs. chaus).
4) חוברות אינטרנט בארגז החול
חתימות HMAC (v1), כותרות 'X-Event-ID', 'X-Timestamp', חלון ציוני 5 דקות.
מגשים מחדש עם גיבוי מעריכי, DLQ והילוך חוזר.
קונסולה ”מחדש” ויומנים של ניסיונות.
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, סודות אישיים ותחומים ('ארגז חול. דוגמא. com ').
התפקידים ”שותף”, ”qa”, ”dev”, ospreys של אסימונים הם מינימליים.
מגבלות ומכסות: נתח הוגן לדייר/מפתח, מובן '429 '/' Retry-After'.
סודות רק בכספת/KMS; סיבוב רגיל.
איסור על תשלומים אמיתיים ברמת הקוד/הגדרה (fightflag hard block).
7) שער API ויכולת תצפית בארגז חול
אותן מדיניות: OAuth2/OIDC/JWT, CORS, WAF, פרופיל DDOS.
Metrics: p50/p95/p99, 4xx/5xx, hit-rate גבולות, latency webooks, idempotent להיטים.
יומנים/שבילים: ללא מח "ש; קורלציה 'trace _ id'.
לוח מחוונים ”בריאות ארגז חול”: Uptime, webhook תורים, שגיאות סימולטור.
8) דגלים, גרסאות ותאימות
הכללת מאפיינים בארגז החול * prod שלב.
SemVer עבור API; כרזה/שקיעה בארגזי חול Swagger/Redoc.
שאילתות מתמידות עבור חנויות GraphQL (אם בכלל).
9) קידום CI/CD
1. לבנות/יחידה #
2. מבחני חוזה/מוק (OpenAPI/Protobuf/GraphQL SDL) access
3. אינטגרציה נגד סימולטורים
4. רגרסיית במה (anon. snothshots) #
5. הדחף הקנרי.
קידום רשימת השערים: למטה ב-# 12.
10) תסריטי UAT לשותפים (ארגז חול)
תשלומים: auth/לכידה/החזר/תשלום עם קובצי אינטרנט ושגיאות PSP.
כל הסטטוסים + הסלמה ידנית.
אידמפוטנטיות: חזרה על 'Idempotency-Key' = תוצאה זהה.
מגבלת קצב: טיפול נכון של '429.
חלונות זמן: תפוגה של אסימונים, ”Retry-After”, מקרים מסע בזמן.
חוברות אינטרנט: חתימות/מגשים מחדש/DLQ, שידור חוזר ידני ודדופ.
11) מדיניות נתונים ופרטיות
לעולם אל תאחסן רציפים אמיתיים בארגז חול/במה.
אנונימיות: מיסוך, הסרת זיהוי ישיר, מתאם סינתטי.
אחסון טי-טי-אל של בולי עץ וגופים צמודי רשת.
12) רשימות בדיקה
12. 1 השקת ארגז חול חדש
[ ] רשת מבודדת/בסיס/מטמון/אובייקט אחסון
[ ] סודות שנוצרו בקמרון/KMS, גישה לפי תפקיד
[ ] סימולטורי PSP/KYC/משחק מאויתים ומושמעים
[ ] Swagger/Redoc + Postman Collection (נקודות סוף ארגז חול)
[ ] Webhooks: HMAC, Retry, DLQ,
[ פרופילי קצב/מכסה ], דפורמציה/כרזות שקיעה (אם בכלל)
[ ] לוחות מחוונים והתראות (latency, 5xx, 429, DLQ)
12. 2 שחרור קידום (prod שלב)
[ ] חוזה diff בודק (אין שבירה)
[ ] טען p95/p99 נורמלי בשלב
[ ] Webhooks עבר UAT, idepotency ok
[ דגלי תכונה ] מוכנים, יש תכנית החזרה
[ ] צ 'אנגלוג, מדריך הגירה ומשלוח לשותפים
13) תרופות אנטי ־ פטריות
ארגז חול ש ”בסתר” נוגע בשירותי פרוד/מסדי נתונים.
נתוני כרטיס/דרכון אמיתיים בשלב/ארגז חול.
סימולטורים ללא חוברות אינטרנט/נסיגות הם ”נתיב שמח” בלבד.
אין אידמפוטנטיות * תשלומים/הימורים כפולים.
סוד משותף אחד לכל השותפים.
אין גבולות או 429/Retry-After שקופים.
14) קטעי מיני
.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 (שרת ארגז חול)
yaml servers:
- url: https://sandbox.api.example.com/v1 description: Public Sandbox
פסאודוקודה של Idempotency
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-99. 5% (תצוגת האינטגרציה לא אמורה ליפול).
Webhooks p95 3S ל2xX בטעינה רגילה.
תקציב שגיאה 5xx של שער סגר 0. 1%.
פורטל העגינה זמין ומסונכרן עם החוזה.
16) ממשל
בעל סביבה (SRE/Platform) ודייל API (חוזים).
תהליך RFC לשבירת שינויים, לוח שנה Desprecation/Sunset.
גבולות/מכסות נפרדות ותמחור ”שימוש הוגן” עבור ארגז החול הציבורי.
המשך תקציר
ארגז החול הוא מוצר למפתחים, לא עותק של הבסיס. "תן: בידוד קפדני, מידע סינתטי, סימולטורים מלאים עם קורות רשת ורטרות, דטרמיניזם דרך צדדים ומסע בזמן, קישור הכל עם חוזים, תצפיות וממשל - והאינטגרציה שלך תהפוך מהירה, בטוחה וצפויה, ומשחררת ללא כאבים.