تمرين - إنشاء نموذج صحة التطبيق
تحتاج شركة Contoso Shoes إلى طريقة للكشف عن المشكلات وتشخيصها والتنبؤ بها عبر هذه البنية. تريد إنشاء نموذج صحة قابل للقياس من خلال الحالة الصحية المطبقة على تدفقات المستخدم والنظام. الهدف هو تحديد نقاط الفشل المحتملة قبل أن تتسبب في انقطاع التيار الكهربائي.
الحالة الحالية والمشكلة الحالية
حتى الآن، أضفت واجهة برمجة تطبيقات للتحقق من الصحة وقمت ببناء قدرات متعددة المناطق في بنيتك. ومع ذلك، لا توجد طريقة للحصول على نظرة ثاقبة على المخطط المعقد الذي يتضمن تدفقات المستخدم والنظام. يجب سد هذه الفجوة حتى يتمكن فريق SRE من تحديد المشكلات وحلها بسرعة.
في حادث حديث، لم يتمكن الفريق من رؤية التأثير المتتالي لقضية ناتجة عن مكون API يؤثر على تبعيات النظام الأساسي الخاص به. كان هناك وقت كبير قضى في استكشاف الأخطاء وإصلاحها لأنه لا يمكن رصد المكون غير السليم على الفور. وفي نهاية المطاف، أدى عدم الكفاءة هذا إلى أوقات تعطل أطول، مما تسبب في خسارة مالية للشركة.
المواصفات
تصميم نموذج صحي يوضح العلاقة بين جميع المكونات في البنية بما في ذلك مكونات التطبيق وتبعيات النظام الأساسي. عامل في العناصر الموجودة داخل تدفق الطلب بما في ذلك البوابة والحوسبة وقواعد البيانات والتخزين وذاكرة التخزين المؤقت وما إلى ذلك. قم أيضا بتضمين المكونات الموجودة عادة خارج تدفق الطلب. على سبيل المثال، البيانات الاصطناعية لمبادرة الحاوية المفتوحة (OCI) والمتاجر السرية وخدمات التكوين وغيرها. يجب تكوين جميع خدمات Azure لإرسال البيانات التشخيصية.
أضف متلقي بيانات موحدا في البنية لجمع البيانات من مصادر مختلفة.
تحديد حالة صحية شاملة استنادا إلى السجلات والمقاييس التاريخية المجمعة. تمثيل الحالة في إحدى الحالات الصحية الثلاث: غير صحية ومتدهورة وصحية.
تصور الحالة الصحية لكافة المكونات في التسلسل الهرمي الذي يمثل جميع التدفقات.
النهج المُستحسن
للبدء في تصميمك، نوصي باتباع الخطوات التالية:
هام
النمذجة الصحية هي ممارسة شاملة. يهدف النهج في هذا القسم إلى مساعدتك على البدء. كن مكثفا في تطبيق النموذج على جميع التدفقات الوظيفية وغير الوظيفية في تصميم المهام الحرجة للحصول على نظرة شاملة للنظام.
1-بدء نمذجة الصحة
هذا التمرين نظري. نمذجة الصحة في نشاط تصميم من أعلى لأسفل ستحتاج فيه إلى قائمة شاملة بالمكونات المستخدمة في البنية. يجب أن تتضمن هذه القائمة جميع مكونات التطبيق وخدمات Azure.
ضع هذه المكونات في رسم بياني للتبعية يعرض طريقة عرض هرمية للحل. تحتوي الطبقة العليا على تدفقات المستخدم التي تتعقب الطلب من المستخدم النهائي إلى موقع الويب، وتتدفق على مستوى واجهة برمجة تطبيقات التطبيق. تحتوي الطبقة السفلية على تدفقات النظام من خدمات Azure. قم أيضا بتعيين التبعيات بين موارد Azure.
يجب أن يبدو الرسم البياني الخاص بك كما يلي:
تحقق من تقدمك: صحة التطبيق متعدد الطبقات
2- تحديد درجات السلامة
لكل مكون، اجمع المقاييس والحدود القياسية ثم حدد القيمة التي يجب اعتبار المكون عندها سليما ومتدهورا وغير صحي. وينبغي أن يتأثر هذا القرار بالأداء المتوقع ومتطلبات الأعمال غير الوظيفية. تصنيف مقاييسك على النحو التالي:
مقاييس التطبيق: نقاط البيانات من التعليمات البرمجية للتطبيق، مثل عدد الاستثناءات.
مقاييس الخدمة: نقاط البيانات من خدمات Azure، مثل وحدات معاملات قاعدة البيانات (DTUs) قيد الاستخدام.
مقاييس الحل: نقاط بيانات على مستوى الحل، مثل وقت المعالجة الشاملة للطلب.
فيما يلي مثال لخدمات تطبيقات Azure:
خدمات التطبيق | حالة السلامة |
---|---|
وقت < الاستجابة 200 مللي ثانية أخطاء < خادم HTTP 2 |
|
وقت < الاستجابة 500 مللي ثانية أخطاء < خادم HTTP 2 |
|
وقت > الاستجابة 500 مللي ثانية أخطاء > خادم HTTP 2 |
|
3- تحديد حالة صحية شاملة
لكل تدفق مستخدم ونظام، حدد الحالة الإجمالية. ستحتاج إلى تجميع الحالة الصحية للمكونات الفردية التي تشارك في هذا التدفق.
لنفترض أن تدفق النظام يتكون من مكون تطبيق وخطة Azure App Service وخدمات التطبيقات.
واجهة برمجة التطبيقات (API) | خطة App Service | خدمات التطبيق | حالة السلامة |
---|---|---|---|
الحد الأقصى لزمن الانتقال < 30 مللي ثانية | CPU ٪ < 70٪ طول < قائمة انتظار HTTP 5 |
وقت < الاستجابة 200 مللي ثانية أخطاء < خادم HTTP 2 |
|
الحد الأقصى لزمن الانتقال < 30 مللي ثانية | وحدة المعالجة المركزية ٪ < 90٪ طول < قائمة انتظار HTTP 5 |
وقت < الاستجابة 500 مللي ثانية أخطاء < خادم HTTP 2 |
|
الحد الأقصى لزمن الانتقال > 30 مللي ثانية | وحدة المعالجة المركزية ٪ > 90٪ طول > قائمة انتظار HTTP 5 |
وقت > الاستجابة 500 مللي ثانية أخطاء > خادم HTTP 2 |
|
يجب تمثيل درجة السلامة لتدفق المستخدم بأقل درجة عبر جميع المكونات المعينة. بالنسبة لتدفقات النظام، قم بتطبيق الأوزان المناسبة استنادا إلى أهمية الأعمال. بين التدفقين، يجب إعطاء الأولوية لتدفقات المستخدمين المهمة ماليا أو التي تواجه العملاء.
تحقق من تقدمك: مثال - نموذج صحة الطبقات
4- جمع بيانات المراقبة
ستحتاج إلى متلقي بيانات موحد في كل منطقة تجمع السجلات والمقاييس لجميع خدمات التطبيقات والنظام الأساسي المنشورة كجزء من الطابع الإقليمي. ستحتاج إلى متلقي آخر لتخزين المقاييس المنبعثة من الموارد العالمية، مثل Azure Front Door وCosmos DB.
خيارات التكنولوجيا
- Azure Application Insights: يستخدم لجمع جميع بيانات تتبع الاستخدام للتطبيق.
- سجلات Azure Monitor: يجمع البيانات المرسلة بواسطة Application insights ومقاييس النظام الأساسي لخدمات Azure.
- Azure Log Analytics: يستخدم كأداة مركزية لتحليل السجلات والمقاييس من جميع مكونات التطبيق والبنية الأساسية.
تحقق من تقدمك: متلقي البيانات الموحد للتحليل المترابط
5-إعداد استعلامات لمراقبة البيانات
Kusto Query Language (KQL) متكاملة جيدا مع Log Analytics. تنفيذ استعلامات KQL المخصصة كوظائف لاسترداد البيانات من Azure Monitor.
قم بتخزين الاستعلامات المخصصة في مستودع التعليمات البرمجية بحيث يتم استيرادها وتطبيقها تلقائيا كجزء من مسارات التكامل/التسليم المستمر (CI/CD).
6-تصور الحالة الصحية
يمكنك تصور الرسم البياني للتبعية مع درجات الصحة مع تمثيل إشارة مرور. استخدم أدوات مثل لوحات معلومات Azure أو مصنفات المراقبة أو Grafana. إليك مثال:
تحقق من تقدمك: المرئيات
7-إعداد تنبيهات حول تغييرات الحالة
يجب عليك استخدام لوحات المعلومات مع التنبيهات لرفع الانتباه الفوري للمشكلات.
إذا تغيرت الحالة الصحية لمكون إلى متدهور أو غير صحي، يجب إعلام المشغل على الفور. تعيين التنبيهات في العقدة الجذر، لأن أي تغيير في هذه العقدة يشير إلى حالة غير صحية في تدفقات المستخدم الأساسي أو الموارد.
التحقق من تقدمك: التنبيه
راجع عملك
شاهد هذا العرض التوضيحي حول المراقبة والنمذجة الصحية. هل قمت بتغطية جميع الجوانب في تصميمك؟
- هل لديك متلقي بيانات موحد للتحليل المترابط؟
- هل قمت بإدراج سجلات التطبيقات ومقاييس النظام الأساسي ونقاط بيانات الحل؟
- هل قمت بإعداد لوحات المعلومات لتصور الحالة الصحية لجميع المكونات؟
- هل تفكر في نقاط الفشل في كل خدمة (أو جزء من تلك الخدمة) التي قد تسبب انقطاعا أو تمنعك من التحجيم والنشر والمراقبة؟
- هل تفكر في حزم الاستعلام لالتقاط الاستعلامات الرئيسية التي من شأنها أن تساعد في فرز المشكلات بشكل أسرع؟
- هل كانت واجهة برمجة تطبيقات التحقق من الصحة مفيدة في هذا النموذج؟ هل تحتاج إلى تغيير واجهة برمجة التطبيقات هذه لتناسب النموذج الصحي بشكل أفضل؟