الإعداد
ستقوم بإضافة تحسيناتك الخاصة إلى بنية موجودة تفي بمتطلبات الموثوقية العالية للمؤسسة. هنا، سنناقش سياق الخلفية الذي تحتاج إلى نجاحه في التدريبات.
سياق المشكلة
يجب أن تكون شركة Contoso Shoes جاهزة لإطلاق منتجاتها البارزة التالية، والتي من المتوقع أن تخلق زيادة كبيرة في نسبة استخدام الشبكة. في العامين الماضيين، حدثت عدة حوادث أدت إلى عدم اتصال الموقع بالإنترنت لمدة نصف يوم. لم يتم اختبار النظام بالكامل في بيئة التطوير/الاختبار، وتسللت بعض الأخطاء إلى الإنتاج. استغرق استكشاف الأخطاء وإصلاحها والمعالجة وقتا طويلا، لأن عوامل التشغيل لم تكن قادرة على تحديد الأسباب الجذرية بسرعة.
كانت هناك بعض التحديات عندما لا تتوفر مكونات معينة. تأثرت عمليات التوسيع على الحوسبة عندما تم تكوين Azure Key Vault بشكل خاطئ. كما لا توجد أي استراتيجيات للانقطاعات الإقليمية. في حادث وقع مؤخرا، سقطت منطقة غرب أوروبا بأكملها. ولأن حمل العمل كان يعمل فقط في تلك المنطقة، كان على الشركة أن تتحمل خسارة مالية حتى يتم نسخ المنطقة احتياطيا.
البنية الحالية
لإكمال هذا التحدي، تحتاج إلى فهم جيد للبنية الحالية ل Contoso Shoes. دعونا نركز على طبقة واجهة برمجة التطبيقات الخاصة بهم.
المكونات
يتم نشر جميع مكونات هذه البنية في منطقة واحدة.
يوفر SKU القياسي S2 لخطة Azure App Service النظام الأساسي للحساب الذي يستضيف التطبيق. تم تمكين التحجيم التلقائي. تستخدم بيئة التطوير Basic B1 SKU.
توفر Azure App Service النظام الأساسي للتطبيق الذي يقوم بتشغيل التعليمات البرمجية لواجهة برمجة التطبيقات في حاوية. يتم تمكين ميزة App Service Authentication للتخويل.
تتيح لك فتحات التوزيع تنظيم عملية توزيع ثم تبديلها بنشر الإنتاج. يتم استخدامها في الإنتاج فقط.
يخزن Azure Container Registry التعليمات البرمجية لواجهة برمجة التطبيقات الحاوية ويتم دفعها من خلال تدفقات التكامل المستمر/التسليم المستمر (CI/CD) التي يقوم فريق حمل العمل بإنشائها وإدارتها. يستخدم كل من بيئة الإنتاج وبيئة التطوير/الاختبار سجل الحاوية.
يخزن Azure Cosmos DB مع واجهة برمجة تطبيقات SQL جميع الحالات المتعلقة بعبء العمل. يحتوي حساب قاعدة بيانات Cosmos DB على قاعدة بيانات واحدة تحتوي على عدد قليل من الحاويات في نموذج معدل النقل المشترك. يستخدم حساب Azure Cosmos وضع السعة بلا خادم. هناك مثيل واحد للإنتاج ومثيل للتطوير/الاختبار.
يخزن Azure Key Vault البيانات السرية اللازمة لواجهة برمجة التطبيقات لإجراء استدعاء HTTP POST إلى واجهة برمجة تطبيقات خارجية تابعة لجهة خارجية كجزء من تدفق طلب واحد. يصل التطبيق إلى الأسرار من خلال مرجع Key Vault في تكوين تطبيق Azure App Service. هناك Key Vault واحد للإنتاج وواحد للتطوير/الاختبار.
يتم استخدام Azure Log Analytics كمتلقي موحد لتخزين السجلات والمقاييس لجميع إعدادات تشخيص Azure لجميع المكونات المستخدمة في الحل. هناك مساحة عمل واحدة للإنتاج وواحدة للتطوير/الاختبار.
يتم استخدام Azure Application Insights لالتقاط بيانات تتبع الاستخدام والسجلات من واجهة برمجة التطبيقات. يستخدم Application Insights الوضع المكتفي ذاتيا، وليس الكتابة إلى مساحة عمل مخصصة لتحليلات السجل. لا يشارك الإنتاج والتطوير/الاختبار مثيلا شائعا.
يتم استخدام Azure Pipelines ل CI/CD الذي ينشئ ويختبر ويوزع حمل العمل في بيئات ما قبل الإنتاج والإنتاج. يدير فريق حمل العمل البنية الأساسية لبرنامج ربط العمليات التجارية، والتي تدير أيضا جميع البنية الأساسية في حلها. Bicep هو اختيار التكنولوجيا للبنية الأساسية كتعليمية (IaC).
اختيارات التصميم
في قائمة المكونات، يتكون طابع التوزيع من خدمات تشارك في معالجة الطلب. وتشمل هذه الخدمات خدمات التطبيقات ورمز واجهة برمجة التطبيقات وقاعدة بيانات Cosmos. يتضمن الطابع أيضا مكونات غير وظيفية: Key Vault و Container Registry. يحتوي التطبيق على تبعية جهة خارجية على إطار عمل الأداء والمرونة. يتم استخدام الهويات المدارة من قبل النظام بين مكونات الطابع.
في الطابع، يتم تكوين App Services لتوسيع نطاقها تلقائيا استنادا إلى التحميل.
يتم استخدام بيئات منفصلة للإنتاج والتطوير/الاختبار. تستخدم بيئة الإنتاج وحدة SKU القياسية لخطة App Service. اتخذت الشركة هذا الخيار لتكون قادرة على تمهيد التطبيق إلى فتحة قبل توزيعه في الإنتاج. تستخدم بيئة التطوير/الاختبار وحدة SKU الأساسية لتحسين التكلفة. كلتا البيئتين لها مثيلاتها الخاصة من الخدمات. تشترك البيئات في سجل الحاويات فقط.
يتم تسليم التعليمات البرمجية لواجهة برمجة التطبيقات الحاوية في صورة حاوية واحدة يتم تشغيلها في App Service. تحتوي واجهة برمجة التطبيقات على نقاط نهاية HTTP متعددة تستخدمها الواجهات الأمامية المختلفة لكل من القراءات والكتابة. الواجهات الأمامية خارج نطاق هذه الوحدة النمطية، ولكنها في نطاق الصورة الكبيرة للحالة الحرجة للمهمة لهذا الموقف. تم وضع علامة على التعليمات البرمجية باستخدام Application Insights لالتقاط بعض بيانات تتبع الاستخدام الأساسية. يدير الفريق الذي طور هذه التعليمة البرمجية أيضا البنية الأساسية لبرنامج ربط العمليات التجارية CI/CD لصورة حاوية API وتدفقات CI/CD.
Tradeoffs
ومع ذلك، كما هو الحال مع كل شيء، هناك مفاضلات مع البنية الحالية. أعطت متطلبات العمل الأولوية لتحسين التكلفة على الموثوقية والعمليات. للحفاظ على حدود التكلفة، لم تتطور البنية. تقصر المكونات عند الاستفادة من قدرات الموثوقية التي يوفرها النظام الأساسي. على سبيل المثال، يمنع اختيار SKU للحساب حمل العمل من استخدام مناطق التوفر. بالنسبة إلى بيانات تتبع الاستخدام، يتم استخدام إصدار أقدم من Application Insights غير متكامل مع Log Analytics.
كما أن الوصول إلى حمل العمل منتشر بشكل مفرط. على سبيل المثال، دون أي تكامل شبكة ظاهرية، يمكن الوصول إلى جميع خدمات Azure مباشرة عبر الإنترنت العام.
عند تطوير الحل، استخدم فريق تطوير التطبيقات اشتراك Azure واحدا، حيث قام بتكوين dev/test والإنتاج في نفس الاشتراك لتسهيل الأدوات على فرق DevOps. ومع ذلك، لا يتم عزل موارد الإنتاج وموارد التطوير/الاختبار تماما. تتم مشاركة بعض الموارد بين البيئتين، على الرغم من أنها حصلت على اشتراك معزول عن بقية حلول Contoso Shoes.
أيضا، بيئة التطوير/الاختبار هي بيئة واحدة تتم مشاركتها عبر جميع أعضاء فريق التطوير و QA. كان الاختيار مبررا نظرا لحجم الفرق والتنسيق بينها لم يكن بحاجة إلى درجة أعلى من العزلة. مع تطور الفريق والحل، تسببت بيئة التطوير/الاختبار الفردية بشكل متزايد في تعقيد التكامل مع اصطدام دورات حياة مجرى العمل. كان الهزال وتأثيره على الموثوقية مكلفا.
مواصفات المشروع
تريد الشركة إضافة قدرات إلى بنية الحل الخاصة بها حتى تتمكن من التعامل مع الزيادة المتوقعة في الحمل. فيما يلي متطلبات العمل:
- بناء القدرة على تحمل حالات الفشل الإقليمية من خلال توسيع البنية إلى مناطق متعددة
- تحسين تجربة العملاء من خلال خدمة العملاء بشكل أسرع في منطقة أقرب جغرافيا إليهم
- التوافق مع مخطط Azure والاستفادة من أحدث ميزات الموثوقية التي تقدمها خدمات Azure
- التقاط المشكلات في وقت مبكر واكتشاف تأثيرها المتتالية في النظام عن طريق بناء نموذج صحي شامل
وهذه المتطلبات ليست سوى القائمة ذات الأولوية لخطط التحسين الخاصة بها. يدرك فريق التطبيق أنه يجب النظر في جميع مجالات التصميم لجعل موثوقية هذا الحل تصل إلى المعايير الحرجة للمهام. كن مطمئنا، لن يتوقف عن تحسين حله وعملياته بعد أن ساعدته في الجوانب التي تغطيها التمارين القادمة.
مرحبا بك في الفريق! تتطلع شركة Contoso Shoes إلى الاستماع إلى توصياتك.
الإعداد
في مشروع التحدي هذا، ستتولى دور المهندس المعماري الذي سيساعد Contoso Shoes على تحقيق نتائج الموثوقية الخاصة به، بدءا من العناصر ذات الأولوية في القسم السابق.
- نوصي باستخدام أداة الرسم التخطيطي للبنية لتصور البنية.
- لا تحتاج إلى اشتراك Azure لهذا التحدي إذا كنت مرتاحا للخدمات وميزاتها.