أفضل ممارسات تكوين تطبيق Azure

تتناول هذه المقالة الأنماط الشائعة وأفضل الممارسات عند استخدام Azure App Configuration.

تجميعات المفاتيح

يوفر تكوين التطبيق خيارين لتنظيم المفاتيح:

  • بادئات المفاتيح
  • بطاقات عنونة

يمكنك استخدام خيار واحد أو كليهما لتجميع المفاتيح.

بادئات المفاتيح هي الأجزاء الأولى من المفاتيح. يمكنك منطقيًا تجميع مجموعة من المفاتيح باستخدام نفس البادئة في أسمائها. يمكن أن تحتوي البادئات على مكونات متعددة متصلة بواسطة محدِّد، مثل /، على غرار مسار URL، لتشكيل مساحة اسم. هذه التسلسلات الهرمية مفيدة عندما تقوم بتخزين مفاتيح للعديد من التطبيقات والخدمات المصغرة في مخزن App Configuration واحد.

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

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

تكوينات قيمة المفتاح

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

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

في التعليمات البرمجية الخاصة بك، يمكنك أولا استرداد قيم المفاتيح دون أي تسميات، ثم استرداد نفس مجموعة قيم المفاتيح مرة ثانية مع تسمية "التطوير". عند استرداد القيم في المرة الثانية، تتم الكتابة فوق القيم السابقة للمفاتيح. يسمح لك نظام تكوين .NET "بتكديس" مجموعات متعددة من بيانات التكوين فوق بعضها البعض. إذا كان هناك مفتاح في أكثر من مجموعة واحدة، يتم استخدام المجموعة الأخيرة التي تحتوي عليه. باستخدام إطار عمل برمجة حديث، مثل .NET، يمكنك الحصول على إمكانية التكديس هذه مجانا إذا كنت تستخدم موفر تكوين أصلي للوصول إلى تكوين التطبيق. يوضح مقتطف التعليمات البرمجية التالي كيف يمكنك تنفيذ التكديس في تطبيق .NET:

// Augment the ConfigurationBuilder with Azure App Configuration
// Pull the connection string from an environment variable
configBuilder.AddAzureAppConfiguration(options => {
    options.Connect(configuration["connection_string"])
           .Select(KeyFilter.Any, LabelFilter.Null)
           .Select(KeyFilter.Any, "Development");
});

يوفر استخدام التسميات لتمكين تكوينات مختلفة لبيئات مختلفة مثالا كاملا.

مراجع إلى بيانات خارجية

تم تصميم App Configuration لتخزين أي بيانات تكوين تحفظها عادة في ملفات التكوين أو متغيرات البيئة. ومع ذلك، قد تكون بعض أنواع البيانات أكثر ملاءمة للإقامة في مصادر أخرى. على سبيل المثال، قم بتخزين الأسرار في Key Vault أو الملفات في Azure Storage أو معلومات العضوية في مجموعات Microsoft Entra أو قوائم العملاء في قاعدة بيانات.

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

تعد ميزة مرجع تكوين التطبيق Key Vault مثالاً في هذه الحالة. يسمح بتحديث الأسرار المطلوبة للتطبيق حسب الضرورة بينما تظل الأسرار الأساسية نفسها في Key Vault.

تمهيد تكوين التطبيق

للوصول إلى مخزن App Configuration، يمكنك استخدام سلسلة الاتصال الخاصة به، والتي تتوفر في مدخل Microsoft Azure. نظرًا لأن سلاسل الاتصال تحتوي على معلومات بيانات الاعتماد، فإنها تعتبر أسرارًا. يجب تخزين هذه الأسرار في Azure Key Vault، ويجب مصادقة التعليمات البرمجية الخاصة بك Key Vault لاستردادها.

الخيار الأفضل هو استخدام ميزة الهويات المدارة في معرف Microsoft Entra. باستخدام الهويات المدارة، تحتاج فقط إلى عنوان URL لنقطة نهاية تكوين التطبيق للوصول إلى مخزن App Configuration. يمكنك تضمين عنوان URL في التعليمات البرمجية للتطبيق الخاص بك (على سبيل المثال، في ملف appsettings.json ). راجع استخدام الهويات المُدارة للوصول إلى تكوين التطبيقللتفاصيل.

وصول خدمة Azure Kubernetes إلى App Configuration

