GH GambleHub

هندسة الفوضى: مرونة النظام

هندسة الفوضى: مرونة النظام

1) لماذا هندسة الفوضى

الهدف هو إثبات استقرار بنية الإنتاج ليس بالكلمات والمخططات، ولكن بالتجارب. نتعمد خلق إخفاقات خاضعة للرقابة في:
  • فرضيات الاختبار حول سلوك النظام والتحقق من صحة SLO ؛
  • الكشف عن SPOFs المخفية، المهلات/عمليات إعادة التدوير غير الصحيحة، الآثار المتتالية ؛
  • أفرقة التدريب: أيام اللعب، دفاتر التشغيل، الاتصالات ؛
  • لتشكيل ثقافة «الاستدامة افتراضيًا» بدلاً من «الأمل في الأفضل».

مهم: ≠ فوضى الهندسة "كسر كل شيء. "هذه طريقة علمية: فرضية → الحالة الثابتة → تجربة → استنتاجات → تحسين.

2) دورة التجربة الأساسية

1. الحالة الثابتة (خط الأساس): ما هي المؤشرات القصوى المستقرة ؟ (على سبيل المثال، النجاح ≤500 ms at 99. 95%).
2. الفرضية: مع فقدان واحد AZ، سيزيد p95 أقل من 10٪، ≥99 التوافر. 9%.
3. التجربة: خطأ مخطط له مع نصف قطر انفجار محدود ومعايير إيقاف.
4. الملاحظة: المقاييس/المسارات/جذوع الأشجار، ومعدل الحرق SLO، و SLI للأعمال التجارية (على سبيل المثال، الودائع الناجحة).
5. التحسينات: نسجل الاكتشافات، ونغير المهلة/الحدود/التوجيه، ونحدث دفتر التشغيل.
6. التشغيل الآلي/الانحدار: كرر في الجدول الزمني، أضف إلى CI/CD وتقويمات أيام اللعبة.

3) السلامة أولا

نصف قطر الانفجار: ابدأ بنصف ضيق - جراب واحد/مثيل/مسار/مساحة اسم.
حواجز الحماية: تنبيهات إلى معدل حرق SLO (سريع/بطيء)، حدود إعادة الدفع، حد QPS، ميزانية الحوادث.
معايير التوقف: «إذا كان معدل الخطأ> X٪ أو p99> Y ms N minutes - توقف وتراجع على الفور».
النوافذ: ساعات العمل عند الطلب، وإخطار أصحاب المصلحة، والإصدارات المجمدة.
الاتصال: IC/Tech Lead/Comms، قناة واضحة (غرفة الحرب)، نموذج الرسالة.

4) فصول الفشل وأفكار الفرضية

الشبكة: تأخير/نفث/فقدان، إسقاط جزئي للموانئ، «فشل» الاتصال بين الخدمات/PSP.
الكمبيوتر/العقد: عمليات القتل، ارتفاع درجة حرارة وحدة المعالجة المركزية، استنفاد واصفات الملفات، أحواض الاتصال الضيقة.
التخزين وقاعدة البيانات: نمو أقراص الكمون، النسخ المتماثلة المتأخرة، إيقاف قطعة/قائد واحد، تقسيم الدماغ.
التبعيات: تدهور واجهات برمجة التطبيقات الخارجية، حدود مقدمي الخدمات، رشقات نارية 5xx/429.
إدارة التغيير: الإفراج غير الناجح، علم الميزة السيئ، الطرح الجزئي.
المحيط: يتحلل CDN، DNS/Anycast drift، WAF/فشل حماية الروبوت.
المنطقة/المنطقة المنخفضة: خسارة كاملة أو حادثة «جزئية» (أسوأ قليلاً ولا يمكن التنبؤ بها).

5) الأدوات والتقنيات

Kubernetes: Chaos Mesh و Litmus و PowerfulSeal و kube-monkey.
السحب: محاكي حقن الصدع AWS (FIS)، مجالات الصدع بالقرب من السحب.
الشبكة/الوكيل: السموم (سم TCP)، tc/netem، iptables، خطأ المبعوث (التأخير/الإجهاض)، حقن خطأ Istio.
العمليات/العقد: «الإجهاد - نغ»، الخناق/وحدة المعالجة المركزية، ملء القرص.
توجيه حركة المرور: أوزان GSLB/DNS، تبديل الكناري/الأزرق والأخضر للفحوصات المزيفة.

6) نماذج نصية (Kubernetes)

6. 1 تأخير/إجهاض على الطريق (Istio VirtualService)

yaml apiVersion: networking. istio. io/v1alpha3 kind: VirtualService metadata: { name: api-chaos }
spec:
hosts: ["api. internal"]
http:
- route: [{ destination: { host: api-svc } }]
fault:
delay: { percentage: { value: 5 }, fixedDelay: 500ms }
abort: { percentage: { value: 1 }, httpStatus: 503 }

