جعبه های شن و ماسه و محیط های آزمایش
1) چرا ما نیاز به خطوط انتخاب شده داریم
Sandboxes و محیط آزمایش به شما اجازه می دهد:- به سرعت فرضیه ها و یکپارچگی را بدون ریسک تولید تست کنید.
- سرعت بخشیدن به چرخه بازخورد (PR → پیش نمایش لینک در دقیقه) ؛
- تکثیر خطاها و حوادث در یک نسخه امن ؛
- انجام تست های قرارداد، ادغام، بار و هرج و مرج
- تیم های قطار و تجهیز همکاران در «زمین بازی».
اصول کلیدی: انزوا، برابری پیکربندی، جبرگرایی آزمون، امنیت داده ها، مشاهده پذیری پیش فرض.
2) سلسله مراتب محیط ها و هدف آنها
محلی (Dev) - توسعه محلی: Docker Compose/Testcontainers، شبیه سازی ارائه دهنده سبک وزن.
Sandbox یک پایه برای یکپارچگی خارجی (PSP، KYC، جمع کننده های بازی) با داده های جعلی و پروتکل های واقعی است.
QA/Test - تست های یکپارچه سازی و e2e، رفع پایدار داده ها، رگرسیون ها.
Stage/Pre-Prod - طرح کلی تا حد ممکن نزدیک به تولید (تنظیمات/محدودیت/توپولوژی).
پیش نمایش زودگذر - محیط «در PR» (زندگی برای ساعت/روز)، منابع آفلاین و URL، تخریب خودکار پس از ادغام/بستن.
قانون برابری «تنظیمات، سیاست ها و وابستگی های زیرساختی در Test/Stage ≈ Prod» است، تفاوت ها فقط در اسرار و محدودیت ها است.
3) انواع جعبه شن و ماسه
1. sandboxes ارائه دهنده: PSP خارجی/KYC/بازی ارائه endpoints آزمون; ما یک لایه شبیه ساز برای شبیه سازی موارد نادر و اشتباه (timeouts، 5xx، امضاهای ناپایدار) اضافه می کنیم.
2. Sandboxes عملکردی: نمونه های مستقل از خدمات دامنه (پرداخت، پاداش، دستاوردها) + رفع.
3. sandboxes آموزش/نسخه ی نمایشی: API «ویترین» برای شرکای با DevPortal, کلید, سهمیه و محدودیت نرخ.
4) قراردادها، شبیه سازی و موکی
تست قرارداد (Pact/Buf): مصرف کننده/ارائه دهنده در مورد طرح ها موافق است ؛ تغییرات ناسازگار در CI مسدود شده است.
شبیه سازی ارائه دهنده: موارد لبه بازی (collbacks دو، رانش ساعت، امضای HMAC با برچسب زمان منقضی شده).
رفع رویداد (Kafka/NATS): پرداخت کتابخانه مورد. 'مجاز،' KYC. بازی تأیید شده. دور بزنید. مستقر شد.
تزریق خطا: تاخیر کنترل شده، نرخ افت، پیام های خارج از سفارش.
X-Timestamp: 1730812800
X-Signature: sha256=hex(hmac_sha256(secret, body + timestamp))
5) داده های تست، GDPR/PCI و ناشناس سازی
هرگز از PII/PAN واقعی خارج از تولید استفاده نکنید.
ناشناس سازی: تولید مصنوعی + نشانه گذاری زمینه های حساس ؛ لیست سفید فقط برای حساب های نسخه ی نمایشی.
کارخانه های داده: کارخانه های کاربر/معامله/جلسه با شناسه ها و وضعیت های قابل پیش بینی.
دانه های قطعی: اصلاحات یکسان بین اجرای آزمون و چهارشنبه ها.
سیاست نگهداری: تمیز کردن خودکار محیط های پیش نمایش و پایگاه داده های تست.
6) اسرار و دسترسی
اسرار جداگانه در روزهای چهارشنبه اعتبار موقت و نقشهای محدود
KMS/HSM و چرخش ؛ حذف اسرار در Git.
RBAC/ABAC برای QA/مرحله ؛ حسابرسی دسترسی، شکستن شیشه تنها از طریق مذاکره.
7) قابلیت مشاهده در محیط های غیر صنعتی
سیاهههای مربوط - ساختار, بدون PII, با پوشش;
تاخیر متریک p50/p95/p99، نرخ خطا، توان عملیاتی، DLQ، retrai ؛
ردیابی (OTel): پایان دادن به پایان 'trace _ id' از درخواست ورودی به شبیه ساز ؛
داشبورد به عنوان کد - داشبورد و هشدارها در کنار سرویس قرار می گیرند.
8) محیط پیش نمایش زودگذر (در هر PR)
رفتار پیشفرض:- PR → CI یک تصویر را جمع آوری می کند، مهاجرت می کند، فضای نام 'pr-
' را در Kubernetes افزایش می دهد ؛ - URL های پیش نمایش و نشانه های کاربران تست صادر می شود ؛
- ردیابی/معیارهای فعال ؛ هنگامی که روابط عمومی بسته است، محیط زیست حذف شده است.
yaml apiVersion: v1 kind: Namespace metadata:
name: pr-4821 labels:
env: preview owner: team-payments
9) توسعه محلی: نوشتن/Testcontainers
حداقل "docker-compose. yml 'برای اجرای محلی: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"]
برای بلند کردن خودکار وابستگی در آزمون - Testcontainers با رفع.
10) تست بار و ثبات
پروفایل بار: «مسابقات»، «امواج پرداخت»، «fluffs توده».
KPI: RPS، p95/p99، محدودیت منابع (CPU/حافظه)، TTFB، زمان به کیف پول.
تزریق هرج و مرج: قطع ارتباط ارائه دهندگان، افزایش تاخیر، شبکه های «پوسته پوسته».
سیاست های قطع کننده مدار/عقب نشینی در مرحله بررسی می شود ؛ dips به DLQ بروید و تکثیر کنید.
11) سیاست های بازگشت و پخش
دروازه پخش برای رویدادها از DLQ (حالت دستی/خودکار، فیلتر با کلید).
پایگاه های مهاجرت: روشن/پایین و خشک اجرا در پیش نمایش/مرحله ؛ محافظت در برابر تغییرات مخرب
12) ادغام با DevPortal
کاتالوگ sandboxes و ارائه دهندگان، نیازهای زمینه، نمونه هایی از نمایش داده شد.
دکمه «Open Preview» برای هر PR/شاخه ؛ ویجت معیارهای SLO/SLA.
تولید SDK و مجموعه های Postman/Insomnia از قراردادها
13) امنیت محیط سندباکس
WAF + IP-allowlist برای جعبه های ماسه ای خارجی ؛
سهمیه ها و محدودیت های نرخ در هر کلید ؛
دامنه های فردی/زیر دامنه ها ؛ حذف خودکار کلید های غیر فعال ؛
اسکن آسیب پذیری ها و وابستگی های تصویر در هر ساخت.
14) فرآیندها: چه کسی استفاده می کند و چگونه
توسعه دهندگان - محلی و پیش نمایش، بازخورد سریع.
QA - تست پایدار/مرحله با داده های مدیریت شده و شبیه سازی.
همکاران - Sandbox خارجی با DevPortal، سهمیه و نظارت.
SRE/Platform - پروفایل های بار، هرج و مرج، تأیید SLO.
15) چک لیست راه اندازی جعبه شن و ماسه
- قرارداد در رجیستری، شبیه سازی پوشش موفقیت/خطاها/timeouts/تکرار.
- داده های تست مصنوعی، قطعی، بدون PII/PAN.
- اسرار از KMS، نقش محدود، حسابرسی را فعال کنید.
- معیارهای/مسیرهای پیاده روی/سیاهههای مربوط در دسترس هستند; هشدار به بودجه خطا و DLQ.
- پیش نمایش های کوتاه مدت در PR و خودکار تخریب می شود.
- پروفایل های بار و سناریوهای هرج و مرج توسط کد توصیف می شوند.
- سیاست های مهاجرت و پخش رویداد در مرحله بررسی می شود.
- DevPortal راهنماها و مجموعه های پرس و جو را منتشر می کند.
16) نقشه راه پیاده سازی
M0-M1 (MVP): محیط های محلی (Compose)، شبیه ساز PSP/KYC پایه، تست قرارداد در CI، فضاهای پیش نمایش در K8s.
M2-M3: کاتالوگ ثابت، داشبورد به عنوان کد، DLQ + پخش دستی، پروفایل های بار.
M4-M6: Sandbox خارجی کامل با کلید/سهمیه، زیرساخت هرج و مرج، SDK autogen، «دو نسخه به صورت موازی» سیاست مهاجرت.
M6 +: مرحله توزیع جغرافیایی با شکست، مسیریابی هوشمند ارائه دهندگان از طریق SLA در تست ها، اسکریپت های آموزش خودکار در DevPortal.
17) مدل بلوغ محیط (کوتاه)
1. پایه - تست/مرحله، داده های دستی، انزوا ضعیف وجود دارد.
2. پیشرفته - شبیه سازی، تست قرارداد، مشاهده، پیش نمایش جزئی.
3. کارشناس - در هر محیط PR، هرج و مرج/بار به عنوان کد، DevPortal، امنیت قوی و اتوماسیون کامل.
نتیجه گیری مختصر
جعبه های ماسه ای به درستی طراحی شده و محیط های آزمایشی «کیسه هوا» و «شتاب دهنده» تحویل هستند. جداسازی، برابری با تولید، شبیه سازی ارائه دهنده، داده های آزمون قطعی، مشاهده پذیری قوی و اتوماسیون محیط های پیش نمایش، یک کد سریع و قابل اعتماد را فراهم می کند → بررسی چرخه انتشار، کاهش خطر رگرسیون و ساده سازی مقیاس بندی پلت فرم.