বৈশিষ্ট্য পতাকাগুলি সফ্টওয়্যার বিকাশের একটি শক্তিশালী হাতিয়ার, যা বিকাশকারীদের নতুন কোড স্থাপন না করে রানটাইমে একটি অ্যাপ্লিকেশনের আচরণ নিয়ন্ত্রণ করতে দেয়। তারা দলগুলিকে নতুন বৈশিষ্ট্যগুলি পরীক্ষা করতে, A/B পরীক্ষা করতে এবং ধীরে ধীরে পরিবর্তনগুলি রোল আউট করতে সক্ষম করে৷
রুবি অন রেলে, বৈশিষ্ট্য পতাকাগুলি বিভিন্ন সরঞ্জাম ব্যবহার করে পরিচালনা করা যেতে পারে, সবচেয়ে জনপ্রিয় হল ফ্লিপার মণি। এই নিবন্ধটি Flipper এবং AppSignal-এর কাস্টম মেট্রিক্স ব্যবহার করে সলিডাস স্টোরফ্রন্টে ফিচার ফ্ল্যাগগুলির প্রভাব বাস্তবায়ন এবং পরিমাপ করা হবে।
রেলে ফিচার ফ্ল্যাগ কি, আবার?
আপনি যদি বিষয়ের পরিচিতি খুঁজছেন, তাহলে ফ্লিপার সহ রুবি অন রেলে ফিচার ফ্ল্যাগ যুক্ত পোস্টটি দেখুন৷
সংক্ষেপে, যদিও, বৈশিষ্ট্য ফ্ল্যাগগুলি হল আপনার অ্যাপ্লিকেশন কীভাবে রানটাইমে আচরণ করে তা প্রভাবিত করার একটি উপায় , নতুন কোড স্থাপন না করেই। বৈশিষ্ট্য পতাকা সহজ ধরনের এনভায়রনমেন্ট ভেরিয়েবল. প্রতিটি রুবি অন রেল অ্যাপ্লিকেশন এগুলিকে বাক্সের বাইরে ব্যবহার করে। একটি উদাহরণ হল ENV['WEB_CONCURRENCY'] ব্যবহার করে অ্যাপ্লিকেশন সার্ভার কনকারেন্সির কনফিগারেশন .
যাইহোক, বৈশিষ্ট্য ফ্ল্যাগগুলি পরিচালনা করার অন্যান্য উপায় রয়েছে, যেমন ActiveRecord বা Redis এর মতো একটি স্থায়ী স্তর ব্যবহার করা। এটি করার একটি ব্যাপক উপায় ফ্লিপার রত্ন দ্বারা অফার করা হয়েছে৷
৷
নিচের স্নিপেটটি কিভাবে performance_improvement এর উদাহরণ দেয় বৈশিষ্ট্য পতাকা একটি প্রদত্ত ব্যবহারকারীর জন্য মূল্যায়ন করা হয়:
এর পরে, আমরা বৈশিষ্ট্য ফ্ল্যাগগুলির সাথে পরীক্ষা শুরু করার জন্য একটি সলিডাস স্টোরফ্রন্ট সেট আপ করব৷
৷আমাদের উদাহরণ অ্যাপ:একটি সলিডাস স্টোরফ্রন্ট
কিছুটা বাস্তবসম্মত পরিস্থিতিতে বৈশিষ্ট্য পতাকার প্রভাব পরিমাপ করতে, আসুন দ্রুত একটি সলিডাস স্টোর বুটস্ট্র্যাপ করি:
এই জেনারেটর আপনাকে প্রক্রিয়াটির মাধ্যমে গাইড করবে এবং আপনাকে কয়েকটি সেটআপ প্রশ্ন জিজ্ঞাসা করবে।
- স্টার্টার বেছে নিন ফ্রন্টএন্ড টাইপের জন্য জিজ্ঞাসা করা হলে ফ্রন্টএন্ড।
- একটি অর্থপ্রদানের পদ্ধতি সেট আপ করুন।
- আপনার Solidus অ্যাপ্লিকেশনকে
/এ মাউন্ট করতে বেছে নিন যেহেতু আমরা এটিকে একটি স্বতন্ত্র অ্যাপ হিসেবে ব্যবহার করছি।
পরে, bin/dev চালান আপনার টার্মিনাল থেকে এবং আপনি যেতে ভাল হতে হবে. আপনি যখন http://localhost:3000 যান , আপনি এই স্ক্রীনটি দেখতে পাবেন:

