چگونه depla و بازی به روز رسانی کار بدون وقفه
چرا انتشار صفر خرابی کازینو
هر «micropause» در iGaming شرط از دست داده است, جلسات و اعتماد. به روز رسانی ها باید بدون توجه به بازیکن انجام شود: شرط ها همچنان پذیرفته می شوند، جریان شکسته نمی شود، کیف پول و دفتر کل باقی می مانند و معیارها پرش نمی کنند. کلید نظم و انضباط نسخه، سازگاری قرارداد، و گام به گام، محاسبات قابل مشاهده است.
اصول مرجع
1. سازگاری رو به جلو/عقب نسخه های جدید برای درک رویدادها/زمینه های قدیمی مورد نیاز هستند و مشتریان قدیمی باید با خیال راحت موارد جدید را نادیده بگیرند.
2. دارایی های غیر قابل تغییر منابع استاتیک و بازی با نام هش داده می شوند. بدون «بازنویسی» فایل ها.
3. تقسیم مسیر نوشتن/خواندن. معاملات نقدی (نگهداری/تسویه) جداگانه و اتمی هستند، UI/دارایی ها به طور مستقل تغییر می کنند.
4. قابلیت مشاهده به عنوان یک قرارداد انتشار بدون ردیابی/متریک - ممنوعیت.
5. Rollback همانند Release است. تصاویر آماده، مهاجرت دو طرفه، دکمه برگشت بدون shamanism دستی.
معماری zero-downtime در عمل
1) نسخه ها و قراردادها
SemVer برای API/events: 'MAJOR. جزئی است. PATCH، فیلد «eventVer/contractVer» در هر پیام.
گسترش → مهاجرت → قرارداد برای طرح های پایگاه داده: ابتدا فیلدها/شاخص ها را اضافه کنید (گسترش)، سپس مهاجرت پس زمینه (مهاجرت)، و تنها پس از خاموش کردن قرارداد.
خواندن دوگانه هنگام تغییر منطق انتقادی (به عنوان مثال، محاسبه پاداش): برای مدتی ما به جداول قدیمی و جدید می نویسیم، مقایسه کنید.
2) دارایی ها و CDN ها
بسته نرم افزاری/sprites/متون: برنامه a1b2c3. جي، قابل پرداخت. 98f0. PNG '، هدر:
کش کنترل: عمومی، حداکثر سن = 31536000، تغییر ناپذیر
مانیفست دارایی در سرور/CDN. ما لینک را به manifest جدید تغییر می دهیم - بازیکنان فورا یک UI جدید دریافت می کنند، صفحات قدیمی همچنان با همان فایل ها زندگی می کنند (بدون لینک های خراب).
پاکسازی برچسب برای اغلب تغییر JSON (کاتالوگ/آگهی ها) + 'stale-while-revalidate' برای تغییر نرم.
3) استراتژی های ترافیک
آبی سبز برای اجزای حیاتی (کیف پول/لجر/پل): دو محیط یکسان را نگه دارید، در عرض چند ثانیه وارد سرویس/سرویس مجازی شوید.
Canary برای API/دروازه های بازی: 1-5٪ از ترافیک → تجزیه و تحلیل SLO/Fin Delta → گسترش به 100٪.
پرچم ویژگی برای UI و مکانیک: شامل برای یک بخش، منطقه یا بازی، بدون انتشار کد.
4) بازی های زنده و RNG
زنده (WebRTC/LL-HLS):- ما بازیکن/پوشش به طور جداگانه از جریان ویدئو را تغییر دهید (دامنه های مختلف/پیکربندی).
- زمان سرور و تغییر نرم به یک سیگنال جدید.
- ساخت جدید این بازی به عنوان یک نسخه جدید از منابع داده شده است. بازیکنانی که قبلاً دور را شروع کرده اند، آن را با مشتری/قوانین قدیمی به پایان می رسانند.
- В دور بزن حل و فصل 'ثابت' calcVer - یک نسخه از موتور محاسبه به طوری که دور بحث برانگیز بازی «به عنوان آن بود».
5) کیف پول و دفتر کل - چگونه برای شکستن پول
یک نویسنده در هر شارد. سوئیچینگ نویسنده یک روش جداگانه (با قفل) و تنها در AZ/منطقه است.
Idemotence در تمام مسیرها: "بهتر است. محل"، "دور. حل و فصل، پرداخت. درخواست کن، صندوقدار. webhook '- с' idempotencyKey '.
PITR و چک سایه: در طول محاسبه قناری، ما تکرار سیم کشی در «سایه»، بررسی واحد (GGR/NGR) قبل از ارتقاء.
انتشار گام به گام بدون خرابی (سناریوی مرجع)
1. آماده سازی:- قرارداد انتشار: «PATCH/MINOR/MAJOR»، ماتریس سازگاری.
- «گسترش» مهاجرت در پیشبرد اعمال می شود، ایجاد شاخص آنلاین اعمال می شود.
- دارایی های بارگذاری شده به CDN، آشکار آماده است.
- 1 تا 5 درصد ترافیک تماشای p95/99 'bet. محل '،' حل و فصل '،' خطا _ نرخ '، رشد' VOID '، عدم تعادل پرداخت.
- مقایسه امور مالی با گروه کنترل (آستانه دلتا <).
- درصد را به 25/50/100 افزایش دهید یا آبی سبز را در هسته پول تغییر دهید.
- ما ویژگی ها را با پرچم ها (محلی/بازی/مناطق) روشن می کنیم.
- جابجایی پس زمینه داده ها/پیشرفت را حمل می کند، نوشتن دوگانه فعال است.
- تله متری یک مسابقه متریک را تأیید می کند.
- غیر فعال کردن legasi خواندن، حذف «سایه» در MINOR بعدی/عمده.
- به روز رسانی دایرکتوری از طرح/حوادث، بستن استهلاک.
- پست مورتم/یکپارچهسازی با سیستمعامل حتی بدون حادثه: چه چیزی برای بهبود در SLO، هشدار، چک لیست.
قابلیت مشاهده و SLO در هنگام انتشار
SLI/SLO:- خوب شد. محل p95 '(هدف ≤ 150-250 میلی ثانیه)،' error _ rate '(<0. 3٪)، دور. حل و فصل p95 (≤2 с)، پرداخت. ارسال p95 (≤800 میلی ثانیه).
- QoS زنده: 'webrtc _ rtt _ ms', 'drop _ frames', 'aborted _ rounds'.
- برچسب های نسخه: 'buildId', 'semver', 'contractVer', 'calcVer' در سیاهههای مربوط و ردیابی.
- دلتاهای فین: مقایسه GGR/NGR/hold با بخش های شاخه قدیمی/جدید.
بازگشت بدون درد
آبی سبز: مسیر فوری بازگشت به «آبی».
قناری: ترافیک را به 0٪ کاهش دهید، ویژگی های یک پرچم را غیرفعال کنید.
دارایی: مانیفست قدیمی تغییر ناپذیر باقی می ماند، بازیکنان در صفحات قدیمی شکستن نیست.
داده ها: اگر دو نوشتن وجود داشته باشد، هنگام بازگشت، منبع «قدیمی» را می خوانیم ؛ هیچ مهاجرت مخرب قبل از تایید وجود دارد.
سازمان و فرآیندها
پنجره ها را با حفاظت SRE تغییر دهید: اسلات های آزاد برای قله ها/رویدادهای ورزشی لمس نمی شوند.
Runbooks: چک لیست برای سوئیچ های ورودی، نقش پایگاه داده، پرچم ویژگی، زنجیره های تماس.
راه اندازی تاریک: همه چیز را به جز دید در UI روشن کنید، بار «پنهان» را اجرا کنید.
خطاهای مکرر (ضد الگوهای)
بازنویسی دارایی ها بدون نسخه → مشتریان شکسته و مربع های صورتی.
شکستن تغییرات رویداد/API ها «بی سر و صدا» → تخلیه ارائه دهنده و ادغام داشبورد.
مهاجرت منطقی طرحواره + در یک مرحله بدون نوشتن دوگانه → اختلافات مالی.
عدم توانایی → بدهی های دوگانه در بازپرداخت.
یک سوئیچ تنها در یک بار 100٪ بدون قناری و متریک.
مخلوط کردن انتشار UI و هسته محاسبه در یک استقرار.
هیچ برنامه rollback یا rollback نیاز به SQL دستی ندارد.
چک لیست انتشار صفر خرابی
قراردادها و داده ها
- SemVer + 'contractVer/eventVer/calcVer' نوشته شده و مستند شده است.
- «گسترش» مهاجرت اعمال شده از قبل ؛ «مهاجرت» در پس زمینه ؛ در چرخه بعدی وارد شوید.
- دو نوشتن/خواندن دوگانه که در آن finlogy تغییر می کند.
زیرساخت ها
- CDN: دارایی های غیر قابل تغییر، manifest، tag-purge، «stale-while-revalidate».
- آبی سبز برای هسته پول ؛ Canary برای دروازه های API/بازی.
- ویژگی های پرچم برای UI/مکانیک ؛ پرچم ها بدون استفاده مدیریت می شوند.
قابل مشاهده بودن
- مسیرهای پیاده روی با 'buildId/semver/calcVer' ؛ داشبورد SLO و باله دلتا.
- هشدار به رشد «VOID»، «error _ rate»، تخریب زنده QoS.
بازگشت و ایمنی
- دکمه برگشت (ورود/مسیریابی)، مانیفست قدیمی در دسترس است.
- PITR و سایه ارسال برای بررسی دفتر.
- تست رول بک در مرحله و در بخش تولید کوچک انجام شده است.
فرآیند ها
- سوئیچ های Runbooks ؛ پنجره ها را تغییر دهید.
- تاریک راه اندازی/قناری ؛ یکپارچهسازی با سیستمعامل پس از آزادی.
خرابی صفر در iGaming یک عمل سیستم است: نسخه ها و قراردادها، دارایی های غیر قابل تغییر و CDN، آبی سبز/قناری، مهاجرت های غیر بیکار، پول بی نظیر و قابلیت مشاهده دقیق. پس از این چک لیست، شما بازی ها و پلت فرم را به روز می کنید تا بازیکن هیچ چیز را متوجه نشود - به جز اینکه همه چیز سریع تر و پایدار تر شده است.