چند مورد از کاربردهای devops برای توسعه feature flag ها

آیا شما هم علاقه مند به آشنایی با feature flag ها و کارکرد آنها هستید؟ در این مطلب کمی بیشتر درباره feature flag ها صحبت خواهیم کرد.

Feature flag ها ادغام و آنالیز را تقویت کرده و ویژگی های کنترلی را برای صاحبان محصول فراهم می کنند و علاوه بر این عرضه برنامه ها و اپلیکیشن ها را نیز ساده تر می کنند.

موضوعاتی از قبیل بهینه سازی پلتفرم ها، ابزارها و کتابخانه هایی که در زبان های مختلف وجود دارند همواره جذاب و هیجان برانگیز است. در گذشته توسعه دهندگان از ابزارهایی مانند Concurrent Versions System و SubVersion برای کنترل ورژن برنامه ها استفاده می کردند، اسکریپت های Apache Ant را برای اپلیکیشن های جاوا می نوشتند و بسیاری از اسکریپت های Unix را نیز برای خودکارسازی فرایند استقرار کدها می نوشتند که کاری زمانبر بود. امروزه ابزارهایی مانند Git، Jenkins و … این کارها را برای توسعه دهندگان ساده تر کرده اند. به همین علت است که در حال حاضر بسیاری از سازمان های مختلف نیز این ابزارها استفاده کرده و از مزایای آنها بهره مند می شوند.

آشنایی با Feature flag ها

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

امروزه مقالاتی در زمینه آزمایش و تست در agile با استفاده از Feature flag ها نوشته شده است که تمرکز آنها بر نحوه استفاده از تیم های توسعه دهنده و مدیریت آنها برای کنترل قابلیت های مربوط به مستقر کردن کدها در زمان اجرا است. در این روش ها به جای پیاده سازی یک استراتژی انشعاب در ابزارهای کنترل ورژن بسیار مقیاس پذیرتر است که از Feature flag ها برای این کار استفاده کنید.

عملیات Feature flagging و نکاتی درباره feature flag ها

Feature flagging بسیار فراتر از آنچه که در زمان کنترل کردن فرایند build و تست کردن A/B رخ می دهد است و عمق بیشتری دارد. طبق صحبت های انجام شده با John Kodumal، مدیر فناوری و یکی از بنیانگذاران LaunchDarkly، مواردی را پیدا کردیم که feature flagging می تواند به صورت پیشرفته در روش agile مورد استفاده قرار گیرد و قابلیت های خود را به شکل بهترین نشان دهد و همین طور توسعه دهندگان نیز می توانند به شکل بهتری از این روش استفاده کنند.

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

در ادامه قصد داریم 5 دلیل اصلی برای استفاده از این flag ها در زمان توسعه اپلیکیشن های مختلف را به شما ارائه کنیم که بدون شک مطالعه آن برای تمامی توسعه دهندگان می تواند مفید و کاربردی باشد.

فراهم کردن کنترل های feature برای مدیران محصول

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

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

اعتماد تیم توسعه دهنده به صاحبان محصولات

تیم های توسعه دهنده باید درباره این که دقیقا کدام flag ها را به صاحبان محصولات ارائه دهند تصمیم گیری کنند. انجام این کار نه تنها عملی است بلکه می تواند به میزان زیادی اعتماد صاحبان محصولات را به خود جلب کند. Kodumal در خصوص این موضوع می گوید: ما شروع به دموکراتیک کردن فرایند انتشار اپلیکیشن ها و محصولات کرده ایم و آنها را به دست افرادی می دهیم که در این خصوص تصمیم گیری کنند و تنها مهندسان توسعه دهنده نباشند که درباره این محصولات تصمیم گیری می کنند.

استفاده از جریان کاری برای toggle features

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

زمانی که شما از ابزارهای نظارتی یا پلتفرم های AIops که رویدادها را برای feature flag ها ردیابی می کنند استفاده می کنید گردش کاری شما می تواند بسیار قدرتمندتر شود. رویدادها و هشدارهای مربوط می توانند فرایند اتوماسیون را فعال کرده و به راحتی ویژگی ها را تغییر دهند.

برای کنترل بهتر سگمنت ها با تحلیل مشتری ادغام می شود