ফ্লিপার দিয়ে ফিচার ফ্ল্যাগ প্রয়োগ করুন
এখন ফিচার ফ্ল্যাগের জন্য দুটি অনুকরণীয় ব্যবহারের ক্ষেত্রে প্রয়োগ করা যাক:
- একটি কর্মক্ষমতা উন্নতি।
- রূপান্তর হার অপ্টিমাইজেশানের একটি প্রচেষ্টা।
প্রথমত, যদিও, আমাদের flipper যোগ করতে হবে তার active_record সহ রত্ন স্টোরেজ অ্যাডাপ্টার:
এটি ফ্লিপার "গেটস" দেখার জন্য প্রয়োজনীয় ডাটাবেস টেবিলগুলি সেট আপ করবে, যেমন, একটি বৈশিষ্ট্য পতাকা পরীক্ষা করার সময় মূল্যায়ন করার জন্য কংক্রিট শর্তাবলী৷
একটি কর্মক্ষমতা উন্নতি পরীক্ষা করা হচ্ছে
এই দৃশ্যটি মূল্যায়ন করতে, আমরা একটি sleep 1 যোগ করে স্টোরফ্রন্টে একটি ধীর অনুরোধ অনুকরণ করব অপ্টিমাইজ করা কেসের জন্য কল করুন:
এখন, আমরা অনুরোধের একটি এলোমেলো সেট জুড়ে অপ্টিমাইজেশন রোল আউট করতে "সময়ের শতাংশ" কৌশল ব্যবহার করব। নিম্নলিখিতটিতে একটি রেল কনসোল এবং কী খুলুন:
ওহা লোড টেস্টিং টুল ব্যবহার করে, আমরা নিশ্চিত করতে পারি যে প্রকৃতপক্ষে অর্ধেক অনুরোধ অন্যদের চেয়ে এক সেকেন্ড বেশি সময় নেয়:
রূপান্তর হার অপ্টিমাইজেশান পরীক্ষা করা
ব্যবহারকারী-মুখী বৈশিষ্ট্যগুলির সাথে কাজ করার সময়, উদাহরণস্বরূপ, UI-তে পরিবর্তন, পতাকাগুলি রোল আউট করার জন্য "অভিনেতাদের শতাংশ" কৌশল ব্যবহার করার পরামর্শ দেওয়া হয়। এইভাবে, প্রত্যেক ব্যবহারকারীকে ধারাবাহিকভাবে একই অভিজ্ঞতা দেওয়া হয়।
তাই শুরু করার জন্য, আমরা আমাদের ই-কমার্স অ্যাপ্লিকেশনের জন্য দুজন ব্যবহারকারী তৈরি করব। একটি রেল কনসোল ফায়ার করুন এবং নিম্নলিখিত কমান্ডগুলি জারি করুন:
এটি দুটি নমুনা ব্যবহারকারী তৈরি করে এবং বৈশিষ্ট্য ফ্ল্যাগটি সঙ্গতভাবে রয়েছে তা নিশ্চিত করে৷ তাদের মধ্যে একজনের জন্য সক্ষম।
রূপান্তর হার বাড়ানোর চেষ্টা করে এমন একটি বৈশিষ্ট্য অনুকরণ করতে, আমরা চেকআউট বোতামটি স্পন্দিত করব:
যদি আমরা উভয় ব্যবহারকারীর সাথে লগ ইন করি এবং ব্রাউজার উইন্ডোগুলি পাশাপাশি সাজাই, আমরা লক্ষ্য করতে পারি যে প্রকৃতপক্ষে একজন (বাম) ব্যবহারকারীর জন্য প্রভাব সক্রিয়:
ফিচার ফ্ল্যাগের প্রভাব পরিমাপ করতে AppSignal কাস্টম মেট্রিক্স ব্যবহার করুন
সেরা বৈশিষ্ট্য পতাকা সিস্টেম অকেজো যদি এর প্রভাব মূল্যায়ন করার কোন উপায় না থাকে। আমাদের উদাহরণ পরিস্থিতিতে, আমরা কেবল জানতে চাই:
- পারফরম্যান্সের উন্নতি কি উল্লেখযোগ্য লেটেন্সি হ্রাসের দিকে পরিচালিত করেছে?
- আমাদের স্পন্দিত চেকআউট বোতামটি কি একটি উল্লেখযোগ্যভাবে উচ্চতর রূপান্তর হারের দিকে পরিচালিত করেছে?
এই অপ্টিমাইজেশানগুলির পে-অফ পরিমাপ করতে আমরা AppSignal-এর কাস্টম মেট্রিক্স ব্যবহার করব৷
প্রথমত, আপনার AppSignal প্রতিষ্ঠানে একটি নতুন অ্যাপ্লিকেশন তৈরি করুন এবং নির্দেশাবলী অনুসরণ করে এটিকে আপনার অ্যাপের সাথে সংযুক্ত করুন:
একটি পরিমাপ মেট্রিক দিয়ে লেটেন্সি পরিমাপ করা
oha দিয়ে আমাদের উন্নতি কতটা কার্যকর তা আমরা যাচাই করেছি উপরে CLI, কিন্তু বৈধ সিদ্ধান্ত নিতে আমরা সার্ভার-সাইড টেলিমেট্রি ইনস্টল করব যা AppSignal-এ লেটেন্সি রিপোর্ট করে। একটি পরিমাপ মেট্রিক ঠিক এটির জন্য অনুমতি দেয়:আমরা মিলিসেকেন্ডে প্রতিক্রিয়ার সময় পাঠাব এবং একটি মেট্রিক ট্যাগ যোগ করব যা নির্দেশ করে যে আমাদের কর্মক্ষমতা অপ্টিমাইজেশন একটি নির্দিষ্ট অনুরোধের জন্য সক্রিয় ছিল কিনা৷
এখানে একটি ছোট গোছা আছে:যেহেতু আমরা "সময়ের শতাংশ" মেট্রিক নিযুক্ত করছি, তাই আমাদের পতাকার অবস্থাকে একটি ইনস্ট্যান্স ভেরিয়েবলে ক্যাপচার করতে হবে যাতে এক্সিকিউশন এবং রিপোর্টিংয়ের জন্য একই মান ব্যবহার করা হয়:
এখন উপরে থেকে স্থানীয় লোড পরীক্ষার পুনরাবৃত্তি করা যাক:
আমরা কিছুক্ষণের মধ্যে এই মেট্রিকটি চার্টিং এবং মূল্যায়ন করব। তার আগে, আসুন আমাদের দ্বিতীয় বৈশিষ্ট্য পতাকার দিকে ফিরে যাই।
একটি গণনা মেট্রিকের সাথে রূপান্তরগুলিকে মেলানো
আমরা রূপান্তর গণনা করার জন্য একটি পাল্টা মেট্রিক ব্যবহার করব। এটি একটি দুর্দান্ত পছন্দ যদি আপনি শুধুমাত্র একটি ইভেন্টের হিসাব রাখতে চান।
এটি করার জন্য, আমাদের CartsController খুলতে হবে , এবং, প্রদর্শনের উদ্দেশ্যে, একটি increment_counter যোগ করুন চেকআউট বোতামটি ক্লিক করলে কল করুন:
এখন ম্যানুয়ালি সংশ্লিষ্ট ব্রাউজার উইন্ডো খুলে এবং "চেকআউট" বোতামটি 3 বার ক্লিক করে এবং অন্য ক্ষেত্রে শুধুমাত্র একবার এটি পরীক্ষা করা যাক। এইভাবে, আমরা দেখতে পারি অপ্টিমাইজেশান পতাকা সক্রিয় কিনা৷
৷AppSignal-এ কাস্টম ড্যাশবোর্ড সেট আপ করুন
আমাদের চূড়ান্ত পদক্ষেপ হল তথ্যভিত্তিক গ্রাফিক্স তৈরি করা যাতে ডেটা-অবহিত ব্যবসায়িক সিদ্ধান্ত নেওয়া যায়। আমরা এটি অর্জন করতে AppSignal এর ড্যাশবোর্ড ব্যবহার করব। আসুন এই ধাপে ধাপে যাই:
- বাম সাইডবারে, "ড্যাশবোর্ড যোগ করুন" এ ক্লিক করুন এবং এটির নাম দিন "ফিচার ফ্ল্যাগ ইভালুয়েশন"।

