پرچم های برجسته

ساخت وبلاگ

Ian Buchanan headshot

اگر قصد دارید در حین توسعه به طور مداوم ویژگی ها را در برنامه خود ادغام کنید ، ممکن است بخواهید پرچم های ویژگی را در نظر بگیرید. از این گذشته ، ممکن است بخواهید ویژگی ها را تغییر داده و پنهان ، غیرفعال یا فعال کنید. همچنین ممکن است بخواهید تغییرات مختلفی از ویژگی ها را برای کاربران نشان دهید تا کشف کنید کدام یک بهتر است. پرچم های ویژگی ، همچنین به عنوان "toggles" ، "bits" ، "flippers" یا "سوئیچ" شناخته می شوند و به شما امکان می دهند این کار و موارد دیگر را انجام دهید.

پرچم های ویژگی چیست؟

پرچم های ویژگی (همچنین معمولاً به عنوان ضامن ویژگی شناخته می شوند) یک تکنیک مهندسی نرم افزار است که بدون استفاده از کد جدید ، عملکرد را در طول زمان اجرا روشن و خاموش می کند. این امر تیم ها را قادر می سازد بدون فشار دادن کد اضافی تغییراتی ایجاد کنند و امکان آزمایش کنترل شده تری را در طول چرخه عمر ویژگی ها فراهم می کند. به همین دلیل ، پرچم های ویژگی بسیاری از گردش کار جدید را قادر می سازند که برای یک سبک مدیریت چابک و محیط های CI/CD فوق العاده مفید هستند.

در طول توسعه ، مهندسان نرم افزار مسیرهای کد مورد نظر را در یک پرچم ویژگی می بندند. در زیر نمونه ای از یک پرچم ویژگی اصلی است که در JavaScript نوشته شده است:

این کد عبارت ساده ای را نشان می دهد که آیا "یک ویژگی جدید و خنک" فعال شده است یا خیر. حتی با وجود چارچوب ها و ابزارهای پیشرفته که به مدیریت داده های پرچم یا تزریق و حذف مسیر منطقی جدید کمک می کنند ، پرچم های ویژگی در اصل فقط "اگر اظهارات" هستند. بنابراین ، این سوئیچ باینری همان چیزی است که همه مترادف مشترک دارند.

راه حل را ببینید

نرم افزار را با DevOps باز بسازید و کار کنید

ماده مرتبط

در مورد توسعه مبتنی بر تنه بیاموزید

مزایای پرچم های ویژگی

Diagram highlighting feature flag-driven development

در یک سطح بنیادی ، پرچم های ویژگی باعث می شوند کد در یک حالت خفته انجام شود و به تولید مستقر شود و بعداً فعال شود. این به تیم ها کنترل بیشتری بر تجربه کاربر محصول نهایی می دهد. تیم های توسعه می توانند انتخاب کنند که کد جدید کاربران چه زمانی و به کدام کاربران تحویل داده می شود.

اعتبار سنجی ویژگی

توسعه دهندگان می توانند از پرچم های ویژگی برای انجام "چرخش نرم" از ویژگی های محصول جدید استفاده کنند. ویژگی های جدید را می توان با یکپارچه سازی فوری از ضربات ویژگی به عنوان بخشی از نسخه مورد انتظار ساخته شد. پرچم ویژگی را می توان به طور پیش فرض روی "خاموش" تنظیم کرد تا پس از استقرار کد ، در طول تولید خفته باقی بماند و ویژگی جدید تا زمانی که ضامن ویژگی به صراحت فعال شود ، غیرفعال می شود. سپس تیم ها تصمیم می گیرند که چه زمانی پرچم ویژگی را روشن کنند ، که کد را فعال می کند و به تیم ها اجازه می دهد QA را انجام دهند و تأیید کنند که همانطور که انتظار می رود رفتار می کند. اگر تیم در طی این فرآیند مسئله ای را کشف کند ، آنها می توانند بلافاصله پرچم ویژگی را خاموش کنند تا کد جدید را غیرفعال کنند و قرار گرفتن در معرض کاربر را به حداقل برسانند.

خطر را به حداقل برسانید

با تکیه بر ایده های نرم افزاری نرم که در بالا مورد بحث قرار گرفت ، تیم های زحمتکش می توانند پرچم های ویژگی را در رابطه با نظارت سیستم و معیارها به عنوان پاسخ به هرگونه مسئله متناوب قابل مشاهده ، به دست آورند. به عنوان مثال ، اگر یک برنامه یک سنبله در ترافیک را تجربه کند و سیستم نظارت گزارش از صعود در موضوعات را نشان می دهد ، تیم ممکن است از پرچم های ویژگی برای غیرفعال کردن ویژگی های عملکرد ضعیف استفاده کند.