تتوفر الخيارات التالية لأحمال العمل المستضافة في خدمة Azure Kubernetes (AKS) للوصول إلى تكوين تطبيق Azure. تنطبق هذه الخيارات أيضا على Kubernetes بشكل عام.

  • أضف Azure App Configuration Kubernetes Provider إلى نظام مجموعة AKS. يعمل موفر Kubernetes كجراب في نظام المجموعة. يمكنه إنشاء التكوين الخرائط والأسرار من قيم المفاتيح ومراجع Key Vault في متجر App Configuration. ConfigMap وSecret قابلان للاستهلاك كمتغيرات بيئة أو ملفات مثبتة دون الحاجة إلى أي تعديلات على التعليمات البرمجية للتطبيق الخاص بك. إذا كان لديك تطبيقات متعددة تعمل في نفس نظام مجموعة AKS، فيمكنهم جميعا الوصول إلى التكوين الذي تم إنشاؤه الخرائط والأسرار، ما يلغي الحاجة إلى طلبات فردية إلى تكوين التطبيق. يدعم موفر Kubernetes أيضا تحديثات التكوين الديناميكية. هذا هو الخيار الموصى به إذا كان ذلك ممكنا بالنسبة لك.

  • تحديث التطبيق الخاص بك لاستخدام مكتبات موفر Azure App Configuration. تتوفر مكتبات الموفر بالعديد من أطر العمل واللغات، مثل ASP.NET و.NET وJava Spring وJavaScript/Node.js وPython. يمنحك هذا الأسلوب وصولاً كاملاً إلى وظائف App Configuration، بما في ذلك التكوين الديناميكي وإدارة الميزات. لديك تحكم دقيق في البيانات التي يجب تحميلها ومن أي متجر App Configuration لكل تطبيق.

  • التكامل مع توزيع Kubernetes باستخدام Helm. إذا كنت لا ترغب في تحديث التطبيق الخاص بك أو إضافة جراب جديد إلى مجموعة AKS الخاصة بك، فلديك خيار إحضار البيانات من App Configuration إلى مجموعة Kubernetes باستخدام Helm عبر النشر. يمكن هذا الأسلوب تطبيقك من متابعة الوصول إلى التكوين من متغيرات Kubernetes والبيانات السرية. يمكنك تشغيل ترقية Helm كلما أردت أن يتضمن تطبيقك تغييرات تكوين جديدة.

الوصول إلى App Service أو Azure Functions إلى App Configuration

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

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

تقليل الطلبات المقدمة إلى تكوين التطبيق

يمكن أن تؤدي الطلبات المفرطة إلى تكوين التطبيق إلى تقييد أو رسوم زائدة. لتقليل عدد الطلبات المقدمة:

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

  • شاهد مفتاح sentinel واحد، بدلاً من مشاهدة المفاتيح الفردية. تحديث كافة التكوينات فقط إذا تغير مفتاح sentinel. راجع استخدام التكوين الديناميكي في تطبيق ASP.NET Core للحصول على مثال.

  • استخدم Azure Event Grid لتلقي الإعلامات عند تغيير التكوين، بدلاً من التحقق باستمرار من أي تغييرات. لمزيد من المعلومات، راجع استخدام شبكة الأحداث لإشعارات تغيير بيانات تكوين التطبيق.

  • تمكين النسخ المتماثل الجغرافي لمتجر App Configuration ونشر طلباتك عبر نسخ متماثلة متعددة. على سبيل المثال، استخدم نسخة متماثلة مختلفة من كل منطقة جغرافية لتطبيق منشور عالميا. تحتوي كل نسخة متماثلة من App Configuration على حصة طلب منفصلة. يمنحك هذا الإعداد نموذجا لقابلية التوسع والمرونة المحسنة ضد الانقطاعات العابرة والإقليمية.

استيراد بيانات التكوين إلى تكوين التطبيق

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

النشر متعدد المناطق في تكوين التطبيق

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

