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
@Gamble_GC
شروع یکپارچه‌سازی

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

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

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