GH GambleHub

استقرار صفر خرابی

(بخش: معماری و پروتکل ها)

1) Zero-Downtime چیست و چرا مورد نیاز است

Zero-Downtime (ZDT) راهی برای انتشار نسخه های جدید یک برنامه بدون در دسترس نبودن سرویس برای کاربران و بدون از دست دادن درخواست ها است. اهداف:
  • خرابی صفر برای مشتریان و ادغام.
  • انتشار قابل پیش بینی، بازگشت سریع و ریسک قابل کنترل.
  • حفظ SLO/SLI (تاخیر، خطاها، در دسترس بودن) در مرزهای توافقنامه.

کلید ZDT یک تکنیک «جادویی» نیست، بلکه ترکیبی از الگوهای تحویل، سازگاری داده ها و مسیریابی ترافیک صالح است.

2) اصول اساسی صفر خرابی

1. سازگاری نسخه: نسخه های جدید و قدیمی باید همزمان ترافیک و داده ها را به درستی اداره کنند.
2. عدم توانایی عملیات: بازفرآوری نباید دولت را بشکند.
3. خاموش شدن و تخلیه اتصال.
4. بررسی سلامت گام به گام: آزمون آمادگی/زندگی، نقاط پایانی سلامت.
5. بازگشت به عنوان شهروند درجه اول: بازگشت آسان تر و سریع تر از hotfix است.
6. قابلیت مشاهده توسط طراحی: علائم انتشار، داشبورد تک، هشدارهای SLO.
7. اتوماسیون: سناریوهای انتشار و برگشت کد هستند، نه دستورالعمل های دستی.

3) الگوهای تحویل بدون خرابی

3. 1 به روز رسانی نورد

به تدریج بخشی از موارد نسخه قدیمی را از ترافیک حذف کنید، آنها را به روز کنید و آنها را به استخر بازگردانید.

مزایا: اقتصادی در زیرساخت، فقط در k8s/ASG.
منفی: برای برخی از زمان خوشه با دو نسخه در همان زمان کار می کند (نسخه انحراف).

3. 2 آبی سبز

دو طرفدار کامل: فعال (آبی) و نامزد (سبز). سوئیچینگ ترافیک - تلنگر اتمی.

مزایا: بازگشت فوری، انزوا تمیز.
معایب: هزینه های زیرساخت های ↑، سخت تر با stateful.

3. 3 قناری/برنامه ریزی پیشرفته

ما سهم کوچکی از ترافیک (1-5-10-25-50-100٪) را به نسخه جدید با دروازه های متریک می دهیم.

مزایا: حداقل شعاع انفجار، راه حل های مبتنی بر داده ها.
منفی: نیاز به مشاهده بالغ و مسیریابی هوشمند.

3. 4 ترافیک سایه/راه اندازی تاریک

درخواست های واقعی را به نسخه جدید (بدون پاسخ به کاربر) ارسال کنید یا برای جمع آوری معیارها پنهان کنید.

مزایا: شناسایی زودهنگام مشکلات.
منفی: دو بار در اعتیاد، شما نیاز به کنترل عوارض جانبی.

4) مدیریت ترافیک و اتصال

4. 1 آمادگی/زنده بودن

Liveness می گوید ارکستر به «راه اندازی مجدد من».
آمادگی: «ترافیک را هدایت نکنید، من هنوز آماده نیستم».
نمی توان بدون منطق آمادگی صحیح و زمانبندی منتشر کرد.

4. 2 زهکشی اتصال

قبل از حذف یک نمونه از استخر:
  • پذیرش ارتباطات جدید را متوقف کنید
  • در انتظار پایان فعالیت،
  • وقفه «آویزان» را قطع کنید.

4. 3 جلسه چسبنده و مسیریابی L7

چسبنده برای سناریوهای حالت دار مفید است، اما تعادل بار را پیچیده می کند.
قوانین L7 (مسیر، هدر، کوکی، نسخه های API) برای canary/ring مناسب هستند.