الفرضية: ستحتفظ المهلات/عمليات إعادة تشغيل العملاء و CBs بـ p95 <300 مللي ثانية ومعدل الخطأ <0. 5%.

6. 2 بود كيل (فوضى شبكية)

yaml apiVersion: chaos-mesh. org/v1alpha1 kind: PodChaos metadata: { name: kill-one-api }
spec:
action: pod-kill mode: one selector:
namespaces: ["prod"]
labelSelectors: { "app": "api" }
duration: "2m"

الفرضية: يعوض التوازن و HPA عن فقدان حالة واحدة دون نمو p99> 20٪.

6. 3 فوضى الشبكة (التأخير في قاعدة البيانات)

yaml apiVersion: chaos-mesh. org/v1alpha1 kind: NetworkChaos metadata: { name: db-latency }
spec:
action: delay mode: all selector: { namespaces: ["prod"], labelSelectors: {"app":"payments"} }
delay: { latency: "120ms", jitter: "30ms", correlation: "25" }
direction: to target:
selector: { namespaces: ["prod"], labelSelectors: {"role":"db"} }
mode: all duration: "5m"

الفرضية: البرك/المهلات/المخبأ ستقلل من التأثير ؛ p95 المدفوعات ستبقى ≤ SLO.

6. 4 ملء القرص

yaml apiVersion: chaos-mesh. org/v1alpha1 kind: IOChaos metadata: { name: disk-fill-logs }
spec:
action: fill mode: one selector: { labelSelectors: {"app":"ingest"} }
volumePath: /var/log size: "2Gi"
duration: "10m"

الفرضية: سيعمل تناوب السجلات/الحصص/التنبيهات قبل تدهور الطرق.

7) تجارب خارج K8s

7. 1 توكسيبروكسي (محلي/متكامل)

bash toxiproxy-cli create psp --listen 127. 0. 0. 1:9999 --upstream psp. prod:443 toxiproxy-cli toxic add psp -t latency -a latency=200 -a jitter=50 toxiproxy-cli toxic add psp -t timeout -a timeout=1000

7. خطأ المبعوث 2 HTTP (محيط/شبكة)

yaml fault:
delay: { fixed_delay: 0. 3s, percentage: { numerator: 10, denominator: HUNDRED } }
abort: { http_status: 503, percentage: { numerator: 1, denominator: HUNDRED } }

7. 3 AWS FIS (فكرة مثال)

التجربة «تقتل» N٪ EC2 في مجموعة Auto Scaling Group، ترفع بشكل مصطنع كمون EBS، تعطل NAT-GW في جهاز AZ واحد.
معايير التوقف المدمجة لمقاييس CloudWatch SLO.

8) مقاييس إمكانية الرصد أثناء الفوضى

SLO/SLI: جزء بسيط من الطلبات الجيدة، p95/p99، معدل الحرق.
نموذج RED للطرق الحرجة (المعدل، الأخطاء، المدة).
البرك: في انتظار الاتصال p95، الاستخدام.
DB: النسخ المتماثلة المتأخرة، الأقفال، طلبات الانجراف p95.
الشبكة: retransmitts، RTT، سلوك dscp/ecn.
SLI الأعمال: نجاح المعاملات (الودائع/الشيكات)،% العوائد/الأخطاء.
التتبع: مسارات انتقائية (نماذج)، ارتباط شروح الإصدار.

9) التكامل مع SLO/ميزانية الخطأ

تجارب الخطة ضمن ميزانية الأخطاء: يجب ألا «تعطل» الفوضى الأهداف الفصلية.
تنبيهات معدل الحرق كتبديل قتل تلقائي.
تقرير: «كم احترقت الميزانية»، «ما الذي ينحرف عن الحالة الثابتة».

10) أيام اللعبة (تمرين)

السيناريو: أسطورة موجزة (على سبيل المثال «المنطقة الشرقية المفقودة»)، خطوات الحقن، أهداف SLO، الأدوار، الوقت.
التصنيف: RTO/RPO الفعلي، جودة الاتصالات، صحة الدليل.
الرجعية: قائمة التحسينات مع المالكين والمواعيد النهائية، تحديث الوثائق/لوحات القيادة.

11) التشغيل الآلي و CI/CD

فوضى الدخان: اختبارات مرحلية قصيرة في كل إصدار (على سبيل المثال 1 جراب قتل + 200 م تأخير لكل طريق).
ليلية/أسبوعية: سيناريوهات أثقل (5-15 دقيقة) مع تقرير.
بوابات الترويج: إذا كانت p95/أخطاء> عتبة الكناري - التراجع التلقائي.
مستودعات مع كتالوج من التجارب (YAML + runbook + SLO-العتبات).