رفتار سیستم را بدون تغییرات مختل کننده اصلاح کنید

از پرچم های ویژگی می توان برای کمک به به حداقل رساندن سناریوهای ادغام کد پیچیده و استقرار استفاده کرد. ویژگی های جدید پیچیده یا کار بازپرداخت حساس می تواند برای ادغام در شاخه اصلی تولید یک مخزن چالش برانگیز باشد. این مسئله پیچیده تر است اگر چندین توسعه دهنده روی قسمتهای همپوشانی پایگاه کد کار کنند.

از پرچم های ویژگی می توان برای جداسازی تغییرات جدید استفاده کرد در حالی که شناخته شده است ، کد پایدار در جای خود باقی مانده است. این به توسعه دهندگان کمک می کند تا با تعهد مکرر به شاخه اصلی مخزن در پشت ضامن ویژگی ، از شاخه های ویژگی طولانی مدت جلوگیری کنند. هنگامی که کد جدید آماده است ، نیازی به یک سناریوی ادغام و استقرار مشترک نیست. این تیم می تواند پرچم ویژگی را برای فعال کردن سیستم جدید تغییر دهد.

موارد استفاده از پرچم

Feature flag diagram

ابزار جدید پرچم های ویژگی ها انواع موارد استفاده خلاقانه را برای تیم های زحمتکش امکان پذیر می کند. مثالهای زیر برخی از کاربردهای محبوب پرچم های ویژگی در یک محیط چابک را برجسته می کند.

تست محصول

از پرچم های ویژگی می توان برای انتشار تدریجی ویژگی های محصول جدید استفاده کرد. ممکن است از قبل مشخص نباشد که آیا یک ویژگی جدید پیشنهادی توسط کاربران پذیرفته می شود و ارزش بازگشت سرمایه را دارد یا خیر. تیم ها می توانند یک ویژگی محصول جدید یا ایده ای جزئی از ویژگی را در یک پرچم ویژگی منتشر کنند و آن را برای جمع آوری بازخورد در زیرمجموعه ای از کاربران مستقر کنند. زیرمجموعه کاربران ممکن است کاربران قدرت صوتی باشند که از آزمایش و بررسی بتا خوشحال می شوند. اگر ایده محصول جدید موفقیت آمیز باشد، تیم توسعه می تواند پرچم ویژگی را برای یک پایگاه کاربر بزرگتر منتشر کند. اگر در عوض ایده محصول جدید شکست خورده باشد، تیم توسعه می تواند به راحتی پرچم ویژگی را غیرفعال کند و بعداً آن را از پایگاه کد حذف کند.

انجام آزمایشات

آزمایش ها یا آزمایش A/B یک نمونه پرچم ویژگی اصلی هستند. در ساده ترین شکل، پرچم های ویژگی به عنوان جابجایی حالت «روشن» و «خاموش» برای یک ویژگی عمل می کنند. پرچم های ویژگی پیشرفته از چندین پرچم به طور همزمان برای فعال کردن تجربیات مختلف برای زیر مجموعه های کاربران استفاده می کنند. به عنوان مثال، تصور کنید که پایگاه کاربری خود را به یک سوم تقسیم می کنید. هر یک سوم پرچم و تجربه کاربری منحصر به فرد خود را دریافت می کنند. سپس می توانید عملکرد این سه پرچم را در مقابل یکدیگر اندازه گیری کنید تا نسخه نهایی نهایی را تعیین کنید.

مهاجرت ها

مواقعی وجود دارد که یک برنامه نیاز به انتقال داده دارد که نیاز به تغییر کد برنامه وابسته دارد. این سناریوها وظایف استقرار حساس و چند فازی هستند. یک فیلد پایگاه داده ممکن است اصلاح شود، حذف شود یا به پایگاه داده برنامه اضافه شود. اگر کد برنامه برای این تغییر پایگاه داده آماده نشود، باعث خرابی و خطا می شود. اگر این اتفاق بیفتد، مستلزم استقرار هماهنگ بین تغییرات پایگاه داده و کد برنامه است.

پرچم های ویژگی به کاهش پیچیدگی این سناریو کمک می کنند و به تیم ها اجازه می دهند تا تغییرات برنامه را از قبل در یک پرچم ویژگی آماده کنند. هنگامی که تیم تغییرات را در پایگاه داده انجام می دهد، می توانند بلافاصله پرچم ویژگی را برای مطابقت با کد برنامه تغییر دهند. این خطر و تأخیر انتظار برای استقرار کد برنامه جدید و احتمالاً عدم موفقیت استقرار و همگام سازی برنامه از پایگاه داده را از بین می برد.

قناری راه اندازی می شود