4. 4 اتصالات طولانی مدت

جریان WebSocket/gRPC: قبل از به روز رسانی، حالت تخلیه + سیگنال «GOAWAY» را روشن کنید.
پنجره ها را برای غلبه بر جریان ها و backhoe مشتری برنامه ریزی کنید.

5) سازگاری داده ها و مهاجرت پایگاه داده

5. 1 گسترش-مهاجرت-قرارداد

1. گسترش: اضافه کردن ستون های جدید/شاخص/جداول بدون شکستن نسخه قدیمی.
2. مهاجرت: ما انتقال داده ها در پس زمینه و idempootently (دسته، ایست بازرسی).
3. قرارداد: حذف قدیمی تنها پس از تثبیت.

5. 2 شیوه ها

اجتناب از قفل DDL منحصر به فرد در پنجره انتشار.
قراردادهای نسخه بندی API/رویداد (رجیستری طرح، CDC).
برای مهاجرت های سنگین - ابزارهای آنلاین، کپی، سوئیچینگ مرحله ای.
نوشتن دوگانه فقط با deduplication و مصرف کنندگان idemotent.
صندوق ورودی/صندوق ورودی برای ادغام قابل اعتماد از طریق صف.

6) کش ها، جلسات و کارهای پس زمینه

جلسات و حافظه پنهان خارجی هستند (Redis/Memcached) به طوری که نسخه ها قابل تعویض هستند.
گرم کردن کش/jits/سرعت شاخص قبل از جمع آوری.
تقسیم صف پس زمینه توسط نسخه و یا استفاده از رهبری برای جلوگیری از مسابقه.

7) قابلیت مشاهده و دروازه های SLO

سیگنال های طلایی: تاخیر p95/p99، میزان خطا، RPS، اشباع، تاخیر صف.
SLA کسب و کار: مجوز، تبدیل، پرداخت موفق، امتناع از مراحل قیف.
گیتس: راه اندازی تنها در صورتی ترویج می شود که canary ≤ baseline + آستانه تخریب، و بودجه خطا از بین نمی رود.

8) تکمیل و بازگرداندن ایمن

Rollback همان خط لوله است، فقط در جهت مخالف: دستورات ثابت، نه «کرافت دستی».
برای آبی سبز - تلنگر به عقب ؛ برای قناری - کاهش وزن به 0٪ یا مرحله پایدار قبلی.
داده ها: جبران معاملات، پردازش مجدد، deduplication رویداد.

9) چک لیست صفر خرابی

قبل از انتشار

  • یک مصنوع امضا شده (تغییر ناپذیر)، SBOM و بررسی وابستگی جمع آوری می شوند.
  • آمادگی/زنده بودن اجرا و آزمایش شده است.
  • برنامه مهاجرت در حالت گسترش، برگشت پذیری تایید شده است.
  • داشبورد و هشدار برای نسخه جدید آماده هستند، علائم انتشار پرتاب می شوند.
  • رول بک برای مرحله بندی/قبل از prod بررسی می شود.

در زمان انتشار

  • زهکشی اتصال فعال است، زمان خروج کافی است.
  • ترافیک قناری/حلقه یا تلنگر (آبی سبز) است.
  • معیارها با پایه مقایسه می شوند، آستانه دروازه برآورده می شود.

پس از انتشار

  • پس از نظارت N ساعت، هیچ حادثه.
  • مهاجرت قرارداد کامل، پرچم موقت/مسیرهای حذف شده است.
  • گذشته نگر، به روز رسانی playbook.

10) ضد الگوهای

بازسازی و استقرار بدون تخلیه و آمادگی ⇒ شکستن درخواست.
DDL آماده نشده ⇒ قفل و وقفه در زمان نخست.
مخلوط کردن طرح های ناسازگار بین نسخه های سرویس.
عدم توانایی در کارکنان و کارگران.
«رول با احساس» بدون دروازه و مقایسه با پایه.
DNS-TTL طولانی با آبی-سبز، به همین دلیل تلنگر ساعت ها طول می کشد.
نشستهای محلی/نهانگاه در حافظهٔ نمونه با نورد/قناری.

