تحليل السيرفرلس: البدء من نماذج البيانات

تحليل السيرفرلس: البدء من نماذج البيانات

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

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

نموذج عملية السيرفرلس

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

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

بالفعل، يتوقع السيرفرلس مثل هذه السيناريوهات. وبالتالي، من منظور العملية التي تدير مثيل الدالة، يوجد نموذجان:

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

تنسيق البيانات

معظم المهندسين على دراية بنمط MVC (Model-View-Controller)، وهو نموذج تصميم ناجح على نطاق واسع. ومع ذلك، أدى ظهور أطر MVVM في الواجهة الأمامية إلى دفع طبقة العرض إلى الأمام، مما أدى إلى تطبيقات الصفحة الواحدة (SPA). على العكس من ذلك، انحدرت طبقتا التحكم والنموذج في الخلفية، مما أدى إلى ظهور تطبيقات خلفية موجهة نحو الخدمة.

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

بطبيعته غير المتزامنة غير المحظورة ولغة جافا سكريبت التي تلقى قبولًا لدى مهندسي الواجهة الأمامية، تولى Node.js بطبيعة الحال دور طبقة بوابة البيانات. أدى هذا إلى ظهور طبقة BFF (الخلفية للواجهة الأمامية) في Node.js، والتي تنظم بيانات وواجهات الخلفية، وتكيفها إلى هياكل بيانات مناسبة للاستهلاك من قبل الواجهة الأمامية.

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

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

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

تنسيق الخدمات

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

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

من المزايا البارزة للسيرفرلس عدم اعتماده على لغة برمجة معينة. وهذا يحرر فرق التطوير من حصر أنفسهم في لغة واحدة، مما يسمح لهم بالاستفادة من نقاط القوة في Java وPHP وPython وNode.js وغيرها لبناء تطبيقات معقدة بشكل تعاوني.

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

الخاتمة

  1. هناك نوعان من نماذج العمليات للسيرفرلس: نوع العملية المقيمة ونوع الاستخدام والتدمير. تم تصميم نوع العملية المقيمة للتكيف مع بنية MVC التقليدية ولا يبدو طبيعيًا؛ إذا بدأت في استخدام السيرفرلس من الآن، فإنني أوصي بشدة بنموذج الاستخدام والتدمير، والذي يمكنه تعظيم مزايا السيرفرلس.
  2. بتتبع التاريخ، قمت بترتيب تطور BFF من خلال فصل الواجهة الأمامية والخلفية، والذي يمكن استبداله بعد ذلك بـ SFF. سواء كان تنسيق الواجهات الداخلية أو تنسيق البيانات الخارجية، يمكن للسيرفرلس أن يلعب دورًا كبيرًا.
  3. بالانتقال إلى أبعد من تنسيق البيانات، يمكننا الاستفادة من إمكانيات السيرفرلس ومزودي خدمات السحابة لتحقيق تنسيق الخدمات، وإنشاء سيناريوهات خدمات مركبة أكثر قوة، وتعزيز كفاءة البحث والتطوير لدينا.

Novita AI هي منصة سحابية شاملة تعزز طموحاتك في الذكاء الاصطناعي. واجهات برمجة تطبيقات متكاملة، سيرفرلس، مثيل GPU — الأدوات الفعالة من حيث التكلفة التي تحتاجها. تخلص من البنية التحتية، ابدأ مجانًا، واجعل رؤيتك للذكاء الاصطناعي حقيقة.

قراءة موصى بها

الكشف عن الثورة: استكشاف عالم الحوسبة دون خادم