ما هي الوظائف بدون خادم؟
في هذه المقالة، سنتحدث عن الحوسبة بدون خادم، وبنى البرامج المختلفة، والوظائف بدون خادم، وفوائدها، وحالات الاستخدام. في الجزء الثاني من المقالة، سنتعلم كيفية إنشاء واجهة خلفية بدون خادم على Back4app باستخدام وظائف Cloud Code.
Contents
- 1 ما هي الدالة بدون خادم؟
- 2 كيف تعمل الوظائف بدون خادم؟
- 3 ما هي البنى البرمجية المختلفة؟
- 4 ما هي فوائد الوظائف بدون خادم؟
- 5 ما هي بعض حالات استخدام الوظائف بدون خادم؟
- 6 ما هي الأمثلة على البيئات بدون خادم؟
- 7 بناء واجهة خلفية بدون خادم على Back4app
- 8 الخاتمة
- 9 ما هي الوظائف بدون خوادم؟
- 10 لماذا تستخدم بنية الخوادم بدون خوادم؟
- 11 ما هي البنى البرمجية المختلفة؟
- 12 ما هي فوائد الوظائف بدون خوادم؟
- 13 كيف تنشر الوظائف بدون خوادم؟
ما هي الدالة بدون خادم؟
الدالة بدون خادم هي جزء من التعليمات البرمجية التي تعتمد على الأحداث وتخدم غرضًا واحدًا. يمكن تشغيلها من خلال أحداث محددة مثل طلبات HTTP أو تغييرات قاعدة البيانات أو رسائل أخرى. تتم كتابة هذه الدوال بواسطة مطور برمجيات ويتم نشرها لاحقاً على السحابة. ثم يدير موفر السحابة البنية التحتية والأمان ويتولى تشغيل التعليمات البرمجية ويزيد الموارد تلقائيًا بناءً على الطلب.
غالبًا ما يتم الخلط بين الوظائف بدون خادم والحوسبة بدون خادم. وفي حين أن المصطلحين مرتبطان ببعضهما البعض إلا أنه لا يمكن استخدامهما بالتبادل. الحوسبة بدون خادم هي نموذج حوسبة سحابية حيث يدير مزودو الخدمات السحابية البنية التحتية المطلوبة لتشغيل التطبيقات، بينما الوظائف بدون خادم هي نوع من الحوسبة بدون خادم تسمح للمطورين بتشغيل ونشر أجزاء صغيرة من التعليمات البرمجية بسهولة في السحابة.
كيف تعمل الوظائف بدون خادم؟
تنقسم معظم التطبيقات الحديثة إلى قسمين: الواجهة الأمامية والواجهة الخلفية. الواجهة الأمامية هي ما يراه المستخدم ويمكنه التفاعل معه، بينما الواجهة الخلفية هي كل ما لا يمكن للمستخدم رؤيته. يتضمن ذلك منطق الأعمال وتخزين البيانات وقواعد البيانات وقواعد البيانات وواجهات برمجة التطبيقات وما إلى ذلك.
تعمل الدوال بدون خادم على تبسيط مكون الواجهة الخلفية للتطبيقات البرمجية، وتقسيم الواجهة الخلفية إلى عدة دوال أحادية الغرض قابلة لإعادة الاستخدام. يمكن ربط هذه الوظائف فيما بعد لأداء مهام معقدة.
أسهل طريقة لفهم الوظائف بدون خادم هي النظر إلى مثال واقعي. لنفترض أن لدينا متجرًا للتجارة الإلكترونية حيث يمكن للمستخدم عرض المنتجات، وإضافة منتجات إلى عربة التسوق، وإزالة المنتجات من عربة التسوق، والدفع.
ستتضمن الواجهة الخلفية بدون خادم على الأرجح الوظائف التالية:
getProductList() -> retrieves the products from the database
getProduct(productId) -> retrieves a specific product from the database
getCart(user) -> returns the products in the user's cart
addToCart(user, productId) -> adds a product to the user's cart
removeFromCart(user, productId) -> removes the product from the user's cart
clearCart(user) -> clears user's cart
وبعد ذلك سيكون لدينا أيضًا وظائف أكثر تعقيدًا تستخدم وظائف أخرى بدون خادم:
checkout()
cart = getCart(user)
finalizeCheckout(user, cart) -> deducts money from user's account
clearCart(user)
sendConfirmationEmail(user, cart) -> sends a confirmation email to the user
حسنًا، ولكن كيف تعمل الوظائف بدون خادم تحت الغطاء؟
تحت الغطاء، تعمل الدوال بدون خادم من خلال الاستفادة من تقنية الحاويات، والتي تتضمن تجميع التعليمات البرمجية في حاويات معزولة وخفيفة الوزن يمكن نشرها وتوسيع نطاقها بسهولة عند الطلب. عندما يتم تشغيل وظيفة بدون خادم، يقوم موفر السحابة بإنشاء نسخة جديدة من الحاوية وتشغيل التعليمات البرمجية فيها، ثم يغلق الحاوية عند انتهاء تنفيذ التعليمات البرمجية.
عادةً ما يتعامل موفر السحابة مع جميع جوانب إدارة البنية التحتية الأساسية، بما في ذلك التوسع، وموازنة التحميل، وتخصيص الموارد، لذلك لا يتعين على المطورين القلق بشأن تكوين الخوادم أو إدارتها. بدلاً من ذلك، يقوم المطورون ببساطة بكتابة التعليمات البرمجية وتحميلها إلى موفر السحابة وتحديد شروط التشغيل لوقت تشغيل التعليمات البرمجية.
ما هي البنى البرمجية المختلفة؟
بالإضافة إلى الوظائف بدون خادم، لدينا أيضًا بنية متجانسة وبنية الخدمات المصغرة. لنلقِ نظرة عليها.
بنية متجانسة
في البنية المتجانسة، يتم بناء التطبيق كوحدة واحدة مع دمج جميع المكونات بإحكام. يتم دمج جميع الوظائف في قاعدة كود واحدة، ويتم نشر التطبيق كحزمة واحدة. تعتبر البنية المتجانسة سهلة البناء والصيانة، ولكن يمكن أن تصبح معقدة وصعبة التوسع مع نمو التطبيق.
بنية الخدمات المصغرة
بنية الخدمات المصغرة هي نهج لبناء تطبيقات البرمجيات كمجموعة من الخدمات الصغيرة المستقلة التي تتواصل مع بعضها البعض من خلال واجهات برمجة التطبيقات. كل خدمة مصغرة مسؤولة عن وظيفة محددة للتطبيق ويمكن تطويرها ونشرها وتوسيع نطاقها بشكل مستقل. يسمح هذا النهج بمزيد من المرونة وقابلية التوسع والمرونة، ولكنه يمكن أن يؤدي أيضًا إلى تعقيدات من حيث اتصال الخدمة وإدارتها.
وفي الختام، فإن التطبيقات المتجانسة هي الأنسب للمشاريع الأبسط التي لا تحتاج إلى التوسع كثيراً. من ناحية أخرى، تعد الخدمات المصغرة والخوادم بدون خادم أكثر ملاءمة بشكل عام للمشاريع الأكثر تعقيدًا التي تحتاج إلى أن تكون قابلة للتطوير والمرونة بشكل كبير. وبالإضافة إلى جميع مزايا الخدمات المصغرة، فإن البنية بدون خادم تلخص أيضًا إدارة البنية التحتية. وبالتالي توفر لك الكثير من الوقت والمال.
ما هي فوائد الوظائف بدون خادم؟
تأتي الوظائف كخدمة (FaaS) بالعديد من المزايا.
تطوير أسرع
تسمح الدوال بدون خادم بتطوير ونشر أسرع نظرًا لعدم الحاجة إلى إدارة البنية التحتية أو تهيئة الخوادم أو إعداد التوسع أو إدارة الخوادم. نظرًا لأن الدوال بدون خادم هي أجزاء صغيرة من التعليمات البرمجية التي تخدم غرضًا واحدًا، يمكن اختبارها وتصحيحها بسهولة. والأفضل من ذلك كله، يمكن دمج الدوال بدون خادم بسهولة مع الخدمات السحابية الأخرى أو واجهات برمجة التطبيقات الخاصة بطرف ثالث، مما يزيح الكثير من المشاكل الشائعة.
قابلية توسع وتوافر عالية
يمكن للوظائف بدون خادم التعامل مع عدد كبير من الطلبات وتوسيع نطاقها تلقائيًا بناءً على الطلب. وهذا يضمن قدرة التطبيق على استيعاب أي مستوى من حركة المرور. علاوة على ذلك، إذا لم يكن هناك أحد يستخدم خدمتك، يمكن للبيئة أن تتوسع إلى الصفر، مما يوفر لك الكثير من المال.
من الممكن أيضاً نشر وظائفك كخدمة (FaaS) في مناطق متعددة. يمكن أن يساعدك ذلك على تحسين توافر تطبيقك من خلال توزيع وظائفك في جميع أنحاء العالم.
مرونة أكبر
تسمح الوظائف بدون خادم للمطوّرين باختيار لغة البرمجة والأدوات التي تناسب احتياجاتهم. يدعم معظم بائعي الخوادم بدون خادم لغات متعددة مثل JavaScript وJava وPython وGo و .NET. وهذا يوفر مرونة أكبر في تطوير التطبيقات ونشرها.
فعالية التكلفة
الخوادم هي البنية الأكثر فعالية من حيث التكلفة لأنك تدفع فقط مقابل ما تستهلكه. هذا هو وقت تشغيل وظائفك والخدمات المدارة الأخرى التي تستخدمها وظائفك. بالإضافة إلى ذلك، لا تحتاج إلى الدفع مقابل الموارد الخاملة.
ما هي بعض حالات استخدام الوظائف بدون خادم؟
يمكن استخدام الدوال بدون خادم في أي مشروع عملياً. يمكنك استخدام الدوال بدون خادم لبناء المشروع من الألف إلى الياء أو لمهام محددة فقط. تتضمن حالات الاستخدام الرئيسية ما يلي:
- تطبيقات الويب
- إنشاء واجهات برمجة تطبيقات RESTful APIs
- المهام المستندة إلى المشغل
- أتمتة المهام المجدولة
- المعالجة غير المتزامنة
- إنترنت الأشياء (IoT)
- CI/CD
ترحل معظم فرق المطورين إلى الخوادم بدون خادم على مراحل. يقومون بترحيل مهمة تلو الأخرى حتى تنتفي الحاجة إلى الخوادم التقليدية.
ما هي الأمثلة على البيئات بدون خادم؟
المنصة كخدمة (PaaS)
النظام الأساسي كخدمة (PaaS) هو حل حوسبة سحابية مفيد يوفر للمستخدمين القدرة على إنشاء التطبيقات وإدارتها ونشرها في بيئة قائمة على السحابة.
فهو يوفر أدوات مهيأة مسبقًا لتطوير التطبيقات وتخصيصها واختبارها، مما يوفر الكثير من الوقت الذي يقضيه في إدارة البنية التحتية.
لا يختلف تطوير تطبيق سيتم نشره على PaaS كثيرًا عن إنشاء تطبيق تقليدي. لا يدعم بائعو PaaS الوظائف بدون خادم خارج الصندوق.
تشمل خدمات PaaS: Heroku، وAWS Elastic Beanstalk، وDigitalOcean App Platform، وFly.io.
الواجهة الخلفية كخدمة (BaaS)
تعمل BaaS على تبسيط وتبسيط عملية تطوير الواجهة الخلفية من خلال توفير منصة لإدارة البنية التحتية السحابية.
فهي تتولى جميع المهام الشاقة المرتبطة ببناء الواجهة الخلفية، مما يسمح للمطورين بالتركيز على إنشاء التطبيقات. من خلال أتمتة العديد من هذه العمليات، تساعد BaaS المطورين على إنشاء تطبيقات قوية بسرعة وكفاءة.
تقدم المنصة مجموعة واسعة من الميزات بما في ذلك إدارة المستخدمين، والإشعارات، وتكامل الوسائط الاجتماعية، والتخزين. مما يجعلها خياراً مثالياً للشركات التي تتطلع إلى بناء حضورها الرقمي. بالإضافة إلى ذلك، فهي توفر الراحة وسهولة الاستخدام مما يجعلها في متناول المستخدمين في جميع المجالات.
يتحرر المطورون من الحاجة إلى القلق بشأن البنية التحتية الخلفية ويمكنهم بدلاً من ذلك تركيز جهودهم على إنشاء الواجهة الأمامية لمشاريعهم. وهذا يمكّنهم من التركيز على الأعمال الأساسية دون الحاجة إلى تكريس الوقت والطاقة لمهام أخرى.
يسمح لنا بعض موردي خدمات BaaS أيضاً بنشر وظائف بدون خادم:
- يحتوي Back4app على Cloud Code functions
- يحتوي Firebase على Google Cloud Functions
- يحتوي AWS Amplify على AWS Lambda
ومن بين موردي خدمات BaaS الآخرين Supabase وKinvey وParse.
الوظيفة كخدمة (FaaS)
الوظيفة كخدمة (FaaS) هو نموذج حوسبة سحابية مخصص للوظائف بدون خادم. تسمح FaaS للمطورين بالتركيز على كتابة الوظائف الفردية ونشرها بدلاً من بناء وإدارة حزمة تطبيقات كاملة. وعادةً ما تتكامل الوظائف بدون خادم مع واجهات برمجة التطبيقات التابعة لجهات خارجية وخدمات سحابية أخرى. يمكن لنموذج الحوسبة هذا أن يتوسع تلقائياً وبسرعة لاستيعاب أي حركة مرور.
تكمن الاختلافات الرئيسية بين BaaS و FaaS في:
- بناء التطبيق
- قابلية التوسع
- نموذج التسعير
يتم تشغيل الوظائف بدون خادم في حاويات، وهي أكثر قابلية للتطوير، وأكثر فعالية من حيث التكلفة لأنك تدفع فقط مقابل وقت تشغيل وظائفك. من ناحية أخرى، تحتوي BaaS على الكثير من الميزات المضمنة مثل إدارة المستخدم، والإشعارات الفورية، وتكامل الوسائط الاجتماعية، وغيرها من الأدوات الجاهزة التي تتيح لك إنشاء وظائف خلفية بسرعة. علاوة على ذلك، فإن BaaS سهلة الاستخدام للغاية.
بعض أمثلة FaaS تشمل: AWS Lambda، وGoogle Cloud Functions، وAzure Functions.
بناء واجهة خلفية بدون خادم على Back4app
في هذا القسم من البرنامج التعليمي، سنشرح في هذا القسم من البرنامج التعليمي كيفية ترميز ونشر وظائف Cloud Code على Back4app. بالإضافة إلى ذلك، سنتعلم كيفية توصيل واجهة أمامية بواجهة خلفية بدون خادم.
الأهداف:
بحلول نهاية هذا البرنامج التعليمي، ستكون قادراً على:
- شرح ما هي وظائف الرمز السحابي وكيفية عملها
- قم بترميز دوال الشفرة السحابية الخاصة بك التي يمكنها معالجة قاعدة البيانات
- استخدام دوال الرمز السحابي لجلب البيانات من واجهات برمجة التطبيقات الخارجية
- إنشاء مهامك السحابية الخاصة بك وجدولتها
- ربط مشروع واجهة أمامية بواجهة خلفية بدون خادم
ما هو تطبيق Back4app؟
Back4app هي منصة رائدة في مجال BaaS – Backend as a Service توفر للمطورين الأدوات والميزات التي يحتاجونها لإنشاء تطبيقات الويب وتطبيقات الجوال بسهولة.
بفضل مجموعة مزاياه الشاملة، فإنه يمكّن المطورين من التركيز على الجوانب الرئيسية لأعمالهم بدلاً من القلق بشأن تعقيدات الواجهة الخلفية أو مشكلات البنية التحتية. إنها واحدة من أكثر حلول BaaS مفتوحة المصدر المتاحة اليوم تفضيلاً.
يأتي الحل الشامل مع لوحة تحكم تفاعلية وواجهة CLI – واجهة سطر أوامر مرنة لتحقيق أقصى قدر من الراحة. بالإضافة إلى ذلك، فإنه يوفر حزم SDKs المتوافقة مع React Native وFlutter وNode.js وAngular وiOS وAndroid وغيرها – مما يجعل التكامل في الأنظمة الحالية أمرًا سهلاً!
تتضمن ميزات Back4app الأساسية قاعدة بيانات على غرار جداول البيانات، وواجهات برمجة تطبيقات GraphQL و REST، والاستعلامات المباشرة، والمصادقة مع خيارات تسجيل الدخول الاجتماعي، وقابلية التوسع للاستضافة، والإشعارات، وكلها متوفرة في هذه المنصة القوية.
لمزيد من المعلومات الإضافية يُرجى قراءة ميزات تطبيق Back4app.
يقدم Back4app نموذجًا فعالاً من حيث التكلفة لجميع أنواع التطبيقات، بدءًا من الصغيرة إلى الكبيرة. فهي توفر خطة مجانية مثالية لتطوير وتجربة المنصة.
مقدمة المشروع
سنقوم ببناء تطبيق بسيط لإدارة محطات الطقس. سننشئ أولاً محطات طقس افتراضية ثم نستخدم WeatherAPI للحصول على معلومات الطقس الفعلية في مواقع محطات الطقس. لتعريف منطق تطبيقنا سنستخدم دوال الرموز السحابية والوظائف السحابية. في النهاية، سنوضح كيفية توصيل مشروع الواجهة الأمامية بسهولة بواجهة خلفية بدون خادم.
إنشاء تطبيق
إذا لم يكن لديك حساب على Back4app حتى الآن، فقم بالتسجيل الآن للاستفادة من خدماتهم المجانية. بخلاف ذلك، قم بتسجيل الدخول إلى حسابك الحالي وتابع الخطوات التالية.
لبدء استخدام Back4app، ستحتاج إلى إنشاء تطبيق. سجّل الدخول إلى لوحة التحكم الخاصة بك لعرض قائمة التطبيقات وانقر على “إنشاء تطبيق جديد” لبدء إنشاء تطبيقك.
بما أننا سنستخدم إطار عمل Parse لبناء تطبيقنا اختر “الواجهة الخلفية كخدمة”.
بعد ذلك، أدخل اسمًا مخصصًا للتطبيق، وحدد “قاعدة بيانات NoSQL” كقاعدة بياناتك، وأخيرًا انقر على “إنشاء”.
سيقوم Back4app بإعداد جميع المكونات الضرورية لتطبيقك بما في ذلك قاعدة البيانات، وطبقة التطبيق، والتوسع، والنسخ الاحتياطية، والأمان. لا يستغرق الأمر سوى وقت قصير لإنجازه.
بمجرد اكتمال طلبك، ستتم إعادة توجيهك إلى لوحة التحكم الخاصة بتطبيقك.
قاعدة البيانات
دعنا نحدد نماذج قاعدة البيانات الخاصة بنا. سننشئ نموذجين:
- تمثل
WeatherStation محطة
طقس افتراضية موجودة في موقع ما. - يمثل
WeatherRecord
قياسًا للطقس فيمحطة طقس
محددة.
انتقل إلى “قاعدة البيانات” وانقر على “إنشاء فئة”. قم بتسميته WeatherStation،
وتأكد من تمكين “قراءة وكتابة عامة” وأضف الحقول التالية إليه:
+---------------------------+-----------------+---------------+----------+
| Data type | Name | Default value | Required |
+---------------------------+-----------------+---------------+----------+
| String | name | <leave blank> | yes |
+---------------------------+-----------------+---------------+----------+
| String | location | <leave blank> | yes |
+---------------------------+-----------------+---------------+----------+
بعد ذلك، اتبع نفس الخطوات لإنشاء صنف آخر باسم WeatherRecord
مع الحقول التالية:
+---------------------------+-----------------+---------------+----------+
| Data type | Name | Default value | Required |
+---------------------------+-----------------+---------------+----------+
| Pointer -> WeatherStation | weatherStation | <leave blank> | yes |
+---------------------------+-----------------+---------------+----------+
| String | weatherText | <leave blank> | yes |
+---------------------------+-----------------+---------------+----------+
| String | weatherIcon | <leave blank> | yes |
+---------------------------+-----------------+---------------+----------+
| Number | weatherCode | <leave blank> | yes |
+---------------------------+-----------------+---------------+----------+
وأخيراً، انتقل إلى نموذج WeatherStation
وأنشئ محطتي طقس. مثال:
+---------------------------+---------------+
| name | location |
+---------------------------+---------------+
| Sunnyvale Station | sunnyvale |
+---------------------------+---------------+
| Mountain View Station | mountain view |
+---------------------------+---------------+
عظيم، هذا كل شيء بالنسبة لقاعدة البيانات.
WeatherAPI
لجلب معلومات الطقس الحالية سنستخدم واجهة برمجة تطبيقات مجانية تسمى WeatherAPI.
ستتطلب الخطوات التالية أن يكون لديك حساب على WeatherAPI. إذا لم يكن لديك حساب حتى الآن، فقم بالتسجيل وإلا فقم بتسجيل الدخول إلى لوحة التحكم الخاصة بك.
بمجرد تسجيل الدخول، لاحظ مفتاح API الخاص بك:
بعد ذلك، افتح المحطة الطرفية وحاول جلب معلومات الطقس الحالية ل “Sunnyvale” باستخدام مفتاح API الخاص بك:
curl "https://api.weatherapi.com/v1/current.json?key=<your_api_key>&q=<location>&aqi=no"
# Example:
# curl "https://api.weatherapi.com/v1/current.json?key=354fc376a4c&q=Sunnyvale&aqi=no"
يجب أن تتلقى رداً مشابهاً لهذا الرد:
{
"location": {
"name": "Sunnyvale",
"region": "California",
"country": "United States of America",
"lat": 37.37,
"lon": -122.04,
},
"current": {
"temp_c": 7.0,
"temp_f": 44.6,
"is_day": 1,
"condition": {
"text": "Light rain",
"icon": "//cdn.weatherapi.com/weather/64x64/day/296.png",
"code": 1183
},
...
}
}
في القسم التالي من المقالة، سنستخدم دوال الشيفرة السحابية لجلب معلومات الطقس من واجهة برمجة الطقس WeatherAPI ثم تخزينها في قاعدة البيانات.
رمز السحابة
دوال الرمز السحابي هي ميزة قوية في Parse Server تتيح للمطورين تنفيذ شيفرة JavaScript مخصصة من جانب الخادم. يمكن للمطوّرين استخدام هذه الدوال لتنفيذ منطق الأعمال، والتحقق من صحة البيانات، ومعالجة البيانات المعقدة، وبناء خلفيات بدون خادم بشكل عام.
انتقل إلى لوحة تحكم تطبيق Back4app وحدد “الوظائف واستضافة الويب” ضمن “الرمز السحابي” على الشريط الجانبي.
واجهة مستخدم Back4app Cloud Code سهلة الاستخدام. على الجانب الأيسر من الشاشة، يمكنك رؤية بنية الدليل. بشكل افتراضي هناك دليلان:
- السحابة هو دليل لجميع التعليمات البرمجية السحابية
- عام هو دليل للملفات العامة مثل الصور وأوراق الأنماط وغيرها
وعلى الجانب الأيمن من الشاشة، لديك محرر أكواد مدمج.
تحديد وظائف الرمز السحابي
سنقوم بتعريف الدوال التالية:
مواقع الطقس
تُرجع قائمة بمواقع محطات الطقس.- تُرجع
معلومات الطقس weatherInfo
تقرير الطقس لموقع معين.
ولكن قبل ذلك دعنا نثبت حزمة طرف ثالث تسمى أكسيوس
. أكسيوس هو عميل HTTP قائم على الوعود لـ HTTP لـ JavaScript الذي يبسّط إلى حد كبير إنشاء طلبات HTTP.
أنشئ ملفًا جديدًا باسم package.json داخل مجلد السحابة وضع ما يلي بداخله:
{
"dependencies": {
"axios": "*"
}
}
بعد ذلك، عرّف دوال الشيفرة السحابية في Cloud/main.js هكذا:
// cloud/main.js
const axios = require("axios");
// make sure to replace `<api_key>` with your actual WeatherAPI key
const WEATHER_API_BASE = "https://api.weatherapi.com/v1/current.json?key=<api_key>";
Parse.Cloud.define("weatherLocations", async (request) => {
const WeatherStation = Parse.Object.extend("WeatherStation");
const weatherStationQuery = new Parse.Query(WeatherStation);
const weatherStationResults = await weatherStationQuery.find();
return weatherStationResults.map(result => result.get("location"))
});
Parse.Cloud.define("weatherInfo", async (request) => {
let location = request.params.location;
if (!location) {
throw new Parse.Error(400, "Location not provided.");
}
const WeatherStation = Parse.Object.extend("WeatherStation");
const weatherStationQuery = new Parse.Query(WeatherStation);
weatherStationQuery.equalTo("location", location);
const weatherStationResults = await weatherStationQuery.find();
if (weatherStationResults.length == 0) {
throw new Parse.Error(400, "Invalid location.");
}
const WeatherRecord = Parse.Object.extend("WeatherRecord");
const weatherRecordQuery = new Parse.Query(WeatherRecord);
weatherRecordQuery.equalTo("weatherStation", weatherStationResults[0]);
weatherRecordQuery.descending("createdAt");
weatherRecordQuery.limit(5);
const weatherRecordResults = await weatherRecordQuery.find();
return weatherRecordResults;
});
وأخيراً، انقر على “نشر” في أسفل يمين الشاشة لنشر وظائفك على Back4app.
وظيفة السحابة
تسمح الوظائف السحابية للمطورين بتشغيل وظائف في الخلفية، مثل إرسال إشعارات فورية أو معالجة البيانات. تتم كتابة هذه المهام بشكل مشابه لوظائف التعليمات البرمجية السحابية ويمكن جدولتها للتشغيل لمرة واحدة أو بشكل متكرر.
لنقم بإنشاء وظيفة سحابية تقيس حالة الطقس في جميع محطات الطقس لدينا كل 30 دقيقة.
تعريف الوظيفة السحابية
حدد “كود السحابة” على الشريط الجانبي والصق الكود التالي في أسفل Cloud/main.js:
// cloud/main.js
// ...
Parse.Cloud.job("weatherCapture", async (request) => {
const {params, headers, log, message} = request;
message("weatherCapture just started...");
const WeatherStation = Parse.Object.extend("WeatherStation");
const weatherStationQuery = new Parse.Query(WeatherStation);
const weatherStationResults = await weatherStationQuery.find();
for (let i = 0; i < weatherStationResults.length; i++) {
let weatherStation = weatherStationResults[i];
try {
const response = await axios.get(
WEATHER_API_BASE + "&q=" + weatherStation.get("location") + "&aqi=no"
);
const currentWeather = response.data.current.condition;
let icon = currentWeather.icon
.replace("//", "https://")
.replace("64x64", "128x128");
const WeatherRecord = Parse.Object.extend("WeatherRecord");
const weatherRecord = new WeatherRecord();
weatherRecord.set("weatherStation", weatherStation);
weatherRecord.set("weatherText", currentWeather.text);
weatherRecord.set("weatherIcon", icon);
weatherRecord.set("weatherCode", currentWeather.code);
weatherRecord.save();
} catch (error) {
throw new Parse.Error(400, error);
}
}
message("weatherCapture just finished!");
});
يُعرّف هذا الرمز مهمة سحابية جديدة باسم weatherCapture
. تقوم المهمة بحلقات عبر جميع محطات الطقس،
وتجلب معلومات الطقس من WeatherAPI، وتخزنها في قاعدة البيانات.
لاختبار ما إذا كان يعمل انتقل إلى “الوظائف > جميع الوظائف” على الشريط الجانبي وحاول تشغيل المهمة. إذا سار كل شيء على ما يرام يجب أن يكون هناك سجلان
جديدان للطقس
في قاعدة البيانات بعد ذلك.
جدولة وظيفة السحابة
لنقم بجدولة المهمة لتعمل كل 30 دقيقة.
حدد “إعدادات التطبيق > إعدادات الخادم” على الشريط الجانبي وابحث عن “وظائف الخلفية”. ثم انقر على زر “الإعدادات”:
بعد ذلك، قم بجدولة مهمة جديدة بالتفاصيل التالية:
- الوصف: يقيس الطقس في جميع المحطات
- وظيفة السحابة: التقاط الطقس
- المعلمات: اتركها فارغة
- وقت الجدول الزمني: البدء فوراً
- هل يجب أن تتكرر؟ نعم
- التردد: الفاصل الزمني
- في أي فترة زمنية ستتكرر؟ 30 دقيقة
هذا كل شيء. سيتم تشغيل مهمة weatherCapture
الآن كل 30 دقيقة.
انتهينا الآن من الواجهة الخلفية بدون خادم. في القسم التالي، سنلقي نظرة على كيفية توصيل الواجهة الأمامية بالواجهة الخلفية بدون خادم.
الواجهة الأمامية
بناء واجهة أمامية مخصصة من الألف إلى الياء خارج نطاق هذا البرنامج التعليمي. ومع ذلك، سأصف الخطوات الأساسية لربط واجهة أمامية JavaScript بواجهة خلفية بدون خادم.
import Parse from "parse/dist/parse.min.js";
// to get the keys navigate to your Back4app app > App Settings > Security & Keys
Parse.initialize(
"<your_app_id>", // replace me
"<your_javascript_key>", // replace me
);
Parse.serverURL = "https://parseapi.back4app.com/";
- يمكنك بعد ذلك استدعاء دوال الرمز السحابي مثل هذا:
const fetchWeatherLocations = async () => {
return await Parse.Cloud.run("weatherLocations");
};
لمزيد من المعلومات راجع الوثائق الرسمية.
لقد أعددت أيضًا مشروعًا نموذجيًا للواجهة الخلفية لمحطة الطقس. يمكن الوصول إلى المشروع على GitHub. يحتوي ملف README.md على جميع المعلومات التي تحتاجها لتشغيل المشروع محليًا. لا تتردد في الحصول على شوكة المشروع والتلاعب به.
الخاتمة
لقد أصبحت الحوسبة بدون خادم حلاً شائعاً بشكل متزايد للمطورين الذين يتطلعون إلى إنشاء التطبيقات ونشرها دون القلق بشأن إدارة الخوادم.
في هذه المقالة، استكشفنا في هذه المقالة العديد من البنى البرمجية المختلفة، وألقينا نظرة على الوظائف بدون خادم، وسلطنا الضوء على فوائدها وحالات استخدامها. وأخيرًا، أوضحنا كيفية إنشاء واجهة خلفية بسيطة بدون خادم على Back4app باستخدام وظائف Cloud Code.
يمكن العثور على الكود المصدري النهائي في مستودع back4app-serverless على GitHub.
الخطوات المستقبلية
- انظر إلى Parse Server Security لجعل الواجهة الخلفية أكثر أمانًا.
- ألقِ نظرة على الدليل النهائي لنشر تطبيقات Docker لمعرفة كيفية إنشاء واجهة أمامية مخصصة ونشرها على حاويات Back4app.
- تعرّف على مشغلات Parse.
الأسئلة الشائعة
ما هي الوظائف بدون خوادم؟
الوظائف بدون خوادم هي قطع من الكود المدفوعة بالأحداث والتي تخدم غرضًا واحدًا. يمكن تشغيلها بواسطة أحداث محددة مثل طلبات HTTP، أو تغييرات في قاعدة البيانات، أو رسائل أخرى.
لماذا تستخدم بنية الخوادم بدون خوادم؟
تسمح بنية الخوادم بدون خوادم للمطورين بالتركيز على تطبيقاتهم بدلاً من القلق بشأن البنية التحتية أو النشر. بالإضافة إلى ذلك، فإن التطبيقات التي لا تحتوي على خوادم قابلة للتوسع ومرنة.
ما هي البنى البرمجية المختلفة؟
البنية الأحادية، بنية الخدمات المصغرة، وبنية الخوادم بدون خوادم. كل منها له مزايا وعيوب يجب أخذها في الاعتبار عند بدء مشروع.
ما هي فوائد الوظائف بدون خوادم؟
– تطوير أسرع
– قابلية التوسع العالية & التوافر
– مرونة أكبر
– فعالية من حيث التكلفة
كيف تنشر الوظائف بدون خوادم؟
1. أنشئ حسابًا على Back4app.
2. استخدم محرر الكود السحابي من Back4app أو IDE محلي لكتابة الوظائف بدون خوادم.
3. استخدم محرر الكود السحابي من Back4app أو قم بتشغيل b4a deploy
لنشر وظائفك.
4. اختبر الوظائف.