11) سناریوهای پیاده سازی

11. 1 Kubernetes (نورد + قناری)

استقرار с «maxUnavailable = 0»، «maxSurge = 25٪».
آمادگی منتظر گرم شدن است (مقدار دهی اولیه حافظه پنهان، مهاجرت جزئی).
سرویس مش/ورودی با مسیریابی وزن (1-5-10-25-50-100٪).
هشدارها: p95، 5xx، تاخیر صف، قیف کسب و کار.

11. ۲ آبی-سبز در ابر

دو پشته در پشت متعادل کننده: آبی. به عنوان مثال. کام «и» سبز. به عنوان مثال. کام.
گرم کردن سبز، دود/رگرس، سپس مبادله شنونده/مسیر (یا سوئیچ DNS با TTL کم).
در مورد مشکلات - تلنگر فوری به عقب.

11. 3 خدمات دولتی

کپی داده ها + مهاجرت آنلاین ؛ خواندن دو برابر با اعتبار.
ضربه های پس زمینه توسط نسخه «رهبری» یا تقسیم صف انجام می شود.
نشستها/نهانگاه خارج از نمونه ؛ sticky فقط به طور موقت فعال می شود.

12) Ficheflags و برنامه های مشتری

ویژگی های جدید توسط پرچم ها فعال می شوند (بخش ها: کارکنان → بتا → همه).
برای مشتریان تلفن همراه/دسکتاپ، مرزهای سازگاری پروتکل و سیاست تخریب میراث (بازپرداخت سمت سرور) را در نظر بگیرید.

13) عملکرد و هزینه

نورد ارزان تر است، اما نیاز به سازگاری دقیق دارد.
آبی سبز در زمان انتشار گران تر است، اما بازگشت فوری است.
قناری ریسک و هزینه را متعادل می کند، اما نیاز به مشاهده قوی دارد.
صرفه جویی از طریق پیش نمایش های کوتاه مدت و ایستگاه های خودکار تمیز کردن.

14) حداقل خط لوله مرجع ZDT

1. ساخت: تک مصنوع، امضا، SBOM.
2. تست: واحد/ادغام/قرارداد + امنیت.
3. مرحله بندی: دود، بار، گسترش مهاجرت، چک برگشت.
4. Prod: سایه → canary (دروازه) یا تلنگر آبی سبز.
5. پس از استقرار: نظارت، تمیز کردن قرارداد، یکپارچهسازی با سیستمعامل.

15) خلاصه ای کوتاه

Zero-Downtime یک رشته است: نسخه های سازگار + مسیریابی صحیح + مهاجرت های مدیریت شده + مشاهده پذیری و بازگشت سریع. یک الگوی برای زمینه (نورد، آبی-سبز، قناری) را انتخاب کنید، دروازه های SLO را خودکار کنید، داده ها را به صورت خودکار نگه دارید - و نسخه ها یک رویداد متوقف می شوند و به یک روند معمول قابل اعتماد تبدیل می شوند.

Contact

با ما در تماس باشید

برای هرگونه سؤال یا نیاز به پشتیبانی با ما ارتباط بگیرید.ما همیشه آماده کمک هستیم!

شروع یکپارچه‌سازی

ایمیل — اجباری است. تلگرام یا واتساپ — اختیاری.

نام شما اختیاری
ایمیل اختیاری
موضوع اختیاری
پیام اختیاری
Telegram اختیاری
@
اگر تلگرام را وارد کنید — علاوه بر ایمیل، در تلگرام هم پاسخ می‌دهیم.
WhatsApp اختیاری
فرمت: کد کشور و شماره (برای مثال، +98XXXXXXXXXX).

با فشردن این دکمه، با پردازش داده‌های خود موافقت می‌کنید.