مبادئ تصميم الموثوقية

الانقطاعات والخلل هي مخاوف خطيرة لجميع أحمال العمل. يجب أن ينجو حمل العمل الموثوق به من هذه الأحداث وأن يستمر في توفير وظائفه المقصودة باستمرار. يجب أن يكون مرنا حتى يتمكن من اكتشاف حالات الفشل وتحملها والتعافي منها خلال فترة زمنية مقبولة. يجب أن تكون متاحة أيضا حتى يتمكن المستخدمون من الوصول إلى حمل العمل خلال الفترة الزمنية الموعودة على مستوى الجودة الموعودة.

ليس من الواقعي افتراض أن حالات الفشل لن تحدث، خاصة عندما يتم إنشاء حمل العمل للتشغيل على الأنظمة الموزعة. قد تفشل بعض المكونات بينما يستمر البعض الآخر في العمل. في مرحلة ما، قد تتأثر تجربة المستخدم، مما يعرض أهداف العمل للخطر.

يجب أن تحتوي بنيات حمل العمل على ضمانات الموثوقية في التعليمات البرمجية للتطبيق والبنية الأساسية والعمليات. يجب ألا تغير خيارات التصميم الهدف المحدد حسب متطلبات العمل. وينبغي اعتبار هذه التغييرات مقايضات هامة.

تهدف مبادئ التصميم إلى توفير إرشادات لجوانب الموثوقية التي يجب مراعاتها طوال دورة حياة التطوير. ابدأ بالنهج الموصى بها واضبط الفوائد لمجموعة من المتطلبات. بعد تعيين استراتيجيتك، قم بقيادة الإجراءات باستخدام قائمة التحقق من الموثوقية.

إذا لم تطبق هذه المبادئ على تصميمك، فلن يكون حمل العمل على الأرجح مستعدا لتوقع المشاكل في الإنتاج أو معالجتها. قد تكون النتيجة انقطاعات في الخدمة تؤدي إلى خسارة مالية. وفي حالة أحمال العمل الحرجة، قد يؤدي عدم تطبيق هذه المبادئ إلى تعريض السلامة للخطر.

تصميم لمتطلبات العمل

أيقونة الهدف جمع متطلبات العمل مع التركيز على الأداة المساعدة المقصودة لحمل العمل.

يجب أن تغطي المتطلبات تجربة المستخدم والبيانات وسير العمل والخصائص الفريدة لحمل العمل. يجب أن توضح نتيجة عملية المتطلبات بوضوح التوقعات. يجب أن تكون الأهداف قابلة للتحقيق والتفاوض مع الفريق، نظرا لاستثمار محدد. يجب توثيقها لدفع الخيارات والتطبيقات والعمليات التكنولوجية.

النهج الميزة
قياس النجاح من خلال تحديد أهداف على مؤشرات المكونات الفردية وتدفقات النظام والنظام ككل. هل تجعل هذه الأهداف تدفقات المستخدم أكثر موثوقية؟ تحدد المقاييس التوقعات. فهي تمكنك من فهم التعقيدات وتحديد ما إذا كانت تكاليف انتقال هذه التعقيدات من الخادم ضمن حد الاستثمار.

تشير القيم الهدف إلى حالة مثالية. يمكنك استخدام القيم كعتبات اختبار تساعدك على اكتشاف الانحرافات عن تلك الحالة والمدة التي تستغرقها العودة إلى الحالة الهدف.

