البرمجة الموزعة على السحابة
يتم تشغيل البرامج الموزعة على أجهزة الكمبيوتر المتصلة بالشبكة. وشبكات أجهزة الكمبيوتر موجودة في كل مكان. ومن الأمثلة الشائعة شبكات الإنترنت، ومجموعات الحوسبة عالية الأداء، والهواتف الجوالة، والشبكات داخل السيارات، من بين أمثلة أخرى. وتعتبر العديد من شبكات أجهزة الكمبيوتر أنظمة موزعة. ونحن نعرّف النظام الموزع بأنه نظام تتواصل فيه أجهزة الكمبيوتر المتصلة بالشبكة باستخدام تمرير الرسائل و/أو الذاكرة المشتركة وتنسق إجراءاتها لحل مشكلة معينة أو تقديم خدمة معينة. ولأن السحابة تعرف بأنها مجموعة من خدمات البرامج والمنصات والبنية التحتية القائمة على الإنترنت التي يتم تقديمها من خلال مجموعة (أو مجموعات) من أجهزة الكمبيوتر المتصلة بالشبكة (مثل مراكز البيانات)، فإن السحابة هي بالتالي نظام موزع. ومن النتائج الأخرى لتعريفنا أن البرامج الموزعة (مقابل البرامج المتسلسلة أو المتوازية) ستكون القاعدة في السحب. وعلى وجه الخصوص، نحن نعرف البرامج الموزعة في القسم على أنها برامج متوازية تعمل على معالجات منفصلة في أجهزة مختلفة. وبالتالي، فإن الطريقة الوحيدة أمام المهام في البرامج الموزعة للتفاعل عبر نظام موزع هي إما عن طريق إرسال الرسائل واستقبالها بشكل صريح أو عن طريق القراءة والكتابة من/إلى ذاكرة موزعة مشتركة معتمدة من قبل النظام الموزع الأساسي (على سبيل المثال، باستخدام بنية الأجهزة ذات الذاكرة المشتركة الموزعة [DSM]).1 ومن ثم سنقوم بتحديد النماذج المختلفة التي يمكن من خلالها بناء البرامج الموزعة للسحب (أو برامج السحابة) والتعرف على بعض التحديات التي يجب على البرامج السحابية معالجتها.
برمجة السحابة
تعتمد فعالية البرامج السحابية على الطريقة التي يتم بها تصميمها وصياغتها وتنفيذها. ويجب أن تراعي عملية التطوير عدة اعتبارات:
- ما نموذج البرمجة الأساسي الأكثر ملاءمة، تمرير الرسائل أم الذاكرة المشتركة؟
- هل التطبيق يتناسب بشكل أفضل مع نموذج حساب متزامن أو غير متزامن؟
- ما أفضل طريقة لتكوين البيانات لتحقيق الكفاءة الحسابية: باستخدام توازي البيانات أم توازي الرسم البياني؟
- ما هي البنية المعمارية والإدارية التي ستحسن أكثر من تعقيد البرنامج وكفاءته وقابلية توسعه: الرئيس-التابع أم نظير إلى نظير؟
بالنسبة إلى برامج السحابة على وجه الخصوص، تتطلب العديد من المشكلات - التي تشمل التصميم والتنفيذ والضبط والصيانة - اهتماماً خاصاً:
- يصعب تحقيق قابلية التوسع الحسابية في النظم الكبيرة (مثل السحب) لعدة أسباب، بما في ذلك عدم القدرة على تحقيق التوازي الكامل للخوارزميات، والاحتمالية العالية لعدم موازنة التحميل، والنفقات العامة التي لا مفر منها للمزامنة والاتصالات.
- الاتصالات التي تستغل موضع البيانات وتقلل من نسبة استخدام الشبكة قد تكون خادعة، خاصةً في السحب (العامة)، حيث يتم عادةً إخفاء طبولوجيا الشبكة.
- هناك اثنان من الحقائق السحابية الشائعة - البيئات الظاهرية وتنوع مكونات مركز البيانات - تؤدي إلى عدم تجانس يعقد مهام الجدولة وتخفي اختلافات الأجهزة والبرامج بين عقد السحابة.
- لتجنب حالات التوقف التام والإغلاقات المتعدية ولضمان الوصول الحصري المتبادل، وهي قدرات مرغوبة للغاية في الإعدادات الموزعة، يجب أن يوفر النظام الأساسي آليات المزامنة الفعالة، ويجب على المصمم استغلالها.
- نظراً لتزايد احتمال الفشل مع تغيير حجم السحابة، يجب أن تستخدم تصاميم النظام آليات تسامح مع الأخطاء، بما في ذلك مرونة المهام، ونقاط التحقق الموزعة، وتسجيل الرسائل.
- من أجل التنفيذ الفعال والكفء، يجب أن يدعم مجدول المهام والوظائف التحكم في موضع المهمة، والتوازي، والمرونة، فضلاً عن أهداف مستوى الخدمة (SLOs).
إن معالجة جميع هذه الاعتبارات في التطوير ومشكلات السحابة تفرض عبئاً كبيراً على المبرمجين. فتصميم وتطوير والتحقق من وتصحيح جميع (أو حتى بعض) من هذه القدرات يمثل مشاكل صعبة بطبيعتها ويمكن أن يتطلب تصحيحاً كبيراً وصعوبات في الأداء، بالإضافة إلى استهلاك الكثير من الوقت والموارد.
تبشر محركات التحليلات الموزعة الحديثة بتخفيف عبء هذه المسؤوليات عن المطورين. فهذه المحركات توفر واجهات برمجة التطبيقات (API) التي تمكن المستخدمين من تقديم برامجهم كدالات بسيطة متسلسلة. ومن ثم تقوم المحركات تلقائياً بإنشاء المهام والوظائف وموازاتها، ومزامنتها، وجدولتها. كما أنها تعالج حالات الفشل دون الحاجة إلى مشاركة من المستخدم. في نهاية هذه الوحدة، نفصّل كيفية قيام محركات التحليلات الموزعة بشكل فعال باستخلاص الصعوبات في تطوير برامج السحابة ومعالجتها. ولكننا، في القسم التالي، نقدم أولاً نموذجي البرمجة الموزعة التقليديين: الذاكرة المشتركة وتمرير الرسائل. وثانياً، نناقش نماذج الحساب التي يمكن أن تستخدمها برامج السحابة. ونشرح، على وجه التحديد، نماذج الحساب المتزامنة وغير المتزامنة. وثالثاً، نقدم فئتي التوازي الرئيسيتين لبرامج السحابة، وهما توازي البيانات وتوازي الرسم البياني. وأخيراً، نصف النماذج المعمارية التي يمكن أن تستخدمها عادة برامج السحابة: بنية الرئيس-التابع ونظير إلى نظير.
المراجع
- أ. إس. تاننباوم (4 سبتمبر 1994). أنظمة التشغيل المُوزّعة Prentice Hall، الإصدار الأول