text: +++
  title = "مبادئ هندسة الفوضى"
  date = 2020-01-28T16:25:57+02:00
  draft = false
  +++
  
  # مبادئ هندسة الفوضى
  آخر تحديث: مايو 2018
  
   هندسة الفوضى هي ضبط التجارب على نظام ما موَزع من أجل بناء الثقة في قدرة النظام على تحمل ظروف الإخراج المضطربة.
  
  قد أدى التطور في أنظمة البرامج الموزعة على نطاق واسع إلى تغيير لعبة هندسة البرمجيات. ونحن كصناعة لدينا قدرات سريعة في تبني ممارسات تزيد من مرونة التطوير وسرعة الانتشار. سؤال سريع يتبع هذه المزايا يكمن في مقدار الثقة التي يمكن أن نحظى بها في الأنظمة المعقدة التي نضعها في حيز الإخراج؟
  
  وبالرغم من أداء الخدمات الفردية في النظام الموَزع بصورة صحيحة، إلا أن الترابط بين هذه الخدمات قد يتسبب في نتائج غير متوقعة. والتي بدورها تتفاقم بسبب أحداث العالم الواقعيَة النادرة والمدمرة التي تؤثر على بيئات الإنتاج مما تجعل هذه النُظم الموزعة فوضوية بطبيعتها.
  
  نحن بحاجة إلى تحديد نقاط الضعف قبل ظهورها على هيئة سلوكيات غريبة في النظام. يمكن لنقاط ضعف النظام هذه أن تكون بإحدى الأشكال التالية: وضعيات احتياطية غير ملائمة عند عدم توفر الخدمة، إعادة محاولة نهوض الأوقات المستقطعة التي تم ضبطها على نحوٍ خاطئ، الانقطاع عندما تصبح المراحل النهائية مليئة بالاكتظاظ، الفشل بصورة مستمرة عند تعطل نقطة فشل واحدة، إلخ. علينا جمع ومعالجة أكثر نقاط الضعف ظهوراً بصورة استباقية وقبل أن تؤثر على المستهلكين لدينا في الإخراج. نحن بحاجة إلى طريقة لإدارة الفوضى الملازمة لهذه الأنظمة وعلينا الاستفادة من زيادة المرونة والسرعة والثقة في عمليات انتشار الإخراج لدينا على الرغم من التعقيد الذي تمثله..  
  
  ويقوم النهج التجريبي القائم على النظام بمعالجة الفوضى في النظم الموزعة على نطاق واسع ويبني الثقة في قدرة تلك الأنظمة على مقاومة الظروف الواقعية. نحن بدراية عميقة تتعلق بسلوك النظام الموَزع من خلال مراقبته أثناء القيام بتجربة مضبوطة. ونُسمي ذلك *Chaos Engineering ( بهندسة الفوضى)*.
  
  
  ## الفوضى في الممارسة
  
  ولمعالجة الأنظمة الموزعة على نطاق واسع والمشكوك فيها بصفة خاصة، يمكن النظر إلى هندسة الفوضى على أنها مُيسرة لتجارب الكشف عن نقاط ضعف النظام التي لم يتم تغطيتها. وتتبع هذه التجارب أربع خطوات:
  
  1. تبدأ بتعريف "الحالة الثابتة" كمخرجات نظام قابلة للقياس والتي تُشير إلى السلوك الطبيعي.
  2. الافتراض بأن هذه الحالة الثابتة ستستمر في كلاً من مجموعة التحكم والمجموعة التجريبية.
  3. إدخال متغيرات تعكس أحداث العالم الواقعية تماماً كالخوادم ومحركات الأقراص الثابتة التي تتعطل، أو اتصالات الشبكة المقطوعة، إلخ.
  4. محاولة دحض الفرضية من خلال البحث عن اختلاف في الحالة المستقرة بين مجموعة التحكم والمجموعة التجريبية. 
  
  وكلما زادت صعوبة تعطيل الحالة المستقرة، زادت الثقة في سلوك النظام. إذا تم الكشف عن وجود ضعف، لدينا الآن هدف للتغيير قبل ظهور هذا السلوك في النظام بصورة كبيرة.
  
  ## المبادئ المتقدمة
  
  تصف المبادئ التالية تطبيقاً مثالياً لهندسة الفوضى، حيث تم تطبيقها على عمليات التجريب الموضحة أعلاه. وترتبط الدرجة التي تتبعها هذه المبادئ بقوة بالثقة التي يمكن أن نتمتع بها في النظام الموَزع على نطاق واسع.
  
  ###  بناء فرضية حول سلوك الحالة المستقرة
  
  ركِز على مخرجات النظام القابلة للقياس بدلاً من خصائص النظام الداخلية. حيث تُعتبر قياسات هذه المخرجات خلال فترة زمنية قصيرة وكيلاً للوضع المستقر للنظام. ويمكن أن تكون إنتاجية النظام الإجمالية ومعدلات الأخطاء ونسب التأخر الزمني وما إلى ذلك مقاييس تُمثل سلوك الحالة المستقرة. ومن خلال التركيز على أنماط السلوك النظامية أثناء التجارب، فإن الفوضى تتحقق من عمل النظام بدلاً من محاولة اعتماد طريقة عمله. .
  
  ### اختلاف أحداث العالم الواقعية
  
  لقد وُجد أن متغيرات الفوضى تعكس أحداث العالم الواقعية. حيث أن تحديد أولويات الأحداث يتم إما عن طريق التأثير المحتمل أو التردد المُقدر. ضع في اعتبارك الأحداث التي تتوافق مع حالات فشل معدات الحاسوب مثل فشل الخوادم والبرامج كالاستجابات الغير صحيحة والأحداث الغير فاشلة مثل ارتفاع عدد الزيارات أو حالة تحسين المستوى. حيث أن أي حدث قادراً على تعطيل الحالة المستقرة يعتبر متغير محتمل في تجربة الفوضى.
  
  ###  توظيف التجارب في خط اخراج العمل
  
  تعمل الأنظمة بصورة مختلفة وذلك اعتماداً على أنماط البيئة وحركة المرور. نظراً لأن مسار الاستخدام قد يتغيَر في أي وقت. وبمحاكاة حركة المرور الحقيقية، فإنها ستكون الطريقة الوحيدة المعتمدة لتعيين المسار لضمان كلاً من صحة الطريقة التي يعمل بها النظام ومدى ملاءمته للنظام الحالي المستعمل. ويفضل بشدة أن يتم تجريب الفوضى مباشرةً على أوقات السير المزدحمة..
  
  ###  أتمتة التجارب لتشغيلها باستمرار
  
  يتطلب إجراء التجارب يدوياً توفر عدد كبير من العمالة الغير مستدامة في نهاية الأمر. توظف هندسة الفوضى الأتمتة في النظام وذلك من أجل التحكم في كلاً من التزامن والتحليل.
  
  ### السيطرة على الضرر
  
  حيث أن تجربة إخراج العمل لديه القدرة على التسبب بألم غير لازم. في حين أنه يجب السماح قليلاً لحدوث بعض التأثيرات السلبية القصيرة الأجل. ويقع ذلك على عاتق ومسؤولية مهندس الفوضى وذلك لضمان تقليل العواقب الناتجة عن التجارب إلى الحد الأدنى والسيطرة عليها.
  
  تعتبر هندسة الفوضى ممارسة فعَالة غيَرت فعلياً طريقة تصميم البرمجيات وهندستها في بعض العمليات الأوسع نطاقاً عبر العالم. وبينما تعالج بعض الممارسات السرعة والمرونة، فإن الفوضى تعالج على وجه التحديد منهجية الشك في هذه الأنظمة الموَزعة. وتوفر مبادئ الفوضى الثقة في الابتكار بسرعة على نطاق واسع وتزود العملاء بالتجارب العالية الأداء التي يستحقونها.
  
  انضم إلى المناقشة المستمرة لمبادئ الفوضى وتطبيقها على مجموعة جوجل [Chaos Community](https://groups.google.com/forum/#!forum/chaos-community).
  