يجب أن يكون لمتطلبات الامتثال أيضا نتائج يمكن التنبؤ بها للتدفقات داخل النطاق. تعطي الأولوية لهذه التدفقات الانتباه إلى المناطق الأكثر حساسية.
فهم التزامات النظام الأساسي. ضع في اعتبارك الحدود والحصص النسبية والمناطق وقيود السعة للخدمات. تختلف اتفاقيات مستوى الخدمة (SLAs) حسب الخدمة. لا تتم تغطية جميع الخدمات والميزات بالتساوي. لا تتوفر جميع الخدمات أو الميزات في جميع المناطق. معظم حدود موارد الاشتراك هي لكل منطقة. يمكن أن يساعدك الحصول على فهم جيد للتغطية والحدود في اكتشاف الانحراف وبناء آليات المرونة والاسترداد.
تحديد التبعيات وتأثيرها على المرونة. يساعدك تتبع البنية الأساسية والخدمات وواجهات برمجة التطبيقات والوظائف التابعة التي طورتها فرق أخرى أو جهات خارجية على تحديد ما إذا كان حمل العمل يمكن أن يعمل في غياب هذه التبعيات. كما يساعدك على فهم حالات الفشل المتتاليةوتحسين عمليات انتقال البيانات من الخادم.

يمكن للمطورين تنفيذ أنماط تصميم مرنة للتعامل مع حالات الفشل المحتملة عند استخدام خدمات خارجية قد تكون عرضة للفشل.

تصميم للمرونة

أيقونة الهدف يجب أن يستمر حمل العمل في العمل بوظائف كاملة أو منخفضة.

يجب أن تتوقع حدوث أعطال في المكون وانقطاع النظام الأساسي وتدهور الأداء ومحدودية توفر الموارد وأخطاء أخرى. بناء المرونة في النظام بحيث يكون متسامحا مع الأخطاء ويمكن أن يتدهور بأمان.

النهج الميزة
تمييز المكونات الموجودة على المسار الحرج عن تلك التي يمكن أن تعمل في حالة متدهورة. لا يلزم أن تكون جميع مكونات حمل العمل موثوقة بنفس القدر. يساعدك تحديد الأهمية على التصميم وفقا لأهمية كل مكون. لن تفرط في مرونة المكونات التي قد تؤدي إلى تدهور تجربة المستخدم قليلا، بدلا من المكونات التي يمكن أن تسبب مشاكل شاملة إذا فشلت.

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

ستتمكن أيضا من تقليل نصف قطر الانفجار.
أضف القدرة على توسيع نطاق المكونات الهامة (التطبيق والبنية الأساسية) من خلال النظر في قيود السعة للخدمات في المناطق المدعومة. سيكون حمل العمل قادرا على التعامل مع ارتفاعات وتقلبات السعة المتغيرة. هذه الإمكانية حاسمة عندما يكون هناك تحميل غير متوقع على النظام، مثل زيادة في الاستخدام الصالح. إذا تم تصميم حمل العمل لتوسيع نطاقه عبر مناطق متعددة، فيمكنه حتى التغلب على قيود سعة الموارد المؤقتة المحتملة أو المشكلات الأخرى التي تؤثر في منطقة واحدة.
بناء التكرار في الطبقات والمرونة على مستويات التطبيق المختلفة.

الهدف من التكرار في الأدوات المساعدة الفعلية والنسخ المتماثل الفوري للبيانات. تهدف أيضا إلى التكرار في الطبقة الوظيفية التي تغطي الخدمات والعمليات والموظفين.
يساعد التكرار على تقليل نقاط الفشل الفردية. على سبيل المثال، إذا كان هناك مكون أو انقطاع نطاقي أو إقليمي، فإن النشر المتكرر (في نشط-نشط أو نشط-سلبي) يسمح لك بتلبية أهداف وقت التشغيل.

تؤدي إضافة الوسطاء إلى منع التبعية المباشرة بين المكونات وتحسين التخزين المؤقت. كل من هذه الفوائد تقوية مرونة النظام.
التوفير الزائد للتخفيف فورا من الفشل الفردي للمثيلات المكررة والتخزين المؤقت مقابل استهلاك الموارد الهاربة. زيادة الاستثمار في التوفير الزائد يزيد من المرونة.

سيستمر النظام في العمل بأداة مساعدة كاملة أثناء فشل نشط حتى قبل أن تبدأ عمليات التحجيم في معالجة الفشل. وبالمثل، يمكنك تقليل مخاطر استهلاك موارد الهروب غير المتوقع الذي يطالب بالمخزن المؤقت المخطط له، والحصول على وقت فرز مهم، قبل حدوث أخطاء في النظام أو تغيير الحجم العدواني.

