به روز رسانی اکوسیستم بدون خرابی
(بخش: اکوسیستم و شبکه)
1) هدف و اصول صفر خرابی
به روز رسانی صفر خرابی اطمینان از عملکرد مداوم شبکه و محصولات در طول تغییرات در کد، تنظیمات، طرح های داده ها و پروتکل ها. اصول اساسی:- سازگاری رو به جلو/عقب در مرزهای قرارداد.
- تحویل پیشرفته به جای «سوئیچ بزرگ».
- قابلیت مشاهده و برگشت پذیری: معیارها، ردیابی ها، بازگشت سریع.
- Idempointency و عقب نشینی امن برای شبکه و جریان پرداخت.
- جداسازی گسل: معماری سلول، قطع کننده مدار، محدودیت های فن.
2) استراتژی های انتشار بدون خرابی
آبی - سبز - دو پشته یکسان (آبی = تولید، سبز = جدید). ترافیک به صورت اتمی در سطح متعادل کننده با امکان بازگشت فوری تغییر می کند.
Canary - سهم مرحله ای از ترافیک (1٪ → 5٪ → 20٪ → 50٪ → 100٪) با دروازه های SLO.
نورد - به روز رسانی استخر گره به گره با بررسی آمادگی و زهکشی اتصال.
Shadow/Traffic Mirroring - درخواست های آینه برای یک نسخه جدید بدون تاثیر بر پاسخ.
ویژگی پرچم - تغییر کسب و کار از ویژگی های بیش از یک API بدون تغییر (گسترش تدریجی).
تاریک راه اندازی - فعال کردن شاخه های منطق پنهان برای تله متری و پروفایل.
توصیه: برای خدمات بحرانی - ترکیبی از قناری + نورد + پرچم ویژگی ؛ برای دروازه ها و API ها - آبی سبز با تعویض کوتاه.
3) سازگاری قراردادی (API/رویدادها/پروتکل)
API: نسخه بندی توسط URI/هدر ؛ افزودن فیلدها - معتبر، حذف/تغییر نام - فقط از طریق «پنجره مستهلک».
رویدادها (event-bus): فیلدهای «فقط اضافه کردن» ؛ کلیدها تغییرناپذیرند ؛ انواع جدید - به عنوان تم ها/نسخه های جدید.
طرحواره ها (Avro/JSON-Schema/Protobuf): طرح رجیستری، سازگاری BACKWARD 'FULL'.
protocol/P2P شبکه: نسخه handshake و مذاکره قابلیت (گره اعلام نسخه های پشتیبانی/ویژگی های).
Gateway: آداپتورهای بین vN و vN + 1 (transcoding/field mapping) برای دوره مهاجرت.
خط مشی استهلاک (مثال): اعلان → ≥90 روز هشدار → چک باکس «منسوخ» → حذف فیلد/نقطه پایانی.
4) گسترش → مهاجرت → قرارداد
1. گسترش - اضافه کردن ساختارها/شاخص ها/ستون های جدید (nullable/default)، نوشتن دوگانه (نوشتن دوگانه) به فرمت های قدیمی و جدید.
2. مهاجرت - مهاجرت پس زمینه، backfill، اعتبار سازگاری ؛ خواندن از طریق یک آداپتور که از هر دو طرح پشتیبانی می کند.
3. قرارداد - غیرفعال کردن خواندن/نوشتن به طرح قدیمی، حذف بدهی فنی پس از تکمیل «پنجره مستهلک».
sql
-- Expand
ALTER TABLE payouts ADD COLUMN payout_ref TEXT NULL;
CREATE INDEX CONCURRENTLY ix_payouts_ref ON payouts(payout_ref);
-- Migrate (batch + idempotent)
UPDATE payouts SET payout_ref = concat('ref_', id) WHERE payout_ref IS NULL;
-- Contract (after compatibility window)
ALTER TABLE payouts ALTER COLUMN payout_ref SET NOT NULL;
Transactionality رویداد: استفاده از Outbox (معامله با رکورد رویداد) + CDC برای تحویل تضمین شده.
5) اتصالات طولانی مدت و زهکشی
خاموش کردن برازنده: SIGTERM → متوقف کردن پذیرش درخواست های جدید → تنظیم 'آمادگی = شکست' → منتظر جریان های WebSocket/HTTP2/QUIC برای تخلیه → بستن.
تخلیه اتصال بر روی متعادل کننده: «deregister _ delay» 30-120 s، جلسات چسبنده - از طریق نشانه ها، نه IP.
فشار برگشتی: p99_latency بالادست جدید را محدود کنید.
6) SDK و نسخه مشتری
SemVer برای SDK ؛ شاخه LTS با پنجره پشتیبانی گسترده (به عنوان مثال 12 ماه)
سیاست: «حداقل دو نسخه کوچک فعال» ؛ تله متری در هر مشتری توسط نسخه ؛ هشدارهای ارتقاء خودکار
تغییرات بحرانی (امنیت): پرچم اجباری از غیر فعال کردن نسخه های قدیمی از طریق دروازه پس از مهلت.
7) به روز رسانی پروتکل ها و گره های شبکه
سافت فورک: گسترش قوانین بدون نقض گره های قدیمی (قابلیت ها).
هارد فورک: پنجره از پیش اعلام شده، اعتبار سنجی مضاعف، «اعتبار سنج های قناری»، محافظت در برابر درگیری های «reorg/rollback»، قفل زمان برای فعال سازی.
به روز رسانی بین زنجیره ای: پل های حکومتی سیگنال های فعال سازی را انتقال می دهند ؛ در صورت عدم هماهنگی - مدار شکن محلی.
8) تنظیمات و اسرار به عنوان داده
خدمات پیکربندی متمرکز با نسخه بندی، امضای دیجیتال و بازپرداخت.
چرخش اسرار بدون خرابی: دو کلید (قدیمی/جدید)، گنجاندن متناوب ؛ خرابی صفر برای KMS/PKI.
پرچم های ویژگی در یک ردیف جداگانه، ممیزی روشن/خاموش.
9) انتشار خط لوله و «دروازه» اتوماتیک
Стадии: ساخت → واحد → اسکن امنیتی → e2e/مرحله → سایه → قناری → 100٪.
گیتس متوقف می شود:- Error-budget burn-rate, p95/p99 latency, error-rate, کاهش رویدادها/پرداختهای نرخ موفقیت, رشد صفهای حرف مرده.
- بازگشت خودکار در صورت نقض SLO در هر یک از مراحل.
yaml release:
strategy: canary steps:
- name: shadow traffic_mirror: 5%
gates: [no_data_loss, no_pii_leak]
- name: canary_1 traffic: 1%
gates: [error_rate<0. 2%, p99<400ms]
- name: canary_2 traffic: 10%
gates: [slo_ok_1h, zero_deadletters]
- name: rollout traffic: 100%
gates: [stability_6h]
- name: bake duration: 24h action: finalize_or_rollback
10) قابلیت مشاهده و SLO برای انتشار
SLI های کلیدی:- p95/p99 تاخیر توسط نقاط پایانی ؛ نرخ خطا (5xx + 4xx کشنده) ؛ رویدادهای نرخ موفقیت ؛ نسبت رتریها ؛ تاخیر صف ؛ سهم «رله» در P2P ؛ سهم مشتریان از طریق نسخه
- p99 API ≤ 400 میلی ثانیه ؛ میزان خطا ≤ 0. 2%; آمار موفقیت ≥ 99 5%; تاخیر صف ≤ 2 ثانیه ؛ بازگشت MTTR ≤ 15 دقیقه
- داشبورد انتشار: قبل/بعد از مقایسه، نمودار canary، نقشه وابستگی (نقشه سرویس)، هشدار سوختگی 1h/6h.
11) چرخش و کشتن سوئیچ
بازگشت خودکار: آخرین مصنوعات و پیکربندی های «خوب» را نگه دارید. بازگشت «1 دکمه» در متعادل کننده (Blue←Green).
بازگشت جزئی: phicheflag هنگام ذخیره باینری منطق جدید را خاموش می کند.
بازگرداندن داده ها: فقط برای «مسیرهای خواندن» ؛ برای نوشتن مسیرها - مهاجرت محافظت شده (هرگز ستون های قدیمی را تا انتهای پنجره حذف نکنید).
Kill-switch: پرچم متمرکز برای غیرفعال کردن زیر سیستم ناپایدار.
12) تست بدون خرابی
تست قرارداد در برابر تثبیت مشتری (مبتنی بر مصرف کننده)
تست های Schema-Compat
آزمون هرج و مرج در مرحله بندی: شکست درصد گره ها/مناطق، تخریب DHT/TURN/KMS/DNS، «طوفان retray».
تست بار/remarket: مناطق قناری و مسیرهای داغ.
13) ارتباطات و روش های انطباق
یادداشت انتشار: چه تغییرات، نفوذ، پنجره ها/مهلت های مستهلک، اقدامات برای شرکا.
SLA از پاسخ های حادثه: MTTA ≤ 5 دقیقه، اولین وضعیت به روز رسانی ≤ 15 دقیقه، پس از مرگ ≤ 72 ساعت.
ردیابی حسابرسی: اتصال تمام تغییرات پیکربندی و انتشار به برنامه ها/سایت ها، امضای مصنوعات.
14) موارد خاص
پرداخت/جریان مالی: idempotency دقیق، dedup با توجه به idempotency کلید، outbox + CDC، «غیر مخرب» مهاجرت تنها.
WebSocket/streams: نسخه پروتکل در دست دادن، اتصال مجدد با خلاصه (نشانه های رزومه).
Cache/edge: 'stale-while-revalidate'، نسخه های حافظه پنهان دوگانه، بهداشت TTL در طول دوره انتشار.
مشتریان تلفن همراه: مرحله به مرحله در بخش ها، به روز رسانی اجباری در نسخه های امنیتی.
15) چک لیست صفر خرابی
1. سازگاری قرارداد و طرح رجیستری پیکربندی شده است.
2. گسترش → مهاجرت → قرارداد شرح داده شده و خودکار است.
3. تعادل/ورود از زهکشی آبی-سبز و اتصال پشتیبانی می کند.
4. خط لوله قناری با دروازه های SLO و بازگشت خودکار.
5. ویژگی های پرچم و کشتن سوئیچ در دسترس هستند 24/7.
6. Outbox + CDC و idempotency برای همه مسیرهای نوشتن فعال هستند.
7. داشبوردهای release-health و هشدارهای burn-rate فعال هستند.
8. ارتباطات و سیاست مستهلک اعلام شده به شرکای در پیش است.
9. برگشت تمرین هفتگی ؛ روز هرج و مرج سه ماهه
16) واژه نامه
تحویل پیشرونده - انتشار مرحله ای از ویژگی های با کنترل ریسک.
Schema registry - مخزن نسخه های schema با سیاست های سازگاری.
Outbox/CDC - الگویی برای تضمین انتشار رویدادها از معاملات.
آبی-سبز - پشته موازی با تعویض ترافیک اتمی.
Canary - به تدریج افزایش سهم ترافیک در نسخه جدید.
خاموش شدن/تخلیه برازنده - خاتمه صحیح اتصالات فعال.
خط پایین: خرابی صفر یک ترفند نیست، بلکه یک سیستم است: قراردادها، سازگاری طرح، استراتژی های انتشار مرحله ای، قابلیت مشاهده، مهاجرت ایمن و بازپرداخت تضمین شده. به دنبال این چارچوب، اکوسیستم به سرعت، قابل پیش بینی و بدون درد برای کاربران و شرکا به روز می شود.