CI/CD برای سیستم عامل های بازی: انتشار قناری و phicheflags
1) چرا تحویل مترقی برای iGaming بسیار مهم است
زمان و پول واقعی: اشتباهات در ورود به سیستم/سپرده ها/نرخ ها بلافاصله به درآمد می رسند.
اوج ترافیک: تبلیغات و مسابقات → خطر بهمن از اشکالات.
چند بازار و مارک ها: انتشار مرحله ای با امکان غیرفعال کردن هدفمند توابع مورد نیاز است.
هدف: انتشارهایی که می توانند به تدریج روشن شوند، تأثیر آن بر SLO را اندازه گیری کنند و بلافاصله بدون خرابی به عقب برگردند.
2) معماری مرجع CI/CD
CI (ساخت و آزمایش):1. اسکن منبع (SAST)، مونتاژ مصنوعی/تصویر (SBOM، امضا).
2. تست واحد/قرارداد/ادغام، e2e در نیمکت آزمون.
3. اعتبار سنجی آشکار (OPA/Kyverno)، اتصال Helm/Kustomize.
CD (تحویل پیشرفته):- GitOps (Argo CD/Flux) به عنوان تنها مکانیسم برنامه.
- Argo Rollouts/Flagger для قناری/آبی سبز/سایه.
- دروازه های انتشار: فقط اگر SLO سبز باشد (login/deposit/rate) تبلیغ کنید.
- بازگشت خودکار زمانی که آستانه نقض می شود.
محیط: «dev → stage → canary-prod → prod» (بر اساس بازار/برند). برای canary، یک فضای نام/سلول جداگانه.
3) امنیت زنجیره تامین
تصاویر غیر قابل تغییر توسط «sha256»، ممنوعیت «آخرین».
امضای تصویر (Cosign) + تأیید در وب سایت پذیرش.
اسکن آسیب پذیری ها (SCA) به عنوان «مرحله مسدود کردن».
اسرار - از Vault/Cloud SM از طریق اسرار خارجی ؛ ممیزی دسترسی
4) Canary Releases: الگوها
گزینه ها:- قناری با ترافیک: 1٪ → 5٪ → 10٪ → 25٪ → 50٪ → 100٪.
- قناری بر اساس بخش: فقط کارمندان، سپس یک مارک/بازار، سپس کل منطقه.
- سایه: یک آینه از ترافیک واقعی بدون تاثیر بر پاسخ (برای تغییرات «سنگین»).
- آبی سبز: دو پشته یکسان، تغییر مسیر فوری.
- SLI: ورود/سپرده/شرط موفقیت, P95 API و WS-RTT, 4xx/5xx, صف retray.
- SLO کسب و کار: registratsiya → تبدیل depozit، میزان موفقیت.
- سیگنال های توقف «سخت»: افزایش خطاهای پشت شارژ، کاهش نسبت موفقیت PSP، خطاهای ارائه دهنده بازی.
استراتژی یامل:
قناری:
مراحل:
- تنظیم وزن: 5
- مکث: {مدت زمان: 5m}
- تجزیه و تحلیل: {قالب: [{templateName: deposit-slo}]} # гейт по SLO
- تنظیم وزن: 25
- مکث: {مدت زمان: 10m}
- تجزیه و تحلیل: {templates: [{templateName: auth-error-rate}}
- تنظیم وزن: 50
- مکث: {}5) Ficheflags: مدیریت ریسک بدون انتشار
انواع پرچم:- پرچم انتشار - فعال کردن یک تابع جدید (شما می توانید canary «در داخل» نسخه).
- پرچم های عملیات (kill-switch) - خاموش کردن فوری قطعات گران قیمت/ناپایدار (به عنوان مثال، یک ارائه دهنده بازی جدید).
- پرچم آزمایش - A/B برای UI/آستانه.
- پرچم های مجاز - دسترسی فقط برای بازارها/VIP/شرکا.
- پرچم ها - در یک سرویس متمرکز/SDK (Unleash/LaunchDarkly/Rollout، یا خودتان).
- TTL برای پرچم و «بدهی» - روشن پس از تثبیت.
- «راه حل پرچم» را با «trace _ id» (برای اشکال زدایی) وارد کنید.
- فروشگاه «پیش مجموعه» برای حوادث («بازگشت پرداخت قدیمی» را فشار دهید).
جی سون
{
«ویژگی»: «payments_v2,» «قوانین»: [
{«if»: «market» در [«DE», «SE»], «rollout»: 0. 25}, {"اگر": "نام تجاری = = 'X' & کاربر. isEmployee", "انتشار": 1. 0}
]، "kill_switch": نادرست است
}6) دروازه SLO و وانت خودکار
خطای بودجه: اگر پنجره 10-15 دقیقه باشد، SLI فراتر از آستانه می رود - مکث خودکار و عقب نشینی.
منابع متریک: Prometheus/OTel → Argo Rollouts/Flagger AnalysisRun.
موارد نقض ≥ 3.
نمونه هایی از آستانه ها عبارتند از:- 'login _ success _ ratio ≥ 99. 9%`
- «p95 _ پرداخت _ سپرده ≤ 400 میلیون تومان»
- 'ws _ rtt _ p95 ≤ 120ms'
- 'doposit _ success _ by _ psp ≥ 99٪' (در هر PSP)
7) مهاجرت پایگاه داده و سازگاری بدون خرابی
گسترش → مهاجرت → الگوی قرارداد:1. گسترش: اضافه کردن ستون های جدید/شاخص ها، ایجاد طرح های سازگار (دو ورودی).
2. Migrate: برنامه به قدیمی + جدید می نویسد، از جدید در پشت phicheflag خوانده می شود.
3. قرارداد: پس از تثبیت - قدیمی را حذف کنید.
ابزار: Liquibase/Flyway، مهاجرت به CI، قوانین «idempotent & backward-compatible».
ضد تله: ممنوعیت مهاجرت هایی که نسخه قدیمی را خراب می کنند در حالی که قناری <100٪ است.
8) استراتژی آزمون برای تحویل مترقی
قرارداد (Pact/Buf) بین سرویس ها و ارائه دهندگان خارجی (PSP/بازی ها).
سناریوهای E2E: ورود → سپرده → نرخ → حل و فصل → برداشت (و مسیرهای منفی).
Synthetics در فروش (سلول های قناری): سپرده محاکمه/نرخ در مقادیر کم.
تست های Ficheflag: در هر شاخه - پیکربندی پرچم برای dev/stage/canary.
9) هماهنگی انتشار توسط دامنه
Auth/profile: مدت زمان کوتاه و محدودیت ها ؛ تست 2FA/SSO
پرداخت/کیف پول: قناری فقط برای سهم کوچک و یک بازار ؛ نظارت دقیق بر سهمیه PSP.
دروازه بازی (WS): گره های فردی ؛ PDB ؛ مسیریابی چسبنده ؛ ficheflag به کدک جدید/پروتکل.
تبلیغی/پاداش: idempotency '/تبلیغی/ادعا '؛ محدودیت در ترافیک قناری
10) جریان GitOps (مثال)
1. ادغام در اصلی → CI جمع آوری، تصویر را امضا کرد، آزمایشات را انجام داد.
2. ربات به روز رسانی نسخه در مانیفست قناری → سی دی آرگو اعمال.
3. Argo Rollouts: 5٪ ترافیک + تجزیه و تحلیل متریک.
4. خودکار شستشو به 25/50/100٪ یا خودکار رول.
5. PR برای «prod کامل» و پاک کردن flags/configs.
11) قابلیت مشاهده و تله متری انتشارات
علامت 'نسخه', 'rollout _ step', 'flag _ variant' در متریک/سیاهههای مربوط/آثار.
داشبورد «انتشار سلامت»: SLI با جریان کلیدی، مقایسه «پایه در مقابل قناری».
سیاهههای مربوط به راه حل های phicheflag (نرخ محدود)، پیوندهای ردیابی به دامنه مشکل.
12) حوادث، عقب نشینی، hotfixes
Runbook: «چگونه به رول عقب انتشار/خاموش کردن پرچم/سوئیچ PSP».
دکمه Kill-switch: غیرفعال کردن فوری عملکرد جدید بدون استقرار.
Hotfix: پچ داغ از طریق قناری با 1-5٪ + ارتقاء سریع با SLO های سبز.
13) انطباق و حسابرسی
قابلیت ردیابی کامل: چه کسی/چه زمانی/چه چیزی نورد، چه پرچم ها و کجا گنجانده شده است.
گزارش های WORM از نسخه ها و تغییرات پرچم.
سیاست چهار چشم برای خدمات پرداخت و مهاجرت پایگاه داده
14) نمونه های پیکربندی
اقدامات GitHub (قطعه CI):شغل یامل:
ساخت تست:
اجرا می شود: اوبونتو آخرین مراحل:
- استفاده می کند: اقدامات/پرداخت @v4
- اجرا: تست کنید
- اجرا: ایجاد علامت & & cosign - کلید $COSIGN_KEY تصویر: برچسب
- اجرا: تصویر trivy --exit-code 1 تصویر: برچسب
- اجرا: sbom تولید تصویر: برچسب> sbom. SPDX. جی سونپایتون اگر پرچم. is_enabled («payments _ v2», user = ctx. کاربر، بازار = ctx. بازار):
نتیجه = deposit_v2 (req)
دیگر:
نتیجه = deposit_v1 (req)رگو انکار می کند [msg] [
ورودی. درخواست کنید. يه جورايي. نوع = = «غلاف»
ورودی نیست. درخواست کنید. شیء. specif.SecurityContext. runAsNonRoot msg: = «runAsNonRoot مورد نیاز است»
}15) بررسی لیست (تولید آماده)
- GitOps را فعال کنید ؛ manual 'kubectl apply' مجاز نیست.
- تصاویر امضا شده، آسیب پذیری در استانداردها ؛ پذیرش امضا را بررسی می کند.
- قناری/آبی سبز پیکربندی شده ؛ دروازه های آزاد از طریق SLO متصل می شوند.
- Ficheflags با سوئیچ کشتن ؛ ثبت تصمیم پرچم
- گسترش → مهاجرت → مهاجرت قرارداد ؛ ورود دوگانه در انتقال
- داشبورد «baseline vs canary» ؛ بازگشت خودکار توسط معیارها.
- PSP رول بک/سوئیچ/ارائه دهنده بازی قطع runbook.
- قرارداد با ارائه دهندگان خارجی بر روی قناری آزمایش شده است.
- سیاست های امنیتی (OPA/Kyverno)، اسرار Vault/SM.
- پاک کردن پرچم های مرده و پیکربندی پس از انتشار.
16) تله های معمولی
Canary «توسط IP»، و نه توسط بخش های واقعی بازیکنان → تحریف معیارها.
فقدان دروازه های SLO - قناری با چشم می رود.
شکستن مهاجرت طرح زمانی که نسخه قدیمی فعال است.
retrai نامحدود/idempotency در پرداخت → آبشار طول می کشد.
ficheflags «ابدی» بدون TTL → هرج و مرج پیکربندی.
تنها PSP موجود در قناری را نمی توان با نسبت موفقیت مقایسه کرد.
خلاصه رزومه
CI/CD برای iGaming تحویل پیشرفته + قابلیت تنظیم در زمان است: انتشار قناری، فیکفلاگ ها با سوئیچ کشتن، دروازه های SLO و بازگشت خودکار. اضافه کردن مهاجرت امن، نظم و انضباط GitOps، خط مقدم در مقابل تله متری قناری، و سیاست های امنیتی قوی - و نسخه های خود را تبدیل خواهد شد قابل پیش بینی، سریع و قابل کنترل حتی در بارهای اوج و انطباق شدید.