تصميم للاسترداد

أيقونة الهدف يجب أن يكون حمل العمل قادرا على توقع معظم حالات الفشل والتعافي منها، من جميع المقدار، مع الحد الأدنى من التعطيل لتجربة المستخدم وأهداف العمل.

حتى الأنظمة عالية المرونة تحتاج إلى نهج الاستعداد للكوارث، في كل من تصميم البنية وعمليات حمل العمل. في طبقة البيانات، يجب أن يكون لديك استراتيجيات يمكنها إصلاح حالة حمل العمل في حالة التلف.

النهج الميزة
لديك خطط استرداد منظمة ومختبرة وموثقة تتماشى مع أهداف الاسترداد المتفاوض عليها. يجب أن تغطي الخطط جميع المكونات بالإضافة إلى النظام ككل. تؤدي عملية محددة جيدا إلى استرداد سريع يمكن أن يمنع التأثير السلبي على الشؤون المالية وسمعة عملك. إجراء تدريبات استرداد منتظمة يختبر عملية استرداد مكونات النظام والبيانات وخطوات تجاوز الفشل وإرجاع الموارد لتجنب الارتباك عندما يكون الوقت وتكامل البيانات مقاييس رئيسية للنجاح.
تأكد من أنه يمكنك إصلاح بيانات جميع المكونات ذات الحالة داخل أهداف الاسترداد الخاصة بك. النسخ الاحتياطية ضرورية لإعادة النظام إلى حالة العمل باستخدام نقطة استرداد موثوق بها، مثل آخر حالة جيدة معروفة.

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

تصميم العمليات

أيقونة الهدف التحول إلى اليسار في العمليات لتوقع ظروف الفشل.

اختبار الفشل في وقت مبكر وغالبا في دورة حياة التطوير، وتحديد تأثير الأداء على الموثوقية. من أجل تحليل السبب الجذري والوفاة، تحتاج إلى رؤية مشتركة، عبر الفرق، لحالة التبعية والفشل المستمر. تعد الرؤى والتشخيصات والتنبيهات من الأنظمة التي يمكن ملاحظتها أمرا أساسيا لإدارة الحوادث الفعالة والتحسين المستمر.

النهج الميزة
إنشاء أنظمة يمكن ملاحظتها يمكنها ربط بيانات تتبع الاستخدام. تعد المراقبة والتشخيص عمليات حاسمة. إذا فشل شيء ما، فأنت بحاجة إلى معرفة أنه فشل، ومتى فشل، ولماذا فشل. تعد إمكانية المراقبة على مستوى المكون أمرا أساسيا، ولكن إمكانية المراقبة المجمعة للمكونات وتدفقات المستخدمين المرتبطة توفر رؤية شاملة للحالة الصحية. هذه البيانات مطلوبة لتمكين مهندسي موثوقية الموقع من تحديد أولويات جهودهم للمعالجة.
توقع الأعطال المحتملة والسلوك الشاذ. اجعل حالات فشل الموثوقية النشطة مرئية باستخدام تنبيهات ذات أولوية وقابلة للتنفيذ.

