أفضل الممارسات من أجل Azure وظائف موثوق بها
Azure إن وظائف هي تجربة حساب حسب الطلب، والتي تعتمد على الحدث، وتوسع منصة تطبيقات Azure App Service الحالية مع قدرات لتنفيذ التعليمات البرمجية التي تسببها الأحداث التي تحدث في Azure، وفي خدمة الجهات الخارجية، وفي الأنظمة المحلية. تتيح لك الوظائف إنشاء حلول من خلال الاتصال بمصادر البيانات أو حلول المراسلة، ما يسهل معالجة الأحداث والتفاعل معها. تعمل الوظائف على مراكز بيانات Azure، وهي معقدة مع العديد من المكونات المتكاملة. في بيئة سحابية مستضافة، من المتوقع أن تتم إعادة تشغيل VMs أو نقلها في بعض الأحيان، وستحدث ترقيات الأنظمة. تطبيقات الوظائف الخاصة بك أيضًا من المرجح أن تعتمد على واجهات برمجة التطبيقات الخارجية APIs وخدمات Azure وقواعد البيانات الأخرى، والتي هي أيضًا عرضة للموثوقية الدورية.
تفصّل هذه المقالة بعض أفضل الممارسات لتصميم ونشر تطبيقات الوظائف الفعالة التي تبقى صحية وأداء جيدًا في بيئة مستندة إلى مجموعة النظراء.
اختر خطة الاستضافة الصحيحة
عند إنشاء تطبيق وظائف في Azure، يجب عليك اختيار خطة استضافة لتطبيقك. الخطة التي تختارها لها تأثير على الأداء والموثوقية والتكلفة. هذه هي خطط الاستضافة التي توفرها Azure Functions:
هام
خطة Flex Consumption قيد المعاينة حاليا.
في سياق النظام الأساسي لخدمة التطبيقات، فإن الخطة المتميزة المستخدمة لاستضافة وظائفك ديناميكيا هي خطة Elastic Premium (EP). هناك خطط مخصصة أخرى (خدمة التطبيقات) تسمى Premium. لمعرفة المزيد، راجع مقالة خطة Premium.
تحدد خطة الاستضافة التي تختارها السلوكيات التالية:
- كيفية قياس تطبيق الوظيفة استنادًا إلى الطلب وكيفية إدارة تخصيص المثيلات.
- الموارد المتوفرة لكل مثيل تطبيق وظيفي.
- دعم الوظائف المتقدمة، مثل اتصال الشبكة الظاهرية من Azure.
لمعرفة المزيد حول اختيار خطة الاستضافة الصحيحة ومقارنة مفصلة بين الخطط، راجع خيارات استضافة Azure Functions.
من المهم أن تختار الخطة الصحيحة عند إنشاء تطبيق الوظائف. توفر الوظائف قدرة محدودة على تبديل خطة الاستضافة الخاصة بك، في المقام الأول بين Consumption وخطط Elastic Premium. لمعرفة المزيد، راجع تخطيط الترحيل.
قم بتكوين التخزين بشكل صحيح
تتطلب الوظائف إقران حساب تخزين بتطبيق الوظيفة. يتم استخدام اتصال حساب التخزين من قبل المضيف بواسطة دالات لعمليات مثل إدارة المشغلات وتنفيذ دالة التسجيل. كما أنها تستخدم عند تحجيم تطبيقات الوظائف ديناميكيًا. لمعرفة المزيد، راجع اعتبارات التخزين لـ Azure وظائف.
يمكن أن يؤثر نظام الملفات أو حساب التخزين الذي تم تكوينه بشكل خطأ في تطبيق الوظائف على أداء الوظائف وتوافرها. للحصول على تعليمات حول استكشاف أخطاء حساب تخزين تم تكوينه بشكل غير صحيح، راجع مقالة استكشاف الأخطاء وإصلاحها في التخزين.
إعدادات اتصال التخزين
يمكن تشغيل تطبيقات الوظائف التي يتم قياسها ديناميكيًا إما من نقطة نهاية ملفات Azure في حساب التخزين الخاص بك أو من خوادم الملفات المقترنة بمثيلاتك المتدرجة. يتم التحكم في هذا السلوك بواسطة إعدادات التطبيق التالية:
يتم دعم هذه الإعدادات فقط عند تشغيل في خطة Premium أو في خطة Consumption في Windows.
عند إنشاء تطبيق الدالة الخاص بك إما في مدخل Azure أو باستخدام Azure CLI أو Azure PowerShell، يتم إنشاء هذه الإعدادات لتطبيق الوظائف عند الحاجة. عند إنشاء الموارد الخاصة بك من قالب إدارة موارد Azure (قالب ARM)، تحتاج أيضًا إلى تضمينها WEBSITE_CONTENTAZUREFILECONNECTIONSTRING
في القالب.
خلال التوزيع الأول باستخدام قالب ARM، لا تقم بتضمينها WEBSITE_CONTENTSHARE
، الذي تم إنشاؤه لك.
يمكنك استخدام أمثلة قالب ARM التالية للمساعدة في تكوين هذه الإعدادات بشكل صحيح:
تكوين حساب التخزين
عند إنشاء تطبيق الوظائف، يجب إنشاء حساب Azure Storage للأغراض العامة، والذي يدعم Blob Storage وQueue Storage وTable Storage أو الارتباط به. تعتمد الدالات على تخزين Azure لعمليات مثل إدارة المشغلات وعمليات تنفيذ دالات التسجيل. تم العثور على سلسلة اتصال حساب التخزين لتطبيق الدالة في AzureWebJobsStorage
وWEBSITE_CONTENTAZUREFILECONNECTIONSTRING
إعدادات التطبيق.
ضع في اعتبارك الاعتبارات التالية عند إنشاء حساب التخزين هذا:
لتقليل زمن الانتقال، أنشئ حساب التخزين في نفس المنطقة التي يعمل بها تطبيق الوظائف.
لتحسين الأداء في الإنتاج، استخدم حساب تخزين منفصلاً لكل تطبيق وظيفة. هذا صحيح بشكل خاص مع وظائف Durable Functions ومراكز الأحداث التي تم تشغيلها.
بالنسبة للوظائف المشغلة لمراكز الأحداث، لا تستخدم حسابا مع تمكين 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 لمراقبة تنفيذ الدالة وتتبعات مكتوبة من التعليمات البرمجية. لمعرفة المزيد، يُرجى الرجوع إلى Monitor Azure وظائف. يوفر Azure Monitor أيضًا مرافق لمراقبة صحة تطبيق الوظائف نفسه. لمعرفة المزيد، راجع المراقبة باستخدام مراقبة Azure.
ينبغي عليك أن تكون على علم بالاعتبارات التالية عند استخدام تكامل التطبيق Application Insights لمراقبة الوظائف الخاصة بك:
تأكد من إزالة إعداد تطبيق AzureWebJobsDashboard. تم اعتماد هذا الإعداد في الإصدار الأقدم من الدالات. إذا كان موجودًا،
AzureWebJobsDashboard
فإن الإزالة تحسن أداء الوظائف الخاصة بك.راجع سجلات نتائج تحليلات التطبيق. إذا كانت البيانات التي تتوقع العثور عليها مفقودة، ففكر في ضبط إعدادات أخذ العينات لالتقاط سيناريو المراقبة بشكل أفضل. يمكنك استخدام
excludedTypes
الإعداد لاستبعاد أنواع معينة من أخذ العينات، مثلRequest
أوException
. لمعرفة المزيد، راجع تكوين العينات.
كما يسمح لك Azure وظائفبإرسال سجلات تم إنشاؤها بواسطة النظام وإنشاؤها بواسطة المستخدم إلى سجلات مراقب Azure. التكامل مع Azure مراقبة سجلات حاليًا في المعاينة.
البناء في التكرار
قد تتطلب احتياجات عملك أن تكون وظائفك متاحة دائمًا، حتى في أثناء انقطاع مركز البيانات. لمعرفة كيفية استخدام نهج متعدد المناطق للحفاظ على وظائفك الهامة قيد التشغيل دائمًا، راجع استرداد Azure وظائف الجغرافية ما بعد الكوارث والتوفر العالي.