توزيع التطبيقات على السحابة
بعد تصميم تطبيق السحابة وتطويره، يمكن نقله إلى مرحلة التوزيع لإصداره للعملاء. يمكن أن يكون التوزيع عملية متعددة المراحل، تتضمن كل منها سلسلة من الفحوصات لضمان تلبية أهداف التطبيق.
قبل أن تنشر تطبيق سحابي في التشغيل، من المفيد أن يكون لديك قائمة تحقق للمساعدة على تقييم تطبيقك في مقابل قائمة من أفضل الممارسات الأساسية والموصى بها. تتضمن الأمثلة قائمة التحقق من النشر من AWS وAzure. يقدم العديد من مزودي السحابة قائمة شاملة من الأدوات والخدمات التي تساعد على النشر، مثل هذا المستند من Azure.
عملية التوزيع
يعد توزيع التطبيق السحابي عملية تكرارية تبدأ من نهاية التطوير وتستمر حتى إصدار التطبيق على موارد التشغيل:
الشكل 1: عملية توزيع التعليمات البرمجية
من المعتاد لمطوري السحابة أن يحتفظوا بإصدارات متعددة من تطبيقاتهم تعمل على نحوٍ متزامن لتوجيه توزيع تطبيقهم على مراحل مختلفة:
- الاختبار
- التدريج
- الإنتاج
يجب أن تحتوي كل مرحلة من المراحل الثلاث على نحوٍ مثالي على موارد متطابقة وتكوين، مما يسمح للمطورين باختبار التطبيق وتوزيعه وتقليل فرص عدم التناسق الناتج عن حدوث أي تغيير في البيئة والتكوين.
إجراء تغييرات بالتطبيق
في سيناريو تطوير تطبيق ذكي نموذجي (على النحو الموضح في الشكل السابق)، تجري صيانة التطبيقات عن طريق مجموعة من المهندسين والمطورين الذين يعملون على حل المشكلات والأخطاء باستخدام نوع من آلية تعقب المشكلات. تُحفظ التغييرات التي يجري إدخالها على التعليمات البرمجية من خلال نظام مستودع التعليمات البرمجية (مثلًا، svn أو mercurial أو git)، حيث يجري الاحتفاظ بفروع منفصلة لإصدار التعليمات البرمجية. بعد اجتياز تغييرات التعليمات البرمجية والمراجعات والموافقات، يمكن إدخال التعليمات البرمجية في مراحل الاختبار والتجهيز والتشغيل. ويمكن إجراء ذلك بطرق متعددة:
البرامج النصية المخصصة: يمكن للمطورين استخدام البرامج النصية المخصصة لسحب الإصدار الأخير من التعليمات البرمجية وتشغيل أوامر محددة لإنشاء التطبيق وإدخاله في حالة إنتاج.
صور جهاز ظاهري مُعد مسبقًا: يمكن للمُطورين أيضًا تزويد جهاز ظاهري وتكوينه بكل البيئة والبرامج المطلوبة لنشر تطبيقاتهم. بمجرد تكوينه، يمكن عمل نسخة مطابقة من الجهاز الظاهري وتصديرها إلى صورة جهاز ظاهري. يمكن تزويد هذه الصورة لأنظمة تزامن سحابية متنوعة لتوزيعها وتكوينها تلقائيًا لتوزيع الإنتاج.
أنظمة التكامل المستمر:من أجل تبسيط المهام المختلفة التي ينطوي عليها التوزيع، يمكن استخدام أدوات التكامل المستمر (CI) لأتمتة المهام (مثل استرداد الإصدار الأخير من مستودع، وبناء ثنائيات التطبيق، وتشغيل حالات الاختبار) التي يجب إكمالها في مختلف الأجهزة التي تشكل البنية الأساسية للتشغيل. تتضمن أمثلة أدوات التكامل المستمر الشهيرة Jenkins وBamboo وTravis. Azure Pipelines هي أداة تكامل مستمر خاصة بـ Azure مصممة للعمل مع عمليات توزيع Azure.
إدارة وقت التعطل
قد تتطلب بعض التغييرات التي يجري إدخالها على التطبيق إنهاءً جزئيًا أو كليًا لخدمات التطبيق لإدراج تغيير في الواجهة الخلفية للتطبيق. يتعين على المطورين عادةً جدولة وقت محدد من اليوم لتقليل مرات مقاطعة عملاء التطبيق. قد تتمكن التطبيقات المصممة للتكامل المستمر من إجراء هذه التغييرات مباشرةً على أنظمة التشغيل بأقل قدرٍ ممكن من المقاطعة أو دون مقاطعة لعملاء التطبيق.
التكرار والتسامح مع الأخطاء
تفترض أفضل الممارسات في توزيع التطبيق عادةً أن البنية الأساسية السحابية مؤقتة وقد تكون غير متاحة أو تتغير في أي لحظة. على سبيل المثال، قد تُجدول الأجهزة الظاهرية المنشورة في خدمة تأجير البنية التحتية (IaaS) للإنهاء حسب تقدير مزود الخدمة السحابية، وذلك بناءً على نوع اتفاقية مستوى الخدمة.
يجب أن تمتنع التطبيقات عن الترميز المضمن أو افتراض نقاط النهاية الثابتة لمكونات مختلفة، مثل قواعد البيانات ونقاط نهاية التخزين. يجب أن تستخدم التطبيقات المصممة جيدًا واجهات برمجة تطبيقات الخدمة استخدامًا مثاليًا للاستعلام عن الموارد واكتشافها والاتصال بها بطريقة ديناميكية.
يمكن أن تحدث حالات الفشل الكارثية في الموارد أو الاتصال في أي لحظة. يجب تصميم التطبيقات المهمة تحسبًا لمثل حالات الفشل هذه ويجب أن تكون مصممة لتكرار تجاوز الفشل.
يقدم العديد من مزودي الخدمات السحابية بتصميم مراكز البيانات خاصتهم في المناطق والأماكن. المنطقة هي موقع جغرافي محدد يضم مركز بيانات كاملًا، بينما النطاقات عبارة عن أقسام فردية داخل مركز بيانات معزولة للتسامح مع الخطأ. على سبيل المثال، قد يحتوي مكانين أو أكثر داخل مركز بيانات على بنية أساسية منفصلة للطاقة والتبريد والاتصال بحيث لا يؤثر أي خطأ في إحدى النطاقات على البنية التحتية في نطاقٍ آخر. عادةً ما تُزود معلومات المنطقة والنطاق بواسطة مزودي الخدمات السحابية للعملاء والمطورين لتصميم التطبيقات التي يمكنها الاستفادة من خاصية العزل هذه وتطويرها.
لذلك يمكن للمطورين تكوين تطبيقاتهم لاستخدام الموارد في مناطق أو نطاقات متعددة من أجل تحسين إتاحة تطبيقاتهم والتسامح مع حالات الفشل التي قد تحدث عبر نطاق أو منطقة. سيحتاجون إلى تكوين أنظمة يمكنها توجيه نسبة استخدام الشبكة وموازنتها عبر النطاقات والمناطق. يمكن أيضًا تكوين خوادم DNS للرد على طلبات البحث عن المجال لعناوين IP معينة في كل نطاق، اعتمادًا على مكان إنشاء الطلب. يقدم هذا أسلوبًا لموازنة التحميل حسب القرب الجغرافي للعملاء.
الأمن والتشديد في التشغيل
يجب تشغيل تطبيقات الإنترنت على سحابة عامة بحذر. نظرًا لأن نطاقات IP السحابية هي مواقع معروفة جيدًا للأهداف عالية القيمة، فمن المهم التأكد من أن جميع التطبيقات الموزعة على السحابة تتبع أفضل الممارسات عندما يتعلق الأمر بتأمين نقاط النهاية والواجهات وتقويتها. تتضمن بعض المبادئ الأساسية التي يجب اتباعها ما يلي:
- وجوب تحويل جميع البرامج إلى وضع التشغيل. دعم معظم البرامج "وضع تتبع الأخطاء" للاختبار المحلي و"وضع التشغيل" لعمليات التوزيع الفعلية. تطبيقات وضع تتبع الأخطاء تسرب عمومًا كمية كبيرة من المعلومات إلى المهاجمين الذين يرسلون إدخالات تالفة وبالتالي تزود مصدرًا سهلًا للاستكشاف للمتسللين. بغض النظر عما إذا كنت تستخدم إطار عمل ويب مثل Django وRails أو قاعدة بيانات مثل Oracle، فمن المهم اتباع الإرشادات ذات الصلة لنشر تطبيقات التشغيل.
- وجوب اقتصار الوصول إلى الخدمات غير العامة على عناوين IP داخلية معينة لوصول المسؤول. التأكد من أن المسؤولين لا يمكنهم تسجيل الدخول مباشرةً إلى مورد مهم من الإنترنت دون زيارة لوحة التشغيل الداخلية. تكوين جدران الحماية باستخدام عنوان IP والقواعد المستندة إلى المنفذ للسماح بالحد الأدنى من عمليات الوصول المطلوبة، خاصة عبر SSH وأدوات الاتصال عن بُعد الأخرى.
- اتبع الحساب الأساسي الأقل امتيازًا. تشغيل جميع الخدمات باعتبارك المستخدم الأقل امتيازًا والذي يمكنه أداء الدور المطلوب. تقييد استخدام بيانات الاعتماد الجذر إلى تسجيلات دخول يدوية معينة من جانب مسؤولي النظام الذين يحتاجون إلى تتبع الأخطاء أو تكوين بعض المشاكل الحرجة في النظام. ينطبق هذا أيضًا على الوصول إلى قواعد البيانات واللوحات الإدارية. وجوب حماية عمليات الوصول حمايةً عامةً باستخدام مفتاح مزدوج طويل وعشوائي عام-خاص، ويجب تخزين المفتاح المزدوج هذا على نحوٍ آمنٍ في مكان مقيد ومشفّر. وجوب أن يكون لدى جميع كلمات المرور متطلبات قوة صارمة.
- استخدام تقنيات وأدوات دفاعية معروفة لأنظمة الكشف عن الاختراق والوقاية منه (IDS/IPS) وإدارة معلومات الأمان والأحداث (SIEM) وجدران حماية طبقات التطبيق وأنظمة مكافحة البرامج الضارة.
- إعداد جدول التصحيح الذي يتزامن مع إصدارات التصحيح من جانب بائع الأنظمة التي تستخدمها. غالبًا ما يكون لدى البائعين مثل Microsoft دورة إصدار ثابتة للتصحيحات.