استثمر في عمليات وبنية أساسية موثوقة تؤدي إلى فرز أسرع.
يمكن إعلام مهندسي موثوقية الموقع على الفور حتى يتمكنوا من التخفيف من حوادث الموقع المباشر المستمرة والتخفيف بشكل استباقي من حالات الفشل المحتملة التي تحددها التنبيهات التنبؤية قبل أن تصبح حوادث حية.
محاكاة حالات الفشل وتشغيل الاختبارات في بيئات الإنتاج وما قبل الإنتاج. من المفيد مواجهة حالات فشل في الإنتاج حتى تتمكن من تعيين توقعات واقعية للاسترداد. يسمح لك هذا بإجراء خيارات التصميم التي تستجيب بأمان للفشل. كما أنه يمكنك من اختبار الحدود التي قمت بتعيينها لمقاييس الأعمال.
إنشاء مكونات مع مراعاة الأتمتة، وأتمتة قدر الإمكان. تقلل الأتمتة من احتمال حدوث خطأ بشري، مما يؤدي إلى تحقيق الاتساق في الاختبار والتوزيع والعمليات.
عامل في العمليات الروتينية وتأثيرها على استقرار النظام. قد يخضع حمل العمل لعمليات مستمرة، مثل مراجعات التطبيق وتدقيقات الأمان والتوافق وترقيات المكونات وعمليات النسخ الاحتياطي. يضمن التدقيق في هذه التغييرات استقرار النظام.
التعلم باستمرار من الحوادث في الإنتاج. استنادا إلى الحوادث، يمكنك تحديد التأثير والرقابة في التصميم والعمليات التي قد تمر دون أن يلاحظها ما قبل الإنتاج. في نهاية المطاف، ستتمكن من إجراء تحسينات استنادا إلى حوادث الحياة الحقيقية.

اجعل الأمر بسيطا

أيقونة الهدف تجنب الإفراط في هندسة تصميم البنية ورمز التطبيق والعمليات.

غالبا ما يكون ما تقوم بإزالته بدلا من ما تضيفه يؤدي إلى الحلول الأكثر موثوقية. تقلل البساطة من مساحة السطح للتحكم، ما يقلل من أوجه القصور والتكوينات الخاطئة المحتملة أو التفاعلات غير المتوقعة. من ناحية أخرى، يمكن أن يؤدي الإفراط في التبسيط إلى نقاط فشل واحدة. الحفاظ على نهج متوازن.

النهج الميزة
أضف المكونات إلى بنيتك فقط إذا كانت تساعدك على تحقيق قيم الأعمال المستهدفة. حافظ على المسار الحرج الهزيل. يمكن أن يؤدي التصميم لمتطلبات العمل إلى حل مباشر يسهل تنفيذه وإدارته. تجنب وجود عدد كبير جدا من المكونات الهامة، لأن كل واحد هو نقطة فشل كبيرة.
وضع معايير في تنفيذ التعليمات البرمجية ونشرها وعملياتها وتوثيقها. تحديد فرص فرض هذه المعايير باستخدام عمليات التحقق التلقائية. توفر المعايير الاتساق وتقليل الأخطاء البشرية. يمكن أن تساعدك نهج مثل اصطلاحات التسمية القياسية وأدلة نمط التعليمات البرمجية في الحفاظ على الجودة وجعل الأصول سهلة التحديد أثناء استكشاف الأخطاء وإصلاحها.
تقييم ما إذا كانت الأساليب النظرية تترجم إلى تصميم عملي ينطبق على حالات الاستخدام الخاصة بك. يمكن أن تؤدي التعليمات البرمجية للتطبيق الدقيقة جدا إلى ترابط غير ضروري وعمليات إضافية وصيانة صعبة.
تطوير ما يكفي من التعليمات البرمجية. ستتمكن من منع المشكلات الناتجة عن عمليات التنفيذ غير الفعالة، مثل استهلاك الموارد غير المتوقع، وفشل المستخدم أو تدفق البيانات، وأخطاء التعليمات البرمجية.

وعلى العكس من ذلك، يجب أن تؤدي مشكلات الموثوقية إلى مراجعات التعليمات البرمجية للتأكد من أن التعليمات البرمجية مرنة بما يكفي للتعامل مع المشكلات.
استفد من الميزات المقدمة من النظام الأساسي والأصول التي تم إنشاؤها مسبقا والتي يمكن أن تساعدك على تحقيق أهداف العمل بشكل فعال. يقلل هذا النهج من وقت التطوير. كما يمكنك من الاعتماد على الممارسات المجربة والمختبرة التي تم استخدامها مع أحمال العمل المماثلة.

الخطوات التالية