بيئة النشر
في مجال نشر البرمجيات ، تُعرَّف البيئة أو الطبقة بأنها نظام حاسوبي أو مجموعة أنظمة يتم فيها نشر برنامج حاسوبي أو مكون برمجي وتشغيله. في الحالات البسيطة، مثل تطوير برنامج وتشغيله مباشرةً على نفس الجهاز، قد تكون هناك بيئة واحدة، ولكن في الاستخدام الصناعي، يتم فصل بيئة التطوير (حيث تُجرى التغييرات مبدئيًا) عن بيئة الإنتاج (التي يستخدمها المستخدمون النهائيون)، وغالبًا ما تتخللها عدة مراحل. تتيح عملية إدارة الإصدارات المنظمة هذه النشر المرحلي (التوزيع)، والاختبار، والتراجع في حال حدوث مشاكل.
قد تختلف بيئات التطوير اختلافًا كبيرًا في الحجم: فبيئة التطوير عادةً ما تكون محطة عمل فردية للمطور، بينما قد تكون بيئة الإنتاج شبكة من العديد من الأجهزة الموزعة جغرافيًا في مراكز البيانات ، أو أجهزة افتراضية في الحوسبة السحابية . ويمكن نشر التعليمات البرمجية والبيانات والتكوين بشكل متوازٍ، ولا يلزم ربطها بالطبقة المقابلة - على سبيل المثال، قد تتصل التعليمات البرمجية لما قبل الإنتاج بقاعدة بيانات الإنتاج.
الهندسة المعمارية
تختلف بنى النشر اختلافًا كبيرًا، ولكن بشكل عام، تبدأ المستويات ببيئة التطوير (DEV) وتنتهي ببيئة الإنتاج (PROD). من البنى الشائعة ذات الأربع مستويات: التطوير، والاختبار، والنمذجة، والإنتاج (DEV، TEST، MODL، PROD)، حيث يتم نشر البرمجيات في كل مستوى بالترتيب. تشمل البيئات الشائعة الأخرى: مراقبة الجودة (QC) لاختبار القبول ؛ وبيئة الاختبار أو البيئة التجريبية (EXP) للتجارب التي لا يُراد لها الانتقال إلى بيئة الإنتاج؛ وبيئة استعادة البيانات في حالات الكوارث، لتوفير حل احتياطي فوري في حالة حدوث مشاكل في بيئة الإنتاج. ومن البنى الشائعة الأخرى: التطوير، والاختبار، والقبول، والإنتاج (DTAP).
تُعد هذه اللغة مناسبة بشكل خاص لبرامج الخادم، حيث تعمل الخوادم في مركز بيانات بعيد؛ بالنسبة للتعليمات البرمجية التي تعمل على جهاز المستخدم النهائي ، مثل التطبيقات (apps) أو العملاء، يمكن للمرء أن يشير إلى بيئة المستخدم (USER) أو البيئة المحلية (LOCAL) بدلاً من ذلك.
تختلف التعريفات والحدود الدقيقة بين بيئات التطوير؛ فقد تُعتبر بيئة الاختبار جزءًا من بيئة التطوير، وبيئة القبول جزءًا من بيئة الاختبار، أو جزءًا من بيئة الاختبار، أو منفصلة عنها، وهكذا. يتم التقدم عبر المستويات الرئيسية بالتسلسل، حيث تُنشر الإصدارات الجديدة ( تُطرح أو تُدفع ) إلى كل مستوى على حدة. [ 1 ] [ 2 ] أما بيئتا التجريب والاسترداد، إن وُجدتا، فتقعان خارج هذا التسلسل؛ فالإصدارات التجريبية نهائية، بينما عادةً ما تكون بيئة الاسترداد نسخة قديمة أو مكررة من بيئة الإنتاج، تُنشر بعد بيئة الإنتاج. في حال حدوث مشاكل، يمكن الرجوع إلى الإصدار القديم، وذلك ببساطة عن طريق دفع الإصدار القديم كما لو كان إصدارًا جديدًا. تُعد الخطوة الأخيرة، وهي النشر إلى بيئة الإنتاج ("الدفع إلى بيئة الإنتاج")، الأكثر حساسية، حيث أن أي مشاكل تؤدي إلى تأثير فوري على المستخدمين. ولذلك، غالبًا ما تُعالج هذه الخطوة بشكل مختلف، على الأقل من خلال مراقبتها بعناية أكبر، وفي بعض الحالات يكون النشر على مراحل أو يتطلب فقط تفعيل خيار يسمح بالرجوع السريع. من الأفضل تجنب استخدام مصطلح مثل "ضمان الجودة" (QA)؛ فضمان الجودة لا يعني اختبار البرمجيات . الاختبار مهم، لكنه يختلف عن ضمان الجودة.
أحيانًا يتم النشر خارج هذه العملية المعتادة، وذلك أساسًا لتوفير تغييرات عاجلة أو طفيفة نسبيًا، دون الحاجة إلى إصدار كامل. وقد يتضمن ذلك رقعة واحدة، أو حزمة خدمة كبيرة ، أو إصلاحًا عاجلًا صغيرًا .
يمكن أن تكون بيئات التطوير بأحجام مختلفة للغاية: فبيئة التطوير عادةً ما تكون محطة عمل لمطور فردي (على الرغم من أنه قد يكون هناك الآلاف من المطورين)، بينما قد تكون بيئة الإنتاج عبارة عن العديد من الأجهزة الموزعة جغرافيًا؛ وقد تكون بيئات الاختبار ومراقبة الجودة صغيرة أو كبيرة، اعتمادًا على الموارد المخصصة لها، ويمكن أن تتراوح بيئة الاختبار من جهاز واحد (على غرار بيئة الاختبار التجريبية) إلى نسخة طبق الأصل من بيئة الإنتاج.
البيئات
يصف الجدول أدناه قائمة مفصلة بالمستويات .
| اسم البيئة / المستوى | وصف |
|---|---|
| محلي | مكتب/محطة عمل المطور |
| التطوير / الجذع | خادم التطوير يعمل كبيئة اختبار حيث يمكن للمطور إجراء اختبارات الوحدة |
| اندماج | هدف بناء التكامل المستمر ، أو لاختبار المطورين للآثار الجانبية |
| الاختبار / فحص الجودة / مراقبة الجودة / القبول الداخلي | بيئة اختبار واجهة المستخدم. يضمن فريق مراقبة الجودة عدم تأثير الكود الجديد على الوظائف الحالية، ويختبر الوظائف الرئيسية للنظام بعد نشر الكود الجديد في بيئة الاختبار. |
| مرحلة الإعداد / المسرح / النموذج / ما قبل الإنتاج / قبول العميل الخارجي / العرض التوضيحي | مرآة بيئة الإنتاج |
| إنتاج / مباشر | يخدم المستخدمين النهائيين/العملاء |
تطوير
بيئة التطوير (dev) هي البيئة التي تُجرى فيها تعديلات البرمجيات، وهي في الغالب محطة عمل المطور. وتختلف هذه البيئة عن بيئة الهدف النهائية في عدة جوانب؛ فقد لا يكون الهدف جهاز كمبيوتر مكتبيًا (بل قد يكون هاتفًا ذكيًا، أو نظامًا مضمنًا ، أو جهازًا بدون شاشة في مركز بيانات، وما إلى ذلك). وحتى لو كانت بيئة التطوير متشابهة في جوانب أخرى، فإن بيئة المطور ستتضمن أدوات تطوير مثل المترجم ، وبيئة التطوير المتكاملة، وإصدارات مختلفة أو إضافية من المكتبات وبرامج الدعم، وغيرها، وهي أدوات غير موجودة في بيئة المستخدم.
في سياق التحكم في المراجعات ، وخاصةً مع وجود مطورين متعددين، تُوضَع فروق أدق: يمتلك كل مطور نسخة عمل من شفرة المصدر على جهازه، ويتم إرسال التغييرات إلى المستودع، وتُضاف إما إلى الفرع الرئيسي أو إلى فرع فرعي، وذلك حسب منهجية التطوير. يُشار إلى البيئة على محطة العمل الفردية، حيث تُجرى التغييرات وتُجرَّب، بالبيئة المحلية أو بيئة الاختبار . يُعد بناء نسخة المستودع من شفرة المصدر في بيئة نظيفة خطوة منفصلة، وهي جزء من التكامل (دمج التغييرات المتباينة)، ويمكن تسمية هذه البيئة ببيئة التكامل أو بيئة التطوير ؛ في التكامل المستمر ، يتم ذلك بشكل متكرر، حتى مع كل مراجعة. يتوافق مفهوم "إضافة تغيير إلى المستودع" على مستوى شفرة المصدر، متبوعًا ببناء الفرع الرئيسي أو الفرع الفرعي، مع دفع التغييرات من البيئة المحلية (بيئة المطور الفردية) إلى بيئة التكامل (البناء النظيف) للإصدار. يعني الإصدار السيئ في هذه المرحلة أن التغيير قد أدى إلى تعطل عملية البناء، ويتوافق التراجع عن الإصدار إما مع التراجع عن جميع التغييرات من تلك النقطة فصاعدًا، أو التراجع عن التغيير المعطل فقط، إن أمكن.
الاختبار
تهدف بيئة الاختبار إلى تمكين المختبرين البشريين من اختبار التعليمات البرمجية الجديدة والمعدلة باستخدام عمليات فحص آلية أو تقنيات يدوية. بعد أن يقبل المطور التعليمات البرمجية الجديدة والتكوينات من خلال اختبار الوحدات في بيئة التطوير، تُنقل العناصر إلى بيئة اختبار واحدة أو أكثر. [ 3 ] في حال فشل الاختبار، تستطيع بيئة الاختبار إزالة التعليمات البرمجية المعيبة من منصات الاختبار، والتواصل مع المطور المسؤول، وتوفير سجلات مفصلة للاختبار والنتائج. إذا اجتازت جميع الاختبارات بنجاح، تستطيع بيئة الاختبار أو إطار عمل التكامل المستمر الذي يتحكم في الاختبارات ترقية التعليمات البرمجية تلقائيًا إلى بيئة النشر التالية.
تتطلب أنواع الاختبارات المختلفة بيئات اختبار متنوعة، بعضها أو كلها يمكن محاكاتها افتراضياً [ 4 ] لإجراء اختبارات سريعة ومتوازية. على سبيل المثال، قد تُجرى اختبارات واجهة المستخدم الآلية [ 5 ] عبر عدة أنظمة تشغيل وشاشات افتراضية (حقيقية أو افتراضية). قد تتطلب اختبارات الأداء تكوينًا أساسيًا موحدًا للأجهزة المادية، بحيث يمكن مقارنة نتائج اختبار الأداء بمرور الوقت. قد تعتمد اختبارات التوافر أو المتانة على محاكيات الأعطال في الأجهزة والشبكات الافتراضية.
قد تكون الاختبارات متسلسلة (واحدة تلو الأخرى) أو متوازية (بعضها أو كلها في آن واحد) حسب مدى تطور بيئة الاختبار. يتمثل أحد الأهداف الرئيسية لمنهجيات تطوير البرمجيات الرشيقة وغيرها من ممارسات تطوير البرمجيات عالية الإنتاجية في تقليل الوقت المستغرق من تصميم البرمجيات أو تحديد مواصفاتها إلى تسليمها في بيئة الإنتاج. [ 6 ] تُعد بيئات الاختبار المؤتمتة والمتوازية بدرجة عالية من العوامل المهمة في تسريع عملية تطوير البرمجيات.
تجهيز المسرح
بيئة ما قبل الإنتاج هي بيئة اختبار تحاكي بيئة الإنتاج بدقة. [ 7 ] وهي تسعى إلى محاكاة بيئة الإنتاج الفعلية بأكبر قدر ممكن من الدقة، وقد تتصل بخدمات وبيانات إنتاجية أخرى، مثل قواعد البيانات. على سبيل المثال، تُشغَّل الخوادم على أجهزة بعيدة، بدلاً من تشغيلها محليًا (كما هو الحال على محطة عمل المطور أثناء التطوير، أو على جهاز اختبار واحد أثناء الاختبار)، مما يختبر تأثيرات الشبكة على النظام.
يُستخدم بيئة الاختبار بشكل أساسي لاختبار جميع برامج وإجراءات التثبيت والتكوين والترحيل قبل تطبيقها على بيئة الإنتاج. وهذا يضمن إتمام جميع الترقيات الرئيسية والثانوية لبيئة الإنتاج بشكل موثوق، دون أخطاء، وفي أقل وقت ممكن.
ومن الاستخدامات المهمة الأخرى للتجهيز اختبار الأداء ، وخاصة اختبار التحميل ، حيث أن هذا الاختبار غالباً ما يكون حساساً للبيئة.
تستخدم بعض المؤسسات أيضًا بيئة الاختبار لمعاينة الميزات الجديدة لعملاء محددين أو للتحقق من صحة عمليات التكامل مع الإصدارات الحية من التبعيات الخارجية.
إنتاج
تُعرف بيئة الإنتاج أيضًا باسم بيئة الإنتاج المباشر ، وخاصة بالنسبة للخوادم، لأنها البيئة التي يتفاعل معها المستخدمون بشكل مباشر.
يُعدّ نشر النظام في بيئة الإنتاج الخطوة الأكثر حساسية؛ ويمكن إجراؤها إما بنشر الكود الجديد مباشرةً (باستبدال الكود القديم، بحيث لا توجد سوى نسخة واحدة في كل مرة)، أو بنشر تغيير في الإعدادات. ويمكن أن يتخذ هذا أشكالًا مختلفة: نشر تثبيت متوازٍ لإصدار جديد من الكود، والتبديل بينهما بتغيير في الإعدادات؛ أو نشر إصدار جديد من الكود مع السلوك القديم وعلامة ميزة ، والتبديل إلى السلوك الجديد بتغيير في الإعدادات يُفعّل العلامة؛ أو بنشر خوادم منفصلة (أحدها يُشغّل الكود القديم، والآخر يُشغّل الجديد) وإعادة توجيه حركة البيانات من القديم إلى الجديد بتغيير في الإعدادات على مستوى توجيه حركة البيانات. ويمكن تنفيذ كل هذه الخطوات دفعة واحدة أو تدريجيًا على مراحل.
يتطلب نشر إصدار جديد عمومًا إعادة التشغيل، إلا إذا كان التبديل السريع ممكنًا، وبالتالي يتطلب إما انقطاعًا في الخدمة (وهو أمر شائع بالنسبة لبرامج المستخدم، حيث تتم إعادة تشغيل التطبيقات)، أو التكرار - إما إعادة تشغيل المثيلات ببطء خلف موازن التحميل، أو بدء تشغيل خوادم جديدة مسبقًا ثم ببساطة إعادة توجيه حركة المرور إلى الخوادم الجديدة.
عند نشر إصدار جديد في بيئة الإنتاج، بدلاً من نشره فوراً على جميع النسخ أو المستخدمين، قد يُنشر أولاً على نسخة واحدة أو مجموعة من المستخدمين، ثم يُنشر لاحقاً على جميع النسخ أو يُنشر تدريجياً على مراحل، وذلك لاكتشاف أي مشاكل طارئة. يشبه هذا عملية الاختبار التجريبي، إلا أنه يُنفذ فعلياً في بيئة الإنتاج، ويُشار إليه باسم " الإصدار التجريبي " تشبيهاً بصناعة تعدين الفحم. يُضيف هذا تعقيداً نظراً لتشغيل إصدارات متعددة في وقت واحد، ولذلك عادةً ما ينتهي بسرعة لتجنب مشاكل التوافق.
تكامل الأطر
تُعدّ متغيرات بيئة التطوير والتجريب والإنتاج معروفة وموثقة في ASP.NET Core . وبناءً على المتغير المُعرّف، يتم تنفيذ تعليمات برمجية مختلفة وعرض محتوى مختلف، كما يتم تطبيق إعدادات أمان وتصحيح أخطاء مختلفة. [ 8 ]
انظر أيضاً
مراجع
- ↑ "الممارسات التقليدية لتطوير البرمجيات: التطوير/التكامل/التجهيز/الإنتاج" . مجلة "ديسرابتيف لايبراري تكنولوجي جيستر " . 4 ديسمبر 2006.
- ↑ "بيئات التطوير التجريبية: أفضل الممارسات في منهجية أجايل"" . www.agiledata.org . 20 مارس 2023.
- ↑ إليسون، ريتشارد (20 يونيو 2016). "أفضل ممارسات بيئات اختبار البرمجيات" . مجلة اختبار البرمجيات . مارتينيج وشركاؤه . تم الاطلاع عليه بتاريخ 2 ديسمبر 2016.
بمجرد أن يُجري المطور اختبارات الوحدة، يُنقل الكود إلى بيئة ضمان الجودة لبدء الاختبار. غالبًا ما يكون لديك عدة بيئات للاختبار. على سبيل المثال، ستكون لديك بيئة مُخصصة لاختبار النظام، وأخرى لاختبار الأداء، وثالثة لاختبار قبول المستخدم (UAT). ويعود ذلك إلى الاحتياجات الفريدة لكل نوع من أنواع الاختبار.
- ↑ دوبي، دينيس (17 يناير 2008). "كيفية التحكم في بيئات الاختبار الافتراضية" . شركة نتوورك وورلد، IDG . تاريخ الاسترجاع: 2 ديسمبر 2016.
تُسهّل تقنية الخوادم الافتراضية على الشركات إنشاء بيئات اختبار وإزالتها، مما يضمن تشغيل التطبيقات بكفاءة عالية على خوادم الإنتاج وأجهزة المستخدمين.
- ↑ "استخدم أتمتة واجهة المستخدم لاختبار التعليمات البرمجية الخاصة بك" . Microsoft.com . مايكروسوفت. 15 نوفمبر 2016. تم الاطلاع عليه بتاريخ 2 ديسمبر 2016.
تُعرف الاختبارات الآلية التي تُشغّل تطبيقك من خلال واجهة المستخدم الخاصة به باسم اختبارات واجهة المستخدم المبرمجة (CUITs). تشمل هذه الاختبارات اختبارًا وظيفيًا لعناصر تحكم واجهة المستخدم. وهي تُمكّنك من التحقق من أن التطبيق بأكمله، بما في ذلك واجهة المستخدم الخاصة به، يعمل بشكل صحيح. تُعد اختبارات واجهة المستخدم المبرمجة مفيدة بشكل خاص عندما يكون هناك تحقق من الصحة أو منطق آخر في واجهة المستخدم، على سبيل المثال في صفحة ويب.
- ↑ هيوسر، ماثيو (2015-07-07). "هل تبالغ في اختبار برامجك؟" . CIO.com . IDG. مؤرشف من الأصل في 2017-06-03 . تم الاسترجاع في 2016-12-03 .
يستغرق اختبار النسخة المرشحة وقتًا طويلاً. بالنسبة للعديد من فرق العمل الرشيقة، يُعد هذا التحدي الأكبر. تبدأ التطبيقات القديمة بفترة اختبار أطول من مدة دورة التطوير.
- ↑ شارما، أنوراغ (2018). إدارة بيئة الاختبار . مطبعة ITSM. ص 11. ISBN 9781912651269.
- ↑ "استخدام بيئات متعددة في ASP.NET Core" . docs.microsoft.com . تم الاطلاع عليه بتاريخ 2019-04-05 .
- عملية تطوير البرمجيات
- إصدار البرنامج