إنشاء تطبيقات بمرونة عالية

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

  • توفير في المناطق التي تدعم منطقة توفر Azure. تسمح مناطق التوفر للتطبيقات بأن تكون مرنة في مواجهة انقطاع مركز البيانات. يوفر App Configuration تكرار المنطقة لجميع العملاء دون أي رسوم إضافية. يوصى بإنشاء متجر App Configuration في المناطق مع دعم مناطق التوفر. يمكنك العثور على قائمة بالمناطق التي قام فيها App Configuration بتمكين دعم منطقة التوفر.
  • تمكين النسخ المتماثل الجغرافي والسماح للتطبيق الخاص بك بتجاوز الفشل بين النسخ المتماثلة. يمنحك هذا الإعداد نموذجا لقابلية التوسع والمرونة المحسنة ضد حالات الفشل العابرة والانقطاعات الإقليمية. راجع المرونة والتعافي من الكوارث لمزيد من المعلومات.
  • توزيع التكوين مع ممارسات النشر الآمنة. يمكن أن تتسبب تغييرات التكوين غير الصحيحة أو العرضية في تعطل التطبيق بشكل متكرر. يجب تجنب إجراء تغييرات التكوين التي تؤثر على الإنتاج مباشرة من مدخل Azure، على سبيل المثال، كلما أمكن ذلك. في ممارسات النشر الآمنة (SDP)، يمكنك استخدام نموذج نشر التعرض التدريجي لتقليل نصف قطر الانفجار المحتمل للمشكلات التي يسببها التوزيع. إذا كنت تعتمد SDP، يمكنك إنشاء لقطة تكوين واختبارها قبل نشرها في الإنتاج. أثناء النشر، يمكنك تحديث مثيلات التطبيق الخاص بك لالتقاط اللقطة الجديدة تدريجيا. إذا تم الكشف عن مشكلات، يمكنك التراجع عن التغيير عن طريق إعادة نشر آخر لقطة معروفة (LKG). اللقطة غير قابلة للتغيير، ما يضمن التناسق في جميع عمليات التوزيع. يمكنك استخدام اللقطات جنبا إلى جنب مع التكوين الديناميكي. استخدم لقطة للتكوين الأساسي والتكوين الديناميكي لتجاوزات تكوين الطوارئ وعلامات الميزات.
  • تضمين التكوين مع التطبيق الخاص بك. إذا كنت تريد التأكد من أن التطبيق الخاص بك لديه دائما حق الوصول إلى نسخة من التكوين، أو إذا كنت تفضل تجنب تبعية وقت التشغيل على تكوين التطبيق تماما، يمكنك سحب التكوين من App Configuration أثناء وقت الإنشاء أو الإصدار وتضمينه مع التطبيق الخاص بك. لمعرفة المزيد، تحقق من أمثلة دمج App Configuration مع البنية الأساسية لبرنامج ربط العمليات التجارية CI/CD أو توزيع Kubernetes.
  • استخدم موفري App Configuration. تلعب التطبيقات دورا بالغ الأهمية في تحقيق مرونة عالية لأنها يمكن أن تمثل المشكلات التي تنشأ أثناء وقت التشغيل، مثل مشكلات الشبكات، والاستجابة للفشل بسرعة أكبر. يقدم موفرو App Configuration مجموعة من ميزات المرونة المضمنة، بما في ذلك اكتشاف النسخ المتماثلة التلقائية وتجاوز فشل النسخة المتماثلة وإعادة محاولة بدء التشغيل مع مهلات قابلة للتخصيص والتخزين المؤقت للتكوين والاستراتيجيات التكيفية لتحديث التكوين الموثوق به. يوصى بشدة باستخدام موفري App Configuration للاستفادة من هذه الميزات. إذا لم يكن هذا خيارا، يجب أن تفكر في تنفيذ ميزات مماثلة في الحل المخصص لتحقيق أعلى مستوى من المرونة.

تطبيقات العميل في تكوين التطبيق

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

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

التطبيقات متعددة المستأجرين في تكوين التطبيق

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

Configuration as Code

إن Configuration as Code هو ممارسة لإدارة ملفات التكوين ضمن نظام التحكم بالمصادر، على سبيل المثال، مستودع git. يمنحك فوائد مثل إمكانية التتبع وعملية الموافقة على أي تغييرات في التكوين. إذا كنت تعتمد التكوين كتعليق برمجي، فإن تكوين التطبيق يحتوي على أدوات لمساعدتك في إدارة بيانات التكوين في الملفات ونشرها كجزء من عملية الإنشاء أو الإصدار أو CI/CD. بهذه الطريقة، يمكن للتطبيقات الوصول إلى أحدث البيانات من متجر (متاجر) App Configuration.

  • بالنسبة إلى GitHub، يمكنك تمكين إجراء GitHub Sync App Configuration لمستودعك. تتم مزامنة التغييرات على ملفات التكوين إلى App Configuration تلقائيا كلما تم دمج طلب سحب.
  • بالنسبة إلى Azure DevOps، يمكنك تضمين Azure App Configuration Push، وهي مهمة البنية الأساسية لبرنامج ربط العمليات التجارية لـ Azure، في البنية الأساسية لبرنامج ربط العمليات التجارية الخاصة بك أو إصدارها لمزامنة البيانات.
  • يمكنك أيضًا استيراد ملفات التكوين إلى App Configuration باستخدام Azure CLI كجزء من نظام CI/CD. لمزيد من المعلومات، راجع استيراد az appconfig kv.

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

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