ما هي الحوسبة بدون خادم ومتى يجب استخدامها؟

جدول المحتويات:

ما هي الحوسبة بدون خادم ومتى يجب استخدامها؟
ما هي الحوسبة بدون خادم ومتى يجب استخدامها؟
Anonim

الحوسبة بدون خادم
الحوسبة بدون خادم

الحوسبة بدون خادم هي نموذج ترميز جديد يسمح لك بتشغيل التعليمات البرمجية دون إعداد الخوادم. يتم تقديمها كخدمة من قبل العديد من موفري السحابة ، بما في ذلك Amazon و Google. ما هو كل هذا الضجيج؟

ما هو Serverless؟

"Serverless" تسمية خاطئة بسيطة - سيستمر تشغيل الكود الخاص بك على خادم في مكان ما. لا داعي للقلق بشأن ذلك ، لأن المعدن الذي يتم تشغيله عليه ستتم إدارته جميعًا من أجلك "في السحابة" ، مما يتركك تركز فقط على البرامج.هذا هو جاذبية الحلول بدون خادم. إن خفض تكلفة إدارة الخوادم يوفر لك المال ، سواء من تكلفة العمالة الخاصة بمسؤولي النظام أو تكلفة تشغيل VPS ، خاصة تلك التي قد تكون أكثر مما تحتاج.

Serverless هي فئة واسعة ، لكن معظم الخدمات ستتضمن ثلاثة أشياء رئيسية:

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

هذا يجعل من دون خادم نموذجًا تنافسيًا يعتمد على التكلفة وحدها. بالنسبة إلى موقع مثل Bustle ، أدى الانتقال إلى AWS Lambda إلى توفير 84٪ في التكلفة مقارنةً ببنيتهم القديمة. يعد توسيع نطاق الحلول التي لا تحتاج إلى خادم أمرًا خطيًا إلى حد كبير ، لأنك لن تضطر إلى الدفع مقابل مثيلات الخادم الفردية.

PaaS مقابل FaaS

من المهم توضيح الفرق بين نموذج PaaS و FaaS "بدون خادم" ، لأن التسويق لكل نوع متماثل إلى حد كبير.

النظام الأساسي كخدمة (PaaS) يقطع الخوادم ، لكنه لا يمس الكود الأساسي أو يفرض أي ممارسات ترميز جديدة. يتم ذلك عادةً من خلال حاويات مثل Docker ، حيث يمكن نشر لقطات من تطبيقك بسرعة كبيرة عبر خوادم متعددة. مع بعض الخدمات ، مثل AWS Fargate و Azure Container Instances ، لا داعي للقلق بشأن الخوادم على الإطلاق ، مما يجعلها "بدون خادم". مع الخدمات الأخرى ، مثل Heroku ، لا يزال يتم تحصيل رسوم منك لكل خادم ، ولكن لا داعي للقلق بشأن إعداده بنفسك ، والتوسع عبر مثيلات متعددة أمر سهل.

تعمل الوظيفة كخدمة (FaaS) على استبعاد فكرة الخوادم تمامًا. بدلاً من ذلك ، يتم تشغيل التعليمات البرمجية الخاصة بك ، وتشغيل وظيفة سريعة ، وتفرض عليك رسومًا مقابل الذاكرة ووقت الحساب الذي استخدمته.تفرض نماذج FaaS فكرة "الخدمات المصغرة" ، حيث تقسم تطبيقك إلى مكوناته ، وتطور كل واحدة على حدة. لا يعمل هذا مع كل شيء ، ولكن عندما يعمل ، يمكن أن يسرع بشكل كبير التطوير والصيانة مقابل تصميمات التطبيقات التقليدية "المتجانسة". AWS Lambda ووظائف Google Cloud ووظائف Azure كلها نماذج FaaS.

