article cover image
ما هي الحوسبة السحابية (Cloud Computing)؟ وما هي فوائدها بالنسبة لمطور البرمجيات
تطوير الويب والبرمجيات 11 دقيقة 0 تعليق 2523 مشاهدة
صورة المستخدم دريد عبدالله
مهندس برمجيات
تم النشر 2021-05-31 00:24:33 - آخر تحديث 2021-05-31 00:25:20

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

مقارنة بين طرق التطوير التقليدية والطرق المعتمدة على الحوسبة السحابية

لمساعدتك في فهم الحوسبة السحابية، وكيف تختلف عن الحوسبة التقليدية، دعنا نلقي نظرة على المثال التالي

مثال عملي

فلنفترض أنك تعمل على تطوير موقع انترنت جديد مثل منصة تواصل اجتماعي، وتريد توفير المزايا التالية للمستخدمين:

  • امكانية انشاء الحسابات، البحث عن الاخرين واضافة الاصدقاء
  • إرسال البريد الكتروني للمستخدمين، مثل بريد التفعيل عند انشاء الحساب
  • امكانية رفع الصور والملفات ومشاركتها مع الاخرين
  • نظام للدردشة في الزمن الحقيقي

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

بغض النظر عن طريقة توفير البنية التحتية، سيحتاج الموقع بشكل عام الى العديد من المكونات، من بينها:

مخدمات الويب: تقوم باستقبال الطلبات من المستخدمين، تنفيذها، وارجاع الصفحات او الاستجابات المطلوبة.

قواعد البيانات: لتخزين معلومات المستخدمين، معلومات عن المحتوى الذي تم رفعه، وغير ذلك، وتمكين استرجاع هذه المعلومات بسرعة وفعالية.

أنظمة التخزين: لتخزين الصور والملفات التي تم رفعها من قبل المستخدمين، ملفات الموقع الستاتيكية (الجافا سكربت مثلا)، وغير ذلك

أنظمة توزيع المحتوى (CDN): تقدم هذه الانظمة امكانية وصول سريع الى ملفات موقعك خاصة الستاتيكية منها (مثل الصور)، من خلال توزيعها جغرافيا على نقاط عدة لجعلها اقرب لمستخدميك، مما يساهم في تحسين اداء المواقع بما يصل الى 70%.

أنظمة الفهرسة: لفهرسة بعض انواع المحتوى غير المهيكل مثل منشورات المستخدمين النصية وتمكين البحث بها بكفاءة,

مخدمات البريد الالكتروني: لاستقبال وارسال البريد الالكتروني، سواء عند الطلب (مثل عند انشاء حساب جديد)، او البريد الترويجي والاعلاني

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

انظمة التخزين المؤقت (Caching): لتخزين بعض انواع البيانات المكلفة حسابيا لتسريع الوصول اليها، من بينها مثلا قائمة التحديثات (feeds) الخاصة بالمستخدم، حالة المستخدمين المتصلين (online)، حيث يمكن استخدام Redis مثلا مع مهلة انتهاء البيانات (TTL) لانجاز ذلك بكفاءة.

دعنا نناقش قليلا بعض السبل المختلفة لتطبيق هذا النظام.

الطريقة الاولى، استخدام مخدمات مكرسة (متخصصة)

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

يمكن لهذه المخدمات ان تكون مخدمات حقيقية (Dedicated Hardware) اي اننا نمتلك الجهاز الفيزيائي بأكمله، كما ويمكن ان تكون مخدمات افتراضية (Virtual Machines) لدينا وصول اليها.

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

على أي حال، اذا ما أردنا الحصول على موثوقية عالية وكفاءة جيدة، كما هو الحال في التطبيقات كبيرة الحجم، او حيث تكون الموثوقية مهمة، فيفضل تكريس عدد من المخدمات لكل مكون أو نظام، حيث يمكننا القيام بتكريس مثلا عدة مخدمات لنظام قاعدة البيانات، في حال استخدام mySql Cluster يمكن استخدام واحدة من هذه المخدمات كعقدة رئيسية (Master/Primary) وباقي المخدمات كعقد ثانوية للقراءة (Secondary)، حيث تزيد هذه المعمارية من كفاءة عمليات القراءة ومن موثوقية وتوافرية النظام.

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

الطريقة الثانية، استخدام الخدمات السحابية

العديد من الشركات، ومن بينها Amazon, DigitalOcean وغيرها تقدم العديد مما يسمى بخدمات الحوسبة السحابية (Cloud Computing Services)، وهذه الخدمات - وبشكل مختصر - توفر الكثير من الخدمات التي عادة ما تتطلبها انظمة البرمجيات.

دعنا نرى كيف يمكننا الاستفادة من هذه الخدمات لتطبيق المثال المذكور اعلاه:

