مشاركة عبر


أفضل الممارسات من أجل Azure وظائف موثوق بها

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

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

اختر خطة الاستضافة الصحيحة

عند إنشاء تطبيق وظائف في Azure، يجب عليك اختيار خطة استضافة لتطبيقك. الخطة التي تختارها لها تأثير على الأداء والموثوقية والتكلفة. هذه الخيارات هي خطط الاستضافة التي توفرها Azure Functions:

يوصى بشكل عام بخطة Flex Consumption لاستضافة تطبيقات المقياس الديناميكي.

في سياق النظام الأساسي لخدمة التطبيقات، فإن الخطة المتميزة المستخدمة لاستضافة وظائفك ديناميكيا هي خطة Elastic Premium (EP). هناك خطط مخصصة أخرى (خدمة التطبيقات) تسمى Premium. لمزيد من المعلومات، راجع خطة Azure Functions Premium.

تحدد خطة الاستضافة التي تختارها السلوكيات التالية:

  • كيفية قياس تطبيق الوظيفة استنادًا إلى الطلب وكيفية إدارة تخصيص المثيلات.
  • الموارد المتوفرة لكل مثيل تطبيق وظيفي.
  • دعم الوظائف المتقدمة، مثل اتصال الشبكة الظاهرية من Azure.

لمعرفة المزيد حول اختيار خطة الاستضافة الصحيحة ومقارنة مفصلة بين الخطط، راجع خيارات استضافة Azure Functions.

من المهم أن تختار الخطة الصحيحة عند إنشاء تطبيق الوظائف. توفر الوظائف قدرة محدودة على تبديل خطة الاستضافة الخاصة بك، في المقام الأول بين Consumption وخطط Elastic Premium. لمزيد من المعلومات، راجع تخطيط الترحيل.

قم بتكوين التخزين بشكل صحيح

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

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

إعدادات اتصال التخزين

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

يتم دعم هذه الإعدادات فقط عند التشغيل في خطة Premium أو في خطة استهلاك على Windows. لا تتطلبها خطة Flex Consumption، التي تستخدم حاوية تخزين Blob لاستضافة حزم النشر بدلا من مشاركة ملفات Azure.

عند إنشاء تطبيق الدالة الخاص بك إما في مدخل Azure أو باستخدام Azure CLI أو Azure PowerShell، يتم إنشاء هذه الإعدادات لتطبيق الوظائف عند الحاجة. عند إنشاء الموارد الخاصة بك من قالب إدارة موارد Azure (قالب ARM)، تحتاج أيضًا إلى تضمينها WEBSITE_CONTENTAZUREFILECONNECTIONSTRING في القالب.

خلال التوزيع الأول باستخدام قالب ARM، لا تقم بتضمينها WEBSITE_CONTENTSHARE، الذي تم إنشاؤه لك.

يمكنك استخدام أمثلة قالب ARM التالية للمساعدة في تكوين هذه الإعدادات بشكل صحيح:

هام

لا تدعم خدمة Azure Files حاليا الاتصالات المستندة إلى الهوية. تدعم خطة Flex Consumption الهويات المدارة بالكامل. لمزيد من المعلومات، راجع إنشاء تطبيق بدون ملفات Azure.

تكوين حساب التخزين

عند إنشاء تطبيق الوظائف، يجب إنشاء حساب Azure Storage للأغراض العامة، والذي يدعم Blob Storage وQueue Storage وTable Storage أو الارتباط به. تعتمد الدالات على تخزين Azure لعمليات مثل إدارة المشغلات وعمليات تنفيذ دالات التسجيل. تم العثور على سلسلة اتصال حساب التخزين لتطبيق الدالة في AzureWebJobsStorageوWEBSITE_CONTENTAZUREFILECONNECTIONSTRING إعدادات التطبيق.

