في صناعة حيث تحدد دورات التطوير السريعة والموثوقة والتكرارية النجاح، فإن القدرة على نشر البرمجيات مع تقليل المخاطر لا تقدر بثمن. أصبحت أعلام الميزات جزءًا أساسيًا من أدوات المطورين الحديثة، حيث تقدم نهجًا مرنًا لتفعيل وتعطيل الميزات ديناميكيًا.
لنستعرض كيف يدير فريق مايكروسوفت .NET، بالتعاون مع أزور، إصدارات الميزات الجديدة بكفاءة دون الرجوع (إعادة النشر) في حالة حدوث تراجع.
التحديات التي تواجه إدارة الميزات التقليدية
كانت إدارة الميزات يدويًا دائمًا نقطة ألم للمطورين. يصبح من الصعب إدارة الترميز الثابت أو الاعتماد على ملفات التكوين المحلية في البيئات المعقدة. وغالبًا ما يقدم هذا النهج تحديات مثل:
- مشكلات قابلية التوسع: من الصعب الحفاظ على الاتساق عبر بيئات متعددة مثل التطوير، والاختبار، والإنتاج، وغالبًا ما يؤدي إلى انحراف التكوين.
- اعتماد النشر: يتطلب تغيير حالات الميزات إعادة النشر، مما يزيد من وقت التوقف والمخاطر التشغيلية.
- تحكم محدود: تفتقر الإعدادات الأساسية إلى استهداف متقدم أو القدرة على إدارة الإصدارات بشكل تدريجي.
حل أزور: نهج موحد
تبسيط Azure Feature Management هذه التحديات من خلال توفير نظام مركزي يتكامل بسلاسة مع .NET 8 وما فوق. يضمن هذا الإطار القوي أن يمكن للمطورين التركيز على الابتكار مع الحفاظ على السيطرة على دورة حياة الميزات.
ما الذي يميزه؟
- تكوين ديناميكي: قم بتعديل حالات الميزات على الطاير دون الحاجة للمس بقاعدة الكود ولا مزيد من عمليات النشر مرة أخرى.
- استهداف دقيق: استهدف الميزات لشرائح معينة من المستخدمين بناءً على الجغرافيا أو حتى تطبيق قواعد مخصصة.
- توسيع سلس: مصمم لأنظمة موزعة وخدمات صغيرة، مما يجعله ملائمًا تمامًا لتطبيقات السحاب الأصلية.
دليل خطوة بخطوة لتنفيذ العلامات المميزة للميزات
1. إعداد تكوين تطبيق Azure
ابدأ بإنشاء مورد تكوين مركزي في Azure:
- انتقل إلى بوابة Azure وحدد مورد تكوين التطبيق.
- أنشئ مورد تكوين تطبيق واملأ التفاصيل المذكورة في الحوار.
- بمجرد إنشاء المورد، انقر على العمليات لتوسيعها وانتقل إلى علامة مدير الميزات. أنشئ علامة ميزة تحمل الاسم
NewSearchExperience
كما هو موضح في اللقطة أدناه.
2. تكوين تطبيقك .NET 8
تكامل تطبيقك مع أدوات إدارة الميزات في Azure سهل:
قم بتثبيت الحزم المطلوبة:
dotnet add package Microsoft.FeatureManagement.AspNetCore
dotnet add package Microsoft.Azure.AppConfiguration.AspNetCore
قم بتحديث ملف program.cs الخاص بك:
using Microsoft.FeatureManagement;
var builder = WebApplication.CreateBuilder(args);
// Add Azure App Configuration builder.Configuration.AddAzureAppConfiguration(options => options.Connect("<Your_Connection_String>") .UseFeatureFlags());
// Register Feature Management services builder.Services.AddFeatureManagement();
var app = builder.Build();
// Use middleware to integrate with Azure App Configuration app.UseAzureAppConfiguration();
app.MapGet("/", async context => {
var featureManager = context.RequestServices.GetRequiredService<IFeatureManager>();
if (await featureManager.IsEnabledAsync("NewSearchExperience"))
{
await context.Response.WriteAsync("The new search experience is enabled.");
}
else
{
await context.Response.WriteAsync("The new search experience is disabled.");
}
});
app.Run();
3. اختبار التبديل في الوقت الفعلي
- قم بتشغيل تطبيقك وتحقق من الاستجابة استنادًا إلى حالة التبديل.
- قم بتعديل ميزة العلم
NewSearchExperience
للتبديل بين التمكين والتعطيل في بوابة Azure لمراقبة التغييرات في الوقت الفعلي دون إعادة تشغيل التطبيق.
حالة استخدام عملية: توصيات شخصية
تخيل إضافة ميزة التوصيات الشخصية إلى موقع التجارة الإلكترونية الخاص بك. إليك كيف يمكنك تنفيذ ذلك:
- أنشئ تبديلًا في Azure واسمها الميزة
PersonalizedRecommendations
. - قم بتعديل صفحات razor أو العروض:
@inject IFeatureManager FeatureManager
@if (await FeatureManager.IsEnabledAsync("PersonalizedRecommendations"))
{
<div>Check out these recommendations just for you!</div>
......
}
else
{
<div>Browse our best-selling products.</div>
}
- قم بتشغيل الميزة أو إيقافها لتحديث تجربة المستخدم بشكل ديناميكي.
أفضل الممارسات لإدارة الميزات
1. فصل منطق الأعمال
استخدم الخدمات للتعامل مع فحوصات الميزات، مما يضمن فصل الاهتمامات وتحسين إعادة الاستخدام.
public interface IFeatureToggleService {
Task<bool> IsFeatureEnabledAsync(string featureName);
}
public class FeatureToggleService : IFeatureToggleService
{
private readonly IFeatureManager _featureManager;
public FeatureToggleService(IFeatureManager featureManager)
{
_featureManager = featureManager;
}
public async Task<bool> IsFeatureEnabledAsync(string featureName)
{
return await _featureManager.IsEnabledAsync(featureName);
}
}
2. استفد من النشر التدريجي
صدر الميزات لمجموعات فرعية من المستخدمين لتقليل المخاطر وجمع التغذية الراجعة المبكرة من المستخدمين في الوقت الفعلي.
3. رصد وتحليل
استخدم Azure Monitor لتتبع استخدام الميزة وأدائها لاتخاذ قرارات مستندة إلى البيانات.
الاستنتاج
تسمح استخدام علم الميزات في .NET 8 للمطورين بتقديم البرمجيات بدقة وثقة. من خلال اعتماد علم الميزات، يمكن للفرق:
- تقليل مخاطر النشر.
- طرح الميزات تدريجيا.
- الاستجابة للمشاكل على الفور دون تغييرات في الشيفرة.
ابدأ في دمج أعلام الميزات اليوم وفتح طريقة سهلة للتحكم فيها عبر بوابة Azure لتمكين أو تعطيل أي ميزة دون إعادة النشر.
Source:
https://dzone.com/articles/feature-flags-in-net-8-and-azure