- "গ্রাফ যোগ করুন" এবং
products_response_timeএ ক্লিক করুন মেট্রিক শুধুমাত্র গড় প্রদর্শন করতে "মান" নির্বাচন করুন এবংperformance_improvement_enabledপ্রয়োগ করুন ট্যাগ।

- চেকআউট সংখ্যার জন্য একটি চার্ট যোগ করতে "নতুন গ্রাফ যোগ করুন" এ ক্লিক করুন। আবার,
optimization_activeপ্রয়োগ করুন ট্যাগ।

এখন আপনার কাস্টম ড্যাশবোর্ড প্রস্তুত। বাম দিকের লাইন গ্রাফে, আপনি জোর দিয়ে বলতে পারেন যে আপনার কর্মক্ষমতা উন্নতি কার্যকর ছিল। ডানদিকে, অপ্টিমাইজ করা ক্ষেত্রে চেকআউটের উচ্চ গণনা কীভাবে রেকর্ড করা হয়েছিল তা পর্যবেক্ষণ করুন৷
৷

আর এটাই!
র্যাপিং আপ
আমরা দেখেছি যে কীভাবে বৈশিষ্ট্য পতাকাগুলি একটি রুবি অন রেল অ্যাপ্লিকেশনে নতুন বৈশিষ্ট্যগুলি পরিচালনা এবং স্থাপন করার জন্য একটি নমনীয় এবং কার্যকর উপায় সরবরাহ করে। Flipper রত্ন এবং AppSignal-এর কাস্টম মেট্রিক্সের মতো সরঞ্জামগুলি ব্যবহার করে, বিকাশকারীরা শুধুমাত্র বৈশিষ্ট্য রোলআউটগুলি নিয়ন্ত্রণ করতে পারে না, কিন্তু কর্মক্ষমতা এবং ব্যবহারকারীর আচরণের উপর তাদের প্রভাবও পরিমাপ করতে পারে৷
এই পদ্ধতিটি নিশ্চিত করে যে নতুন বৈশিষ্ট্যগুলি সম্পূর্ণরূপে মোতায়েন হওয়ার আগে পুঙ্খানুপুঙ্খভাবে পরীক্ষা করা হয়েছে এবং অপ্টিমাইজ করা হয়েছে, শেষ পর্যন্ত আরও স্থিতিশীল এবং ব্যবহারকারী-বান্ধব অ্যাপ্লিকেশনের দিকে নিয়ে যায়। অবশেষে, এটি বিকল্প পদ্ধতির কার্যকারিতা পরিমাপ করার সময় আরও সচেতন ব্যবসায়িক সিদ্ধান্তের দিকে নিয়ে যেতে পারে।
শুভ কোডিং!
পি.এস. আপনি যদি রুবি ম্যাজিক পোস্টগুলি প্রেস থেকে বের হওয়ার সাথে সাথে পড়তে চান তবে আমাদের রুবি ম্যাজিক নিউজলেটারে সাবস্ক্রাইব করুন এবং একটি পোস্ট মিস করবেন না!
জুলিয়ান রুবিশ
আমাদের অতিথি লেখক জুলিয়ান একজন ফ্রিল্যান্স রুবি অন রেইলস কনসালট্যান্ট ভিয়েনা ভিত্তিক, প্রতিক্রিয়াশীল রেলে বিশেষজ্ঞ। StimulusReflex কোর টিমের অংশ, তিনি 2020 সাল থেকে অত্যাধুনিক HTML-ওভার-দ্য-ওয়্যার প্রযুক্তির উন্নয়নে এগিয়ে রয়েছেন।
জুলিয়ান রুবিশের সমস্ত নিবন্ধ