مخدمات الويب: في البداية ولإبقاء الامور بسيطة، يمكننا استخدام مخدمات افتراضية (Virtual Machines) تم تثبيت البرمجيات المطلوبة عليها، حيث يمكننا تشغيل كود مخصص على هذه المخدمات. أمازون تقدم خدمة Elastic Compute Cloud (EC2) و DigitalOcean تقدم ما تسميه (Droplets)، وفي الحالتين هما بشكل اساسي اشبه بالمخدمات الافتراضية (VMs) التي يمكنك تهيئتها من قوالب (images) جاهزة.. مثلا، يمكنك باستخدام واجهة مستخدم (او خدمة ويب) انشاء 10 مخدمات افتراضية لاستلام طلبات الويب، جميعها تعمل على نظام Ubuntu 20 مع مخدم الويب مثبت عليها (باستخدام قوالب مخصصة) كما ويمكنك تشغيل سكربتات التهيئة الخاصة بك لتهيئة هذه الآلات الافتراضية.

نظام قواعد البيانات: العديد من خدمات الحوسبة السحابية تقدم خدمة قواعد البيانات المدارة (Managed Database Systems)، حيث يمكنك إعداد قاعدة البيانات من خلال واجهة مستخدم (او خدمة ويب) بسهولة شديدة. ليس عليك التفكير في المخدمات التي تعمل عليها قاعدة البيانات، ولا بعملية النسخ الاحتياطي، ولا بعملية تحديث محرك قواعد البيانات الخاص بك، او زيادة قدرة المخدم عند زيادة الطلب.. بل تقوم الخدمة السحابية بكل ذلك من اجلك.

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

أنظمة تخزين الملفات وأنظمة توزيع المحتوى: تقدم جميع انظمة الخدمات السحابية المعروفة انظمة تخزين سحابي، ويسمى احيانا بـ Object Storage، حيث يمكنك وباستخدام خدمات ويب محددة طلب تخزين، استيراد وحذف ملفاتك بسهولة شديدة.

كما وعادة ما ترفق هذه الخدمات بخدمة توزيع محتوى Content Distribution Network (CDN) للمساعدة في جعل هذه الملفات متوفرة في العديد من المناطق الجغرافية، ومزامنتها تلقائيا، لجعلها اقرب لمستخدميك، واستخدام هذه الانظمة سهل للغاية.

تقدم امازون خدمة S3 للتخزين، مع CloudFront كشبكة توزيع محتوى، كما وتقدم DigitalOcean خدمة Spaces للتخزين مع خدمة توزيع محتوى مجانية.

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

مخدمات البريد الالكتروني: تعد عملية اعداد وصيانة البريد الالكتروني من المهام الشاقة، والتي تحتاج اشخاص متمرسين والكثير من الوقت لاعداد البرمجيات، الشهادات، انظمة المراقبة وغير ذلك. من جديد، تقدم بعض الخدمات السحابية امكانية ارسال البريد الالكتروني بسهولة شديدة من خلال web APIs.  تقدم امازون خدمة Simple Email Service (SES) لتمكينك من ارسال البريد الالكتروني بسهولة، ومن نطاقك (Domain) الخاص، مع توفير العديد من ادوات الادارة والمراقبة الجيدة.

أنظمة الارتال: كذلك تحتاج انظمة الارتال التي تعمل تحت ضغط عال الى الكثير من الاعداد والصيانة والمراقبة القريبة، اذا انها اساسية في سير عمل الكثير من الاجراءات. تقدم امازون خدمة Simple Queue Service (SQS) وهي نظام ارتال مدار، يمكنك استخدامه في تطبيقاتك لتمكين المكونات المختلفة من التواصل بشكل فعال وفصل مهامها. 

مزايا الحوسبة السحابية

مما سبق، نلاحظ ان الحوسبة السحابية وفرت لنا العديد من المزايا، من بينها:

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

ماذا يستخدم أفق

نستخدم في أفق العديد من الخدمات السحابية، ومن اهمها:

نستخدم Kubernetes من اجل تنظيم الحاويات (container orchestration): يعمل مخدم php، مخدم nginx، مخدم nodeJS، تخزين مؤقت Redis، نظام ارتال RabbitMQ، وبعض المهام الاخرى (consumers) على Managed Kubernetes Cluster على منصة DigitalOcean، وهو خدمة سحابية اخرى.

بالاضافة الى ذلك، نستخدم DigitalOcean Managed Database من اجل قواعد بياناتنا العلائقية (mySQL).

كما ويمكنك ان تلاحظ، نستخدم DigitalOcean Spaces من اجل تخزين الصور وبعض انواع الملفات الاخرى، كذلك لتوفير شبكة توزيع محتوى (CDN).

كما ونستخدم بعض الخدمات من امازون، من بينها Simple Email Service (SES) من اجل تمرير البريد الالكتروني الى المستخدمين.

لتعلم المزيد

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

من الجدير بالذكر أن أنظمة امازون (وتدعى Amazon Web Services) تم تطويرها بدقة وبشكل يسمح لها بالتكامل مع بعضها بشكل ممتاز. في حال كنت مهتما، انصحك بشدة بالتعلم عن هذه الانظمة. توفر امازون العديد من الدروس المجانية في بعض الاحيان عن هذه الانظمة، كما وتوفر سنة مجانية من هذه الخدمات يمكنك خلالها استخدام العديد من الخدمات مجانا وفق حدود معينة بما يسمح لك بتجريبها وتعلمها.


صورة الغلاف من قبل Jack Moreh، تم التحميل من موقع stockvault

التعليقات (0)