12) الأنماط المضادة

«كسر الطعام بدون درابزين»: لا معايير توقف، لا تحت الطلب → خطر وقوع حادث حقيقي.
عمل لمرة واحدة بدلاً من العملية.
الفوضى بدون حالة ثابتة: ليس من الواضح ما الذي يعتبر نجاحًا/فشلًا.
إعادة التدوير المفرطة → DDoS الذاتي عند حقن التأخير.
تجاهل SLI للأعمال: نجاح «تقني» عندما تفشل المدفوعات/الطلبات.
عدم وجود مالكي التحليل والتحسين.

13) قائمة التنفيذ المرجعية (0-45 يومًا)

0-10 أيام

حدد SLI الحالة الثابتة (المستخدم + الأعمال).
اختر أداة (Chaos Mesh/Litmus/Toxiproxy/FIS).
وصف الدرابزين: نصف قطر الانفجار، معايير التوقف، النوافذ، الأدوار.

11-25 يومًا

قم بإجراء التجارب الأولى: قتل الكبسولة، تأخير 100-200 مللي ثانية لكل منبع حرج، قم بإسقاط 1٪ من الحزم.
قم بتهيئة تنبيهات معدل الحرق، وربط مفتاح القتل بمعايير التوقف.
اقض أول يوم للعبة، واجمع الرجعية والإصلاحات.

26-45 يومًا

أضف مستوى AZ/نصوص التبعية (خارجي PSP، DB-lag).
أتمتة الفوضى الليلية عند الانطلاق ؛ إعداد السيناريوهات «الموسمية» (القمم).
فهرس التجارب والتقارير المنتظمة للإدارة/SRE.

14) مقاييس النضج

≥80٪ من الطرق الحرجة لديها التجارب الموصوفة ومقاييس الحالة الثابتة.
يتم تشغيل مفتاح القتل التلقائي عند تجاوز عتبات معدل الخطأ p99/الخطأ.
فصلية - مستوى يوم اللعبة AZ/المنطقة ؛ ≥1 مرات/شهر - السيناريو المستهدف للتبعيات.
ينخفض MTTR بعد دورة من التحسينات، وينخفض ارتباط «إطلاق ↔ الحادث».
تنخفض نسبة «غير المتوقعة» في الإخفاقات الحقيقية → تميل إلى الصفر.
تُظهر لوحات القيادة «المرونة» كمؤشرات أداء رئيسية (معدل الحرق، ووقت الاسترداد، ونسبة إجراءات DR الناجحة).

15) أمثلة على حواجز الحماية ومحفزات التوقف

توقف عند: «http _ req _ failed> 1٪» 3 دقائق، «p99> 1000 ms' 3 نوافذ»، الإيداع _ النجاح <99. 5%`.
تقليل نصف قطر الانفجار: التراجع التلقائي للبيان، وإعادة أوزان GSLB، وتعطيل حقن الصدع.
أمر التوقف: زر/نص واحد مع تسجيل الأسباب.

16) الثقافة والعمليات

الفوضى جزء من إيقاع SRE، وليست «متطرفة».
الإبلاغ الشفاف، التعرف على الضعف، الإجراءات التصحيحية.
التدريب عند الطلب، ومحاكاة الاتصالات مع العملاء/الشركاء.
الربط مع SLA/SLO والميزانيات: يجب أن تعزز الفوضى الموثوقية ولا تقوضها.

17)

تحول شركة Chaos Engineering «الأمل في التسعات» إلى استدامة يمكن إثباتها. صياغة حالة ثابتة، ووضع درابزين، وتحطيم صغير ومضبوط، ومراقبة SLO و SLI التجارية، وتسجيل التحسينات وأتمتة. ثم ستصبح الإخفاقات الحقيقية أحداثًا خاضعة للرقابة: RTO يمكن التنبؤ بها، وميزانية الأخطاء المحمية واستعداد الفريق للعمل دون ذعر.

Contact

اتصل بنا

تواصل معنا لأي أسئلة أو دعم.نحن دائمًا جاهزون لمساعدتكم!

بدء التكامل

البريد الإلكتروني — إلزامي. تيليغرام أو واتساب — اختياري.

اسمك اختياري
البريد الإلكتروني اختياري
الموضوع اختياري
الرسالة اختياري
Telegram اختياري
@
إذا ذكرت تيليغرام — سنرد عليك هناك أيضًا بالإضافة إلى البريد الإلكتروني.
WhatsApp اختياري
الصيغة: رمز الدولة + الرقم (مثال: +971XXXXXXXXX).

بالنقر على الزر، فإنك توافق على معالجة بياناتك.