قناری در این زمینه به یک عمل قدیمی و بیمارگونه اشاره می کند که در آن معدنچیان زغال سنگ پرندگان قناری را برای تشخیص مونوکسید کربن به معدن زغال سنگ می آوردند. این پرندگان دارای سرعت متابولیسم بالاتر و سرعت تنفس سریع هستند، که باعث شد قبل از معدنچیان تسلیم مونوکسید کربن شوند.

راه اندازی Canary در توسعه نرم افزار زمانی اتفاق می افتد که یک ویژگی جدید یا تغییر کد برای زیرمجموعه کوچکی از کاربران به منظور نظارت بر رفتار آن قبل از انتشار آن برای مجموعه کامل کاربران به کار گرفته شود. اگر ویژگی جدید هر گونه نشانه ای از خطا یا شکست را نشان دهد، به طور خودکار برگردانده می شود. پرچم های ویژگی برای این فرآیند ضروری هستند زیرا تعداد مخاطبان را محدود می کنند و می توانند ویژگی ها را به راحتی خاموش کنند.

قطع شدن سیستم

پرچم ویژگی همچنین می تواند به عنوان ابزار قطع سیستم استفاده شود. یک برنامه وب ممکن است از یک پرچم ویژگی برای "خاموش کردن" کل وب سایت برای تعمیر و نگهداری یا خرابی استفاده کند. پرچم ویژگی را می توان در سرتاسر پایگاه کد برای فشار دادن به تراکنش های حساس و نمایش محتوای قطع به کاربران نهایی استفاده کرد. این می تواند در هنگام انجام استقرارهای حساس یا اگر مشکل غیرمنتظره ای پیدا شود و نیاز به حل فوری دارد، بسیار مفید باشد. این به تیم ها اعتماد به نفس و توانایی می دهد تا در صورت لزوم، یک خاموشی کنترل شده را انجام دهند.

استقرار مستمر

پرچم های ویژگی را می توان به عنوان یک جزء جدایی ناپذیر برای ساختن یک سیستم استقرار مستمر واقعی استفاده کرد. استقرار مداوم یک خط لوله خودکار است که کد جدید را از توسعه دهندگان می گیرد و به طور خودکار آن را برای کاربران نهایی تولید مستقر می کند. استقرار مداوم به لایه هایی از آزمایش های خودکار بستگی دارد که تأیید می کنند کد جدید مطابق با مشخصات منطبق هنگام حرکت در خط لوله رفتار می کند.

پرچم های ویژگی با جدا کردن تغییرات کد از نمایش ویژگی ها برای کاربران، استقرار مداوم را ایمن تر می کنند. کد جدید می تواند به طور خودکار ادغام شده و در تولید مستقر شود و سپس پشت پرچم ویژگی منتظر بماند. سیستم استقرار مداوم می تواند رفتار و ترافیک کاربر را کنترل کند، سپس به طور خودکار پرچم ویژگی را فعال کند. برعکس، سیستم استقرار پیوسته می تواند کد پرچم ویژگی جدید را کنترل کند تا ببیند آیا مطابق انتظار عمل می کند یا خیر، و در غیر این صورت آن را به عقب برگرداند.

شاخه های ویژگی در مقابل پرچم های ویژگی

اگرچه نام های مشابهی دارند، شاخه های ویژگی و پرچم های ویژگی کاملاً متفاوت هستند. شاخه های ویژگی یک الگوی گردش کار هستند که مربوط به مخازن کنترل منبع Git است. هنگامی که توسعه دهندگان یک ویژگی محصول جدید را شروع می کنند، یک شاخه Git متناظر جدید ایجاد می کنند که از شاخه اصلی منحرف می شود و حاوی تمام کدهای ویژگی جدید است. وقتی توسعه دهندگان یک ویژگی جدید را به پایان می رسانند، شاخه ویژگی را دوباره در اصلی ادغام کرده و به کار می گیرند. شاخه های ویژگی متمایز و مستقل از پرچم های ویژگی هستند.

پرچم های ویژگی را می توان با شاخه های ویژگی استفاده کرد. برای ایجاد پرچم ویژگی ، یک توسعه دهنده یک شاخه ویژگی ایجاد می کند و کد پرچم ویژگی جدید را به شاخه ویژگی متعهد می کند. پس از ساز ، شعبه ویژگی ادغام و مستقر می شود و پرچم ویژگی سپس در دسترس تولید می شود.

