استراتيجيات النشر الأزرق والأخضر في Azure Spring Cloud

تنطبق هذه المقالة على: ✔️ طبقة المؤسسة الأساسية ✔️/القياسية

توضح هذه المقالة دعم النشر الأزرق والأخضر في Azure Spring Cloud.

يسمح Azure Spring Cloud (المستوى القياسي والأعلى) بعمليتي نشر لكل تطبيق، يتلقى أحدهما فقط حركة مرور الإنتاج. يعرف هذا النمط عادة باسم النشر الأزرق والأخضر. يتيح دعم Azure Spring Cloud للنشر الأزرق والأخضر، إلى جانب خط أنابيب التسليم المستمر (CD) والاختبار الآلي الصارم، عمليات نشر التطبيقات الرشيقة بثقة عالية.

عمليات النشر بالتناوب

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

إليك كيفية عمل نهج عمليات النشر بالتناوب في الممارسة العملية:

لنفترض أن تطبيقك يحتوي على عمليتي نشر: deployment1 و deployment2. حاليا، يتم تعيينه كنشر الإنتاج، deployment1 ويتم تشغيل إصدار v3 من التطبيق.

هذا يجعل deployment2 نشر التدريج. وبالتالي ، عندما يكون خط أنابيب التسليم المستمر (CD) جاهزا للتشغيل ، فإنه ينشر الإصدار التالي من التطبيق ، الإصدار v4، على نشر deployment2التدريج .

Two deployments: deployment1 receives production traffic

بعد v4 بدء التشغيل deployment2، يمكنك إجراء اختبارات تلقائية ويدوية ضده من خلال نقطة نهاية اختبار خاصة لضمان v4 تلبية جميع التوقعات.

V4 is now deployed on deployment2 and undergoes testing

عندما يكون لديك ثقة في v4، يمكنك تعيين deployment2 نشر الإنتاج بحيث يتلقى كل حركة مرور الإنتاج. v3 ستظل قيد التشغيل deployment1 في حالة اكتشاف مشكلة حرجة تتطلب التراجع.

V4 on deployment2 now receives production traffic

الآن ، deployment1 هو نشر التدريج. لذلك يتم نشر التشغيل التالي لخط أنابيب النشر على deployment1.

V5 deployed on deployment1

يمكنك الآن الاختبار على deployment1نقطة نهاية الاختبار V5 الخاصة.

V5 tested on deployment1

أخيرا ، بعد v5 تلبية جميع توقعاتك ، يمكنك تعيين deployment1 نشر الإنتاج مرة أخرى ، بحيث v5 يتلقى كل حركة مرور الإنتاج.

V5 receives traffic on deployment1

مقايضات نهج النشر بالتناوب

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

النشر التدريجي المستمر

يظل النشر التدريجي قيد التشغيل دائما، وبالتالي يستهلك موارد مثيل Azure Spring Cloud. يؤدي ذلك إلى مضاعفة متطلبات الموارد لكل تطبيق على Azure Spring Cloud بشكل فعال.

شرط سباق الموافقة

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

The approval race condition

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

عمليات النشر المسماة

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

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

Deploying new version on a named deployment

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

New version receives production traffic named deployment

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

After a fallback period, deleting the previous deployment

مقايضات نهج عمليات النشر المسماة

يتمتع نهج عمليات النشر المسماة بالفوائد التالية:

  • يمنع شرط سباق الموافقة.
  • يقلل من استهلاك الموارد عن طريق حذف نشر التدريج عندما لا يكون قيد الاستخدام.

ومع ذلك ، هناك عيوب أيضا ، كما هو موضح في القسم التالي.

فشل خط أنابيب النشر

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

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

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