يُنظر إلىFaaS عمومًا على أنها حوسبة "بدون خادم" ، على الرغم من أنه ربما لا يكون هذا هو المصطلح الأكثر وصفًا لها. تعتبر "الخدمات المصغرة" أكثر تمثيلاً للأفكار الكامنة وراء نماذج FaaS ونماذج "بدون خادم". لا يزال بإمكانك إنشاء خدمات مصغرة باستخدام خدمات PaaS ، لكن FaaS تجبرك على القيام بذلك.

حيث تتألق الخدمات المصغرة

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

تطبيق متآلف مع العديد من الأجزاء
تطبيق متآلف مع العديد من الأجزاء

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

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

يقوم تطبيق الخدمات المصغرة بقياس قطعة واحدة منفصلة عن الأجزاء الأخرى
يقوم تطبيق الخدمات المصغرة بقياس قطعة واحدة منفصلة عن الأجزاء الأخرى

يمكن تقسيم هذا بشكل أكبر مع موفري خدمة FaaS ، حيث يمكن الآن أن تكون وحدات البناء هذه وظائف فردية بدلاً من خدمات كاملة. على سبيل المثال ، يمكن أن يكون لديك وظيفة لتغيير حجم الصور تلقائيًا لأجهزة مختلفة ، مثل سياتل تايمز التي تستخدم Lambda لـ.يمكنك إنشاء وظائف منفصلة لكل نقطة نهاية REST API ، والتخلي عن تشغيل خادم API تمامًا.

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

الخدمات المصغرة ليست دائمًا أبسط

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

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

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

FaaS على وجه التحديد يفرض أيضًا قفل البائع. بينما يمكنك عادةً التقاط صورة Docker ونشرها على مزود آخر ، فإن بناء التطبيق الخاص بك على خدمة مثل Lambda يجبرك على استخدام Lambda فقط لاستضافة تطبيقك. تصبح محبوسًا في النظام البيئي ، وفجأة لا تكتب شفرة جافا سكريبت ، فأنت تكتب رمز Lambda. لا يزال بإمكانك التحكم في ما تكتبه ، لذلك من الممكن نقله إلى خدمة أخرى ، لكن الانفصال عن خدمة تعتمد عليها عادة ما يكون أصعب مما يبدو.

أيضًا ، لا يُقصد عادةً تشغيل خدمات FaaS على مدار الساعة طوال أيام الأسبوع. إذا كنت تستخدم وظائف Lambda لإنشاء تطبيق يعمل باستمرار على تشغيل وظائف Lambda ، فسوف تزيد فاتورتك أعلى من مجرد الدفع مقابل VPS.

متى ومتى لا تستخدم Serverless

خدمات PaaS مثل AWS Fargate تعمل ببساطة على تشغيل التطبيقات المعبأة في حاويات دون إزعاجك بشأن المعدن الذي تعمل عليه. يمكنك تبديل البنية الأساسية للتطبيق بالكامل إلى خدمة مثل هذه دون أي مشاكل. بالإضافة إلى ذلك ، يأتي مع PaaS تجميعًا سهلاً ، ويمكن أن يساعدك اعتماد بعض المُثُل العليا من نموذج الخدمات المصغرة في تحسين قابلية تطبيقك للتوسع دون الحاجة إلى إعادة هيكلة كبيرة.

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

لكن المال هو أيضًا عامل رئيسي ، وبينما قد يكون من الصعب التخطيط للخدمات الصغيرة ونماذج التطبيقات بدون خادم ، إذا تمكنت من القيام بذلك ، فستوفر الكثير من المال.

AWS Lambda مفيدة جدًا أيضًا بالاقتران مع خدمات AWS الأخرى. يمكن تشغيل وظائف Lambda بناءً على الإجراءات في بنية AWS الأساسية الخاصة بك ، مثل تشغيل وظيفة تلقائيًا عند إسقاط ملف في حاوية S3. إذا كنت تستخدم خدمات AWS بالفعل ، يمكن أن تكون Lambda أداة أتمتة رائعة.

موضوع شعبي