وظائف سحابة مقابل محرك Kubernetes

تم التحديث في أغسطس 2019.

توفر مجموعة حسابات Google الكثير من الخيارات الرائعة. من أفضل التقنيات في برنامج GCP هي وظائف Kubernet Engine و Cloud. كلاهما قوي ، ومن السهل كمتطور افتراضي في وظائف السحاب لأنه يأخذ الكثير من العمل الإداري من يدي. يعد هذا العمل الإداري ، وإن كان ملف yaml التعريفي ، جانبًا مهمًا في تكوين محرك Kubernetes.

كانت المقدمة الأصلية لهذه المقالة عبارة عن مطور يسألني ببساطة ، "متى تختار Kubernetes على وظائف Cloud؟". إنه سؤال لقد فكرت فيه كثيرًا بنفسي منذ العمل مع كلٍّ من هذين ، لذا أعتقد أن أفضل طريقة للتعامل مع ذلك هي التقصير في وظائف السحاب وشرح الحالات التي يكون فيها Kubernetes Engine خيارًا أفضل. على الرغم من أنني لا أقوم بتصنيف كل الأسباب ، فإليك أهم الأسباب التي أدت إلى اختيار Kubernetes.

3 لغات لن تقطعها

عند استخدام وظائف السحاب في الوقت الحالي ، يكون لديك ثلاث بيئات تطوير فقط للاختيار من بينها وهي Node.js و Python و Go. هذه تقنية لا تصدق وهي قوية.

توفر لك Kubernetes Engine الحرية لأن القرون التي تنشئها هي بيئات منعزلة يمكنها تشغيل أي لغة ووقت تشغيل. قد تكون متجراً .NET وتحتاج إلى الاستفادة من C #. لقد استمتعت بفكرة استخدام مكتبات Core Foundation من Apple في إحدى الخدمات. ستحتاج هذه الخدمة إلى أن تكون مكتوبة في سويفت. هذه فقط بعض الحالات التي قد تتضمن استخدام لغة مختلفة ومجموعة من الأطر. في المستقبل ، ستدعم Cloud Functions المزيد من هذه التقنيات ، لكن ذلك سيستغرق بضع سنوات قبل أن يتم إنتاجها.

سرعة

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

المعالجة الثقيلة وأعباء العمل الكبيرة

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

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

الاحتجاج الجنون

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

Microservice الاتصالات

أخيرًا ، لدينا اتصال من خدمة إلى أخرى. تحتوي وظائف السحابة على بعض المشغلات القوية حقًا لكل من Firebase و GCP. على سبيل المثال ، يمكنك إعداد مشغل Cloud Pub / Sub أو تشغيل وظيفة أخرى عن طريق تحميل الملفات إلى Cloud Storage. بالإضافة إلى ذلك ، لدينا مشغلات HTTP والتي تساعد في إنشاء روابط الويب.

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

في النهاية ، يعتمد ذلك على ما تقوم ببنائه وماهية احتياجاتك ، ولكن إذا كنت تندمج في فكرة استدعاء مشغلات وظائف HTTP متعددة بناءً على مكالمة واحدة إلى وظائف السحاب الخاصة بك ، فعليك التراجع وسؤال نفسك عما إذا كانت Kubernetes خيارًا أفضل ل 90 ٪ intercommunication الذي يحدث.

هذه القائمة ليست شاملة وهي بالتأكيد مفتوحة للتفسير. مرة أخرى ، يعتمد على احتياجاتك كشركة ومؤسسة. لا تزال Kubernetes تنمو بوتيرة سريعة وليس لدى الجميع مطور / فريق في متناول اليد يمكنه إدارة مشروع Kubernetes Engine لهم. من ناحية أخرى ، ربما لديك الكثير من خدمات .NET Core التي ترغب في نشرها ، ولن تقطعها فقط وظائف Cloud Cloud لأنك تحتاج إلى استخدام Node.js أو Python أو Go. من الجدير دائمًا التراجع والتفكير في التقنيات المختلفة أثناء اللعب وكيف يمكننا الاستفادة منها لتكون منتجة قدر الإمكان.

جيمس ويلسون هو مطور بناء أنظمة موزعة باستخدام Go و Google Cloud كما أنه مؤلف Pluralsight ويمكنك الاطلاع على دوراته هنا.