توصيات لتصميم سلسلة توريد تطوير حمل العمل

ينطبق على توصية قائمة التحقق من التميز التشغيلي في Azure Well-Architected Framework:

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

يصف هذا الدليل توصيات تصميم سلسلة توريد تطوير حمل العمل التي تستند إلى البنية الأساسية لبرنامج ربط العمليات التجارية للتكامل المستمر والتسليم المستمر (CI/CD). تطوير سلسلة التوريد للتأكد من أن لديك طريقة يمكن التنبؤ بها وموحدة للحفاظ على حمل العمل الخاص بك. البنية الأساسية لبرنامج ربط العمليات التجارية CI/CD هي مظهر من مظاهر سلسلة التوريد، ولكن يجب أن يكون لديك سلسلة توريد واحدة. وقد يكون لديك العديد من المسارات التي تتبع نفس العمليات وتستخدم نفس الأدوات.

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

التعريف

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

استراتيجيات التصميم الرئيسية

ملاحظة

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

المبادئ الأساسية

يمكن أن تساعدك التوصيات التالية في تحديد المبادئ الأساسية لسلسلة التوريد الخاصة بك.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

عندما يكون ذلك ممكنا، استخدم الاختبار التلقائي لضمان الاتساق. قم بتضمين الأنواع التالية من الاختبارات في تصميم سلسلة التوريد الخاصة بك.

  • اختبار الوحدة: عادة ما يتم تشغيل اختبارات الوحدة كجزء من روتين التكامل المستمر. يجب أن تكون اختبارات الوحدة واسعة وسريعة. يجب أن تغطي بشكل مثالي 100 بالمائة من التعليمات البرمجية وتشغيلها في أقل من 30 ثانية.

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

    تطبيق اختبارات الوحدة على جميع أصول التعليمات البرمجية، بما في ذلك القوالب والبرامج النصية.

  • اختبار الدخان: تتحقق اختبارات الدخان من أنه يمكن الوقوف في حمل العمل في بيئة اختبار وتنفيذه كما هو متوقع. لا تتحقق اختبارات الدخان من إمكانية التشغيل التفاعلي للمكونات.

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

  • اختبار التكامل: تضمن اختبارات التكامل أن مكونات التطبيق تعمل بشكل فردي، ثم تحدد ما إذا كان يمكن للمكونات التفاعل مع بعضها البعض كما ينبغي.

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

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

    تستفيد بعض سيناريوهات الاختبار من عمليات التشغيل اليدوية. استخدم الاختبار اليدوي عندما تحتاج إلى إدخال عناصر التفاعل البشري في الاختبارات.

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

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

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

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

تسهيل Azure

Azure DevOps عبارة عن مجموعة من الخدمات التي تساعدك على بناء ممارسة تطوير تعاونية وفعالة ومتسقة.

توفر Azure Pipelines خدمات الإنشاء والإصدار لدعم CI/CD في تطبيقاتك.

تتكامل إجراءات GitHub ل Azure مع Azure لتبسيط عمليات التوزيع. استخدم GitHub Actions لأتمتة عمليات CI/CD. يمكنك إنشاء مهام سير عمل تقوم بإنشاء واختبار كل طلب سحب إلى المستودع الخاص بك، أو توزيع طلبات السحب المدمجة للإنتاج.

يمكنك استخدام Resource Manager Terraform وBicep وAzure لعمليات توزيع IaC. اعتمادا على متطلباتك وإلمام فريقك بالأدوات، يمكنك استخدام واحدة أو أكثر من هذه الأدوات لعمليات التوزيع وإدارة الموارد.

مثال

للحصول على مثال يوضح كيفية استخدام Azure Pipelines لإنشاء مسار CI/CD، راجع البنية الأساسية ل Azure Pipelines.

قائمة التحقق من التميز في العملية

راجع المجموعة الكاملة من التوصيات.