هندسة الفوضى
1) المبادئ الأساسية
الحالة الثابتة كفرضية أصلية. حدد المعيار بوضوح (على سبيل المثال: p95 <200 mm، معدل الخطأ <0. 3٪، نجاح التدفق الحرج> 99. 5%).
متغيرات معزولة. تغيير عامل واحد قدر الإمكان في كل مرة للربط السببي بين التأثير والتحسين.
درجة. نبدأ بسعات صغيرة في بيئة آمنة → نوسع التغطية والشدة.
حواجز الحماية. التوقف الصريح لشروط ميزانية SLO/التنبيه/الخطأ.
التكرار. يجب أن تكون التجربة قابلة للتكرار بشكل حاسم (النصوص/البيانات/IaC).
الأخلاق والسلامة. لا توجد بيانات شخصية حقيقية ومعاملات مالية في تجارب محفوفة بالمخاطر.
2) ما هي «الحالة الثابتة»
Steady State هي مجموعة من المقاييس التي يمكن ملاحظتها والتي تصف قيمة المستخدم وثوابت الأعمال:- p50/p95/p99 فترات انتظار النقاط النهائية الرئيسية.
- معدل النجاح وتحويل المسار الحرج.
- معدل الخطأ، المهلة، النسبة المئوية لطلبات «السقيفة» (مقطوعة عند التشبع).
- معدل الشفاء الذاتي (MTTR)، ومقاومة التراجع (بدون عواصف).
- ثوابت المجال: عدم وجود «سلبيات في الميزان»، بمجرد تنفيذ المدفوعات، واتساق أيام الإبلاغ، وما إلى ذلك.
3) كتالوج الحقن (ما نكسره)
الشبكة: الكمون، النفاخ، الخسارة/التكرار، محدودية عرض النطاق الترددي، فواصل TLS، رفرفة DNS.
الحسابات: الحمل الزائد لوحدة المعالجة المركزية، ضغط الذاكرة/GC، استنفاد الوصف، انحراف الساعة.
التخزين: ارتفاع P95 I/O، ENOSPC، فشل القائد/نسخة طبق الأصل، انقسام الدماغ، fsync باقٍ.
التبعيات: 5xx/429، «النجاح البطيء»، تدهور واجهات برمجة التطبيقات الخارجية، حد المعدل.
البيانات: تكرارات/أخطاء في الرسائل، خارج النظام، سجلات قذرة، تعارض الإصدار.
العمليات: إطلاق/تهيئة فاشلة، علامة مميزة مع خطأ، شهادة منتهية الصلاحية، تناوب المفتاح.
الأشخاص والعمليات: عدم توفر المسؤولين، تأخير التحديث اليدوي، كتيب غير صحيح.
4) تصميم التجربة (نموذج)
1. الفرضية: «عند + 300 مللي ثانية لخدمة العملات p99 من واجهة برمجة التطبيقات الرئيسية <450 مللي ثانية، يفتح كاسر، يتم إعطاء استجابة قديمة قبل ≤ 15 دقيقة».
2. الحقن: ملف تعريف الفشل (النوع/السعة/المدة) ومحتوى الهدف.
3. المقاييس/علامات السجل: تمييز الفوضى. experiment_id'، "المرحلة = حقن" التعافي ".
4. حواجز الحماية: أجهض عند «خطأ _ معدل> 2٪» أو p99> SLA × 2 لأكثر من 1 دقيقة.
5. النتائج/النواتج: قائمة بالملاحظات والأخطاء والتحسينات وخطة العمل وإعادة التشغيل.
5) القابلية للمراقبة: ما هو إلزامي
التعقب: طلب المسار عن طريق التبعيات ؛ مع التدهور.
مقاييس الموارد: وحدة المعالجة المركزية، كومة/GC، FD، قرص IOPS/lat، عرض نطاق الشبكة، عمق قائمة الانتظار.
مقاييس الأعمال التجارية: تحويل/نجاح العمليات، حصة المعاملات التعويضية.
سجلات الأحداث: قواطع الافتتاح/الإغلاق، إعادة التصوير وميزانيتها، تبديل قائد قاعدة البيانات.
لوحة التجربة: لوحة القيادة الحية مع عتبات حواجز الحماية و «زر أحمر» للإجهاض.
6) حواجز الحماية والأمن
التقنية: الحدود العليا لمعدل الخطأ/زمن الكمون، والانخفاض في حصة العمليات الناجحة، ونمو DLQ.
التنظيم: نافذة الوقت، عند الطلب، مبدأ «منطقة واحدة - تجربة واحدة».
البيانات/الامتثال: المواد التركيبية فقط أو مجموعات المواد غير الشخصية ؛ حظر الاختبارات التي تؤدي إلى انتهاكات تنظيمية.
التراجع: الإجراء الجاهز للتراجع/التعطيل لحركة تصريف العلم/البالوعة.
7) أنماط المرونة التي يجب أن تظهر
ميزانيات المهلة والتراجع (خالية من العواصف).
قاطع الدائرة مع انتعاش نصف مفتوح وأسي.
الحواجز: عزل مجموعات الحرجية (المدفوعات مقابل المحلل).
الضغط الخلفي وحد السعر: قطع منخفض الأولوية يمكن التنبؤ به.
ذاكرة التخزين المؤقت مع الاندماج والحماية من «عواصف الإحماء».
إفراغ الآثار الجانبية والملاحم مع الإجراءات التعويضية.
النصاب القانوني، والخداع، ومكافحة الإنتروبيا لاستعادة البيانات.
8) عينة سيناريوهات (رسومات)
8. 1 التبعية البطيئة (YAML)
yaml experiment: slow-downstream target: svc:api inject:
dependency:
name: currency mode: add_latency p95_ms: 300 duration: 10m guardrails:
error_rate: "< 1. 5%"
p99_latency: "< 450ms"
expectations:
breaker_open: true stale_data_served: "<= 15m"
8. 2 خسارة قائد DB
الحقن: توقف القائد/إعادة انتخابه قسراً.
الانتظار: تثبيط الكتابة المؤقت، قراءة النصاب، أمان WAL/Outbox، تكرار الاستعادة التلقائية، عدم الكتابة المزدوجة.
8. 3 ENOSPC على قرص السجل
الحقن: املأ القرص بنسبة 95-100٪.
الانتظار: تناوب جذوع الأشجار في حالات الطوارئ، وسلامة السجلات الحرجة، وتعطيل الميزات غير الحرجة، والتنبيه والمعالجة التلقائية.
8. 4 انفجار حركة المرور + التظليل
الحقن: × 3 RPS لمدة 5 دقائق على نقطة النهاية الساخنة.
الانتظار: إسقاط أولوية منخفضة، استقرار p95 «نواة»، بدون سلسلة إعادة.
9) التشغيل الآلي في CI/CD
الفوضى والدخان في المرحلة لكل إطلاق (حقن قصيرة بسعات آمنة).
يتم تشغيله ليلاً وفقًا لفهرس التجارب (خدمات المصفوفة × أنواع الإخفاقات).
البوابات: يتم حظر الإصدار إذا كان «المثابرة أقل من العتبة» (على سبيل المثال، النسبة المئوية للتراجعات الناجحة هي <95٪).
القطع الأثرية: تقرير، مسارات، وحدة المعالجة المركزية/مكومات اللحم، لقطات من المقاييس والتكوينات.
10) أيام اللعبة (أيام اللعبة)
تمارين الفريق المنتظمة مع سيناريوهات «حية»:- الأدوار: قائد التجربة، مراقب المقاييس، مشغل التراجع، ممثل الأعمال.
- السيناريوهات: تدهور المخبأ، فشل جزئي في المنطقة/المنطقة، «إطلاق سيئ»، عدم توفر مزود خارجي.
- النتائج: تم العثور على ثغرات في كتيب التشغيل، وتحسينات في التنبيهات، وتعديلات على مكاتب الإحصاء المحلية، وميزانيات إعادة الدفع.
11) فوضى البيانات والأحداث و ML
تدفقات البيانات: اختبارات للنسخ المزدوجة، والثغرات، والتأخيرات غير المطلوبة ؛ التحقق من صحة المستهلكين المخلصين واستراتيجيات DLQ.
المستودعات: تدهور المؤشر، التقسيم الساخن، تضارب القفل، التكرار تحت التأخر.
ML: ميزة التأخير، التراجع إلى النموذج الأساسي، تدهور جودة بيانات الإدخال (الانجراف) - يجب أن «يخفف النظام بهدوء» ولا يسقط.
12) الأنماط المضادة
الفوضى دون ملاحظة: أنت «أعمى»، والاستنتاجات تخمينية.
الحقن على الفور بدون مسرح وقضبان حراسة.
«تجربة واحدة كبيرة» على كل شيء في وقت واحد - ليس من الواضح ما الذي نجح بالضبط.
أعمال الفوضى العشوائية بدون فرضيات وإعادة الاختبار بعد الإصلاحات.
التركيز فقط على البنية التحتية - يتم نسيان الثوابت التجارية.
تجاهل الأشخاص/العمليات: التنبيهات، تحت الطلب، كتاب التشغيل - جزء من النظام.
13) نضج الممارسة (نموذج)
1. مخصص: حقنة واحدة محليًا.
2. فوضى المسرح: كتالوج السيناريوهات، التشغيل المتكرر، لوحات القيادة.
3. إطلاق الفوضى: فوضى دخان في كل إصدار، بوابات، تقارير.
4. فوضى الطعام مع القيود: انخفاض حركة المرور، وحواجز الحماية الصارمة، والتراجع الجاهز.
5. الاستقرار المستمر: التجارب الذاتية، إدارة SLO، التحسينات كتدفق عمل.
14) التكامل مع الممارسات المعمارية
اختبار المقاومة: تكمل تجارب الفوضى حقن الصدع وسيناريوهات التحلل.
اختبار الحمل: تكشف تجارب الحمل المشترك + الفشل عن سلاسل تعاقبية وعاصفة من التراجع.
السياسة بوصفها مدونة/RBAC/ABAC: تم تصميم حواجز الحماية وخطوات التراجع والحدود كسياسات.
الموافقة/إدارة الخصوصية: لا تسمح بالتجارب التي تنتهك وضع معالجة البيانات.
الهندسة المعمارية الجغرافية: التحقق من الفوضى في فشل المناطق وإلزام البيانات بالولايات القضائية.
15) وصفات صغيرة (كاذب)
كسر + تحلل
if breaker. open():
return serve_stale(cache. max_age=15m)
try:
res = call(dep, timeout=250ms)
return res except Timeout:
breaker. trip()
return serve_stale()
محدد + تظليل
if cpu. load() > 0. 85 or queue. depth() > HIGH:
if req. priority < HIGH: return 503_SHED limiter. acquire()
الآثار الجانبية الخفية
key = "payout:"+external_id if kv. exists(key): return kv. get(key)
res = side_effect()
kv. put(key, res, ttl=30d)
return res
16) قائمة مراجعة المهندس المعماري
1. تحديد الدولة الثابتة وحواجز الحماية ؟
2. هل يوجد دليل نصي (الشبكة/وحدة المعالجة المركزية/التخزين/التبعيات/البيانات/العمليات) ؟
3. هل تغطي إمكانية الملاحظة الموارد، وذيول الكمون، وثوابت الأعمال ؟
4. المهلات/التراجعات/القواطع/المحددات/الحواجز الممكنة والقابلة للتحديد ؟
5. إعداد كتيب التشغيل و «الزر الأحمر» ؟
6. هل هناك فوضى دخان في المسرح وتجارب ليلية ؟
7. هل هناك نوافذ وأدوار «آمنة» لأيام اللعبة ؟
8. التجارب قابلة للتكرار (IaC/scripts)، والنتائج متحققة ؟
9. يتم إصلاح التحسينات من خلال المهام، وإعادة الاختبار يتم ؟
10. البيانات وخطوط أنابيب ML مغطاة، وليس فقط HTTP ؟
خامسا - الاستنتاج
تحول شركة Chaos Engineering «الحوادث غير المتوقعة» إلى سيناريوهات يمكن التنبؤ بها. تعتبر فرضية المقاومة والحقن الخاضعة للرقابة وحواجز الحماية الصلبة وقابلية الملاحظة الغنية وإعادة الاختبار أدوات تقلل من مخاطر الإصدارات وتزيد من الثقة في المنصة. نتيجة لذلك، يفهم الفريق حدود النظام، ويكون قادرًا على التحلل بأناقة وإعادة الخدمة بسرعة إلى المستخدم، حتى في حالات الفشل.