تصميم للمرونة
يجب أن يستمر حمل العمل في العمل بوظائف كاملة أو منخفضة. |
---|
يجب أن تتوقع حدوث أعطال في المكونات وانقطاع النظام الأساسي وتدهور الأداء وأخطاء أخرى. بناء المرونة في النظام بحيث تكون متسامحة مع الأخطاء ويمكن أن تتدهور بأمان.
مثال على السيناريو
شركة Contoso Air هي شركة طيران تجارية لديها قسم تطوير داخلي. تطبيق LOB الرئيسي هو حل الحجز الذي يسمح للعملاء بحجز رحلات الطيران مباشرة مع شركة Contoso Air. تم إنشاء التطبيق في Azure ويستخدم Azure App Service وCosmos DB وAzure Functions وAzure Logic Apps و ناقل خدمة Azure.
تحديد مخاطر الفشل
تحديد نقاط الفشل المحتملة في النظام، خاصة بالنسبة للمكونات الهامة، وتحديد التأثير على تدفقات المستخدم والنظام.
تحليل حالة الفشل، ونصف قطر الانفجار، وشدة الخطأ لكل نقطة فشل محتملة. يمكن أن تتراوح حالات الفشل وشدتها من سيناريوهات منخفضة التأثير نسبيا مثل الخسارة المؤقتة لعملية الواجهة الخلفية إلى الانقطاعات الكاملة الناتجة عن الكوارث. يساعدك إجراء هذا التحليل على تحديد تصميم قدرات معالجة الأخطاء على مستوى المكون.
تحدي Contoso
- يوفر تطبيق LOB العديد من الوظائف الرئيسية التي تتراوح بين التسويق والتجارة. تم تحديد تدفق مستخدم شراء التذاكر على أنه التدفق الأكثر أهمية. وقد قرر فريق حمل العمل أنه يجب تنفيذ المزيد من تدابير الموثوقية لضمان تحسين التدفق من أجل المرونة.
- يمتلك الفريق وقتا في الميزانية لإجراء تحسينات مثل فصل المكونات وإعادة تصميم التدفقات، ولكنه يريد التأكد من أنها تستخدم هذا الوقت للتركيز على تحسينات القيمة الأعلى.
تطبيق النهج والنتائج
- يحدد الفريق بوابة الدفع الخارجية كنقطة فشل محتملة. البوابة متوفرة بشكل كبير ولكن هناك احتمال للمستخدمين الذين يواجهون أخطاء عابرة عرضية ناتجة عن مشكلات في الشبكة أو اندفاعات من الطلبات العالية للغاية. قد ترفض البوابة بعض الطلبات عندما يتم تحميلها بشكل زائد عن طريق طلبات متزامنة متعددة يتم إرسالها.
- يحدد الفريق أنه يجب على المستخدمين إعادة إرسال الطلبات عندما ترفض البوابة طلباتهم الأولية، ما يتسبب في تجربة مستخدم سلبية.
تنفيذ آليات الحفاظ على الذات
بناء قدرات الحفاظ على الذات باستخدام أنماط التصميم بشكل صحيح وتقسيم التصميم لعزل الأخطاء.
من خلال بناء قدرات الحفاظ على الذات في النظام، ستتمكن من منع مشكلة من التأثير على مكونات انتقال البيانات من الخادم. سيتمكن النظام من التخفيف من حالات الفشل العابرة والدائمة واختناقات الأداء والمشاكل الأخرى التي قد تؤثر على الموثوقية. ستتمكن أيضا من تقليل نصف قطر الانفجار.
تحدي Contoso
- يريد الفريق تقليل مخاطر حالات الفشل العابرة التي تتسبب في رفض طلبات المستخدمين بواسطة بوابة الدفع. بسبب الطبيعة العابرة لبعض شروط الخطأ، هناك احتمال كبير أن ينجح نفس الطلب إذا تمت إعادة إرساله.
تطبيق النهج والنتائج
- يطور الفريق منطقا مخصصا في التدفق لإعادة محاولة المعاملة بعد تأخير قصير عند اكتشاف فشل يمكن إعادة المحاولة.
- سيتم تعديل تصميم الحل لدمج نمط إعادة المحاولة، مما يزيد قليلا من وقت الانتظار بين عمليات إعادة المحاولة حتى تتم معالجة الطلب بنجاح أو الوصول إلى الحد الأقصى لعدد حالات الفشل.
- يقرر الفريق أيضا فصل تفاعل المستخدم ووظيفة معالجة الدفع الخلفية لهذا التدفق باستخدام نهج يستند إلى الحدث مع ناقل خدمة Azure. عند حدوث حالات فشل غير قابلة للاسترداد أثناء معالجة الرسالة (بعد الحد الأقصى لعدد مرات إعادة المحاولة)، يتخلى معالج الواجهة الخلفية عن معالجة هذا الطلب، تاركا الرسالة في قائمة الانتظار بحيث يمكن إعادة معالجتها في وقت لاحق.
بناء التكرار والمرونة الشاملين
بناء التكرار في الطبقات والمرونة على مستويات التطبيق المختلفة.
هدف إلى التكرار في الأدوات المساعدة الفعلية والنسخ المتماثل الفوري للبيانات. يهدف أيضا إلى التكرار في الطبقة الوظيفية التي تغطي الخدمات والعمليات والموظفين. يساعد التكرار على تقليل نقاط الفشل الفردية. على سبيل المثال، إذا كان هناك انقطاع يؤثر على مكون واحد أو أكثر، أو منطقة توفر، أو منطقة بأكملها، فإن النشر المتكرر (النشط-النشط أو النشط-السلبي) يسمح لك بتلبية أهداف وقت التشغيل.
إضافة وسطاء يمنع التبعية المباشرة بين المكونات ويحسن التخزين المؤقت. كل من هذه الفوائد تقوية مرونة النظام.
تحدي Contoso
- أدى تنفيذ عمليات إعادة المحاولة وفصل مكالمات بوابة الدفع عن واجهة المستخدم باستخدام ناقل خدمة Microsoft Azure إلى زيادة موثوقية هذا التدفق بشكل كبير، ولكن لا يزال أصحاب المصلحة في الأعمال قلقين بشأن فقدان البيانات الذي قد يحدث بسبب فشل كارثي في المنطقة الأساسية.
تطبيق النهج والنتائج
- يقرر الفريق الترقية إلى المستوى المتميز لناقل خدمة Microsoft Azure. من خلال القيام بذلك، يمكنهم الاستفادة من وظائف دعم مناطق التوفر في تلك الطبقة. باستخدام هذه الوظيفة، يتم تخزين نسخ متعددة من البيانات عبر ثلاث مرافق منفصلة ماديا (مناطق التوفر)، وتحتوي الخدمة على احتياطيات كافية من السعة للتعامل على الفور مع الخسارة الكاملة الكارثية لمركز البيانات.
- بالإضافة إلى ذلك، يقوم الفريق بتكوين ناقل خدمة Azure التعافي من الكوارث الجغرافية لنسخ البيانات بشكل مستمر إلى منطقة ثانوية سيتم استخدامها في حالة الفشل الكامل غير المحتمل للمنطقة الأساسية.