ضع في اعتبارك الاعتبارات التالية عند إنشاء حساب التخزين هذا:

  • لتقليل زمن الانتقال، أنشئ حساب التخزين في نفس المنطقة التي يعمل بها تطبيق الوظائف.

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

  • بالنسبة للوظائف المشغلة لمراكز الأحداث، لا تستخدم حسابا مع تمكين Data Lake Storage.

معالجة مجموعات البيانات الكبيرة

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

قم بتنظيم وظائفك

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

بالنسبة إلى خطة Consumption and Premium، يتم تحجيم جميع الوظائف في تطبيق الوظائف معًا بشكل ديناميكي.

لمزيد من المعلومات حول كيفية تنظيم الوظائف، راجع أفضل ممارسات وظيفة المؤسسة.

تحسين عمليات النشر

عند توزيع تطبيق وظيفة، من المهم أن تضع في اعتبارك أن وحدة النشر للوظائف في Azure هي تطبيق الوظائف. يتم نشر جميع الوظائف في تطبيق الوظائف في نفس الوقت، عادة من حزمة النشر نفسها.

خذ بعين الاعتبار هذه الخيارات لتوزيع ناجح:

  • تشغيل الدالات الخاصة بك من حزمة التوزيع. يوفر هذا التشغيل من نهج الحزمة الفوائد التالية:

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

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

  • لتقليل وقت تعطل التوزيع والقدرة على التراجع عن عمليات التوزيع، ضع في اعتبارك استخدام فتحات التوزيع. لمزيد من المعلومات، راجع فتحات توزيع Azure Functions.

قم بكتابة وظائف قوية

هناك العديد من مبادئ التصميم التي يمكنك اتباعها عند كتابة التعليمات البرمجية للدالة التي تساعد في الأداء العام وتوافر الوظائف الخاصة بك. وتشمل هذه المبادئ ما يلي:

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

تصميم للأمان

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

انظر بخصوص موضوع التزامن

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

تتطلب منك الخطط المخصصة (خدمة التطبيقات) توفير إمكانية تحجيم تطبيقات الوظائف الخاصة بك.

عدد عمليات العاملين

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

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

تكوين المشغل

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

لمعرفة المزيد حول كيفية معالجة الدالات لتدفقات الرسائل، راجع معالجة الأحداث الموثوق بها في Azure وظائف.

التخطيط للاتصالات

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

اعتبارات خاصة باللغة

للغة التي تختارها، ضع في اعتبارك الاعتبارات التالية:

قم بزيادة التوافر إلى أقصى حد

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

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

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

مراقبة فعالة

توفر Azure وظائف تكاملاً مضمنًا مع تطبيق Azure Insights لمراقبة تنفيذ الدالة وتتبعات مكتوبة من التعليمات البرمجية. لمزيد من المعلومات، راجع مراقبة عمليات التنفيذ في Azure Functions. يوفر Azure Monitor أيضًا مرافق لمراقبة صحة تطبيق الوظائف نفسه. للمزيد من المعلومات، راجع مراقبة دوال Azure.

ينبغي عليك أن تكون على علم بالاعتبارات التالية عند استخدام تكامل التطبيق Application Insights لمراقبة الوظائف الخاصة بك:

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

  • راجع سجلات نتائج تحليلات التطبيق. إذا كانت البيانات التي تتوقع العثور عليها مفقودة، ففكر في ضبط إعدادات أخذ العينات لالتقاط سيناريو المراقبة بشكل أفضل. يمكنك استخدام excludedTypes الإعداد لاستبعاد أنواع معينة من أخذ العينات، مثل Request أو Exception. لمزيد من المعلومات، راجع تكوين أخذ العينات.

كما يسمح لك Azure وظائفبإرسال سجلات تم إنشاؤها بواسطة النظام وإنشاؤها بواسطة المستخدم إلى سجلات مراقب Azure. التكامل مع Azure مراقبة سجلات حاليًا في المعاينة.

البناء في التكرار

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

الخطوات التالية

قم بإدارة تطبيق الوظائف