انجام داده تست های A/B با الگوریتم های multi-armed bandit و ارائه آرام ویژگی ها برای مخاطبان یکی از راهکارهای مناسب برای ارائه یک قابلیت جدید در محصولات نرم افزاری می باشد. روش طبیعی برای انجام این کار استفاده از سگمنت های کنترلی مانند تست کننده های بتا یا گروه های پذیرنده اولیه می باشد. توسعه دهندگان اپلیکیشن هایی که به طور مستقیم با کاربران در ارتباط هستند و محصولات مختلف و همین طور افرادی که قصد بازاریابی برای محصولات را دارند ممکن است علاقه مند باشند تا با اتصال به بخش های مربوط به مشتریان در پنل مدیریتی برخی از ویژگی ها را شخصی سازی کنند.

پلتفرم های تجربه کاربری از جمله ارائه دهندگان برتر آنها مانند Adobe، Acquia و Optimizely مدیریت محتوای پیشرفته و شخصی سازی های حرفه ای را پیشنهاد می کنند که می تواند بهترین انتخاب برای شما باشد مخصوصا زمانی که قصد دارید روی اپلیکیشن های تجاری در مقیاس بزرگ کار کنید. با این حال نباید فراموش کنید که برای بسیاری از اپلیکیشن های مشتریان یا اپلیکیشن های شرکتی این کار نیازمند شخصی سازی پایه ای یا قوانین تقسیم بندی مشتریان است. برای این کار نیز می توانیم از قابلیت feature flagging در کنار تقسیم بندی مشتریان به صورت استاتیک یا داینامیک استفاده کنیم تا کنترل قابلیت ها و ویژگی های مختلف را تا جای ممکن ساده تر کنیم.

استفاده از Feature flag ها همه ذینفعان محصول را نسبت به عرضه ویژگی ها مطلع می کند

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

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

متصل کردن feature flag ها به سایر ابزارهای حوزه فناوری اطلاعات مانند گیت هاب، Jira Software، Splunk یا Slack یکی از بهترین راهکارها برای پیگیری تغییرات در پیکربندی می باشد.

نکات مهم درباره اتصال feature flag ها به سایر ابزارهای IT

پیاده سازی  feature flag ها به تنهایی ممکن است مشکلات زیادی را به همراه داشته باشد بنابراین ممکن است در ابتدای کار این مسئله برای شما جذابیت های زیادی را به همراه داشته باشد اما احتمالا شما توانایی پیاده سازی تمامی قابلیت های مربوط به مدیریت و یکپارچه سازی را نخواهید داشت و برای پیاده سازی  feature flag ها به تنهایی با مشکل مواجه خواهید شد.

کنترل فرایند مدرن سازی اپلیکیشن و مهارت به فضای ابری در زمان استفاده از feature flag ها

بسیاری از تیم های فناوری اطلاعات در حال مدرن سازی برنامه های قدیمی خود هستند. آنها برنامه های یکپارچه را به میکروسرویس های مختلف تقسیم می کنند و برنامه های خود را به محیط کلود منتقل می کنند.

یکی از چالش هایی که برای این کار وجود دارد این است که بدانیم آیا برنامه هایی که بازسازی شده اند آماده ورود به بازار هستند یا خیر؟ این مسئله به ویژه زمانی که برنامه های قدیمی دارای فرایند تست و کنترل خودکار نیستند بیشتر اهمیت خود را نشان می دهد.

تیم های توسعه دهنده باید از این فرصت ها برای برطرف کردن مشکلات فنی استفاده کرده و تست های خودکار را به برنامه های خود اضافه کنند. متاسفانه به علت محدودیت های زمانی که در این زمینه وجود دارد دسترسی به کارشناسان فعال در این زمینه همیشه نمی تواند راهکار مناسبی باشد و به همین علت است که بیشتر افراد از  feature flag ها برای این کار استفاده می کنند.

گزینه دیگری که برای انجام این کار وجود دارد اضافه کردن feature flag ها به روند انتقال است. Kodumal در این زمینه می گوید: شما می توانید سال ها تست های بسیار قدرتمندی را بنویسید و سعی کنید به سیستم خود اعتماد کنید اما اگر قصد داشته باشید به پلتفرم جدیدی مهاجرت کنید این feature flag ها هستند که می توانند اعتماد شما را جلب کنند.

صحبت پایانی

feature flag ها یک عنصر بسیار مهم در زمان توسعه نرم افزار هستند.  feature flag ها می توانند باعث راحت تر شدن روند توسعه نرم افزار شده و مزایای زیادی را به شما ارائه دهند.

خروج از نسخه موبایل