در طول توسعه شعبه ویژگی ، یک پروژه می تواند طولانی مدت شود ، یا از شاخه اصلی منحرف شود و دارای تعهدات بی شماری باشد. توسعه دهندگان باید اطمینان حاصل کنند که یک شاخه ویژگی به طور مداوم به روز می شود ، بنابراین در صورت آماده شدن برای ادغام ، حداقل درگیری ها وجود دارد. این تلاش برای توسعه دهندگان تلاش بیشتری می کند تا اطمینان حاصل شود که یک شاخه ویژگی به طور مداوم به روز می شود ، به طوری که پس از زمان ادغام شعبه ویژگی ، حداقل درگیری ها وجود دارد. از پرچم های ویژگی می توان برای اصلاح این سناریو استفاده کرد. به جای ایجاد یک شاخه با ویژگی های طولانی مدت و انجام یک ادغام بزرگ در هنگام آماده شدن ویژگی جدید ، می توان یک پرچم ویژگی را ایجاد کرد و بلافاصله با Main ادغام شد.

نحوه اجرای پرچم های ویژگی

مسیرهای زیادی برای اجرای پرچم های ویژگی با ملاحظات مختلف لجستیکی و بازده سرمایه گذاری وجود دارد. مسیر رسیدن به نیازهای تیم و اهداف سازمانی شما بستگی دارد.

پرچم گذاری ویژگی ها دارای برخی از وابستگی های زیرساختی است که برای عملکرد صحیح باید مورد توجه قرار گیرد. از آنجا که تیم ها استفاده از پرچم های ویژگی را مقیاس می دهند و روشن کردن/خاموش کردن پرچم ها به یک تصمیم تجاری تبدیل می شوند ، داشتن یک فروشگاه داده معتبر و مکانیسم مدیریتی برای پرچم ها بسیار مهم می شود. بسیاری از خدمات پرچم ویژگی شخص ثالث این وابستگی به فروشگاه داده را ارائه می دهند.

خدمات پرچم ویژگی های میزبان شخص ثالث اغلب بهترین راه حل است. آنها تدارکات سنگین را اداره می کنند و کتابخانه های آسان یکپارچه را ارائه می دهند که روند نصب را تسریع می کنند. این به تیم ها اجازه می دهد تا به جای مدیریت زیرساخت ، روی وظایف اصلی تجارت تمرکز کنند. با این حال ، اگر تیم شما نگرانی های امنیتی شخص ثالث را داشته باشد ، ممکن است به نفع شما باشد که با حمایت پرچم امنیتی خود را اجرا کنید.

به طور جداگانه ، مهندسان برای فعال کردن محتوای پرچم دار باید منطق کد جدیدی را که حالت پرچم را از سرویس بازیابی می کند ، سازگار کنند. این امر به ادغام کد و استقرار کد پرچم قبل از فعال شدن نیاز دارد. از آنجا که بسیاری از پرچم های ویژگی موقتی هستند ، فراموش نکنید که پرچم های ویژگی را که دیگر لازم نیست ، حذف کنید.

در نتیجه.

پرچم های ویژگی یک افزودنی قدرتمند برای زرادخانه توسعه چابک است. روشهای خلاقانه زیادی برای استفاده از پرچم های ویژگی وجود دارد. پرچم های ویژگی مکمل استقرار مداوم و کنترل نسخه GIT هستند. به طور کلی ، پرچم های ویژگی به تیم ها کنترل بیشتری از پایگاه کد ، استقرار آنها و تجربه کاربر نهایی می دهند.

حتما آموزش های پرچم گذاری ویژگی DevOps ما را بررسی کنید ، که بهترین شیوه ها را در یک ابزار DevOps باز نشان می دهد.

Ian Buchanan

در حالی که ایان با جاوا و .net تجربه گسترده و عمیقی دارد ، اما او بیشتر به عنوان قهرمان روشهای چابک در شرکتهای بزرگ شناخته می شود. وی در حال حاضر بر فرهنگ DevOps در حال ظهور و ابزاری برای فعال کردن ادغام مداوم بهتر ، تحویل مداوم و تجزیه و تحلیل داده ها متمرکز شده است. وی در طول حرفه خود ، با موفقیت ابزارهای توسعه نرم افزار سازمانی را در تمام مراحل چرخه عمر خود مدیریت کرد. وی با نتایج حاصل از بهره وری بیشتر ، کیفیت بالاتر و بهبود رضایت مشتری ، بهبود فرآیند سازمان را هدایت کرده است. او تیم های چند ملیتی را ایجاد کرده است که برای جهت گیری خود و سازماندهی خود ارزش قائل هستند. هنگام صحبت کردن یا برنامه نویسی ، می توانید یان را پیدا کنید که احساسات وی را در پارسرها ، برنامه نویسی متا و زبانهای خاص دامنه در نظر بگیرد. Ian را در Devpartisan دنبال کنید.

فارکس وکسب درامد...
ما را در سایت فارکس وکسب درامد دنبال می کنید

برچسب : نویسنده : احمد قانع پور بازدید : 39 تاريخ : شنبه 9 ارديبهشت 1402 ساعت: :