একটি "বৈশিষ্ট্য পতাকা" কি?


115

উচ্চ স্কেলিবিলিটি এখানে বৈশিষ্ট্যযুক্ত পতাকা উল্লেখ করেছে:

5 টি স্কেল্যাবিলিটিতে বিষাক্ত , "5. বৈশিষ্ট্যের পতাকাগুলির অভাব"

ফিচার ফ্ল্যাগগুলি ঠিক কী?


1
ম্যাক্সিম ভেক্সলার যেমন উল্লেখ করেছেন, এই ফ্লিকার পোস্টটি বৈশিষ্ট্যযুক্ত পতাকাগুলির প্রথম দিকের নিবন্ধগুলির মধ্যে একটি, এবং তাদের ব্যবহার এবং প্রয়োগের কিছু বিশদ কোডে
নোহ সুসমান

উত্তর:


104

একটি 'ফিচার ফ্ল্যাগ' (বা ফিচার টগল ) হ'ল সহজেই আপনার অ্যাপ্লিকেশনটির বৈশিষ্ট্যগুলি (উপ-বিভাগগুলি) চালু বা বন্ধ করার ক্ষমতা:

  • সম্ভবত একটি পুনঃ-স্থাপনার মাধ্যমে, বা
  • কিছু অভ্যন্তরীণ পৃষ্ঠা যেখানে পৃষ্ঠাগুলি / বৈশিষ্ট্যগুলি সরাসরি টগল করা যেতে পারে।

আমি অনুমান করেছিলাম যে সেখানে উদাহরণটি ছিল যে বৈশিষ্ট্য-সেটটি কিছুটা কমিয়ে আনার নিয়ন্ত্রণ রাখতে সুবিধাজনক যদি আপনার প্রয়োজন হয়, বলুন, লোড খুব বেশি হলে ডিবি কোয়েরিগুলি হ্রাস করুন।

আছে অন্য কারণে গাদা প্রধান হচ্ছে সক্ষম করার এক - আপনি যদিও এই ব্যবহার করতে চাইবেন ক্রমাগত ডেলিভারি / উতপাদনে জিনিষ ঠেলাঠেলি এখনও বৈশিষ্ট্য নিষ্ক্রিয় / টগল পর্যন্ত এটি সম্পন্ন হচ্ছে না থাকার। আমরা প্রায়শই কেবল ডেভ দলকে অসম্পূর্ণ বৈশিষ্ট্যগুলি দেখানোর জন্য আমরা একটি 'ডেভ কুকি' বলি use এইভাবে আমরা উত্পাদনের আংশিকভাবে সম্পন্ন কাজটি পরীক্ষা করতে পারি (ওহ ইহ! আরও ভাল সংহতকরণ আছে কি?) একাধিক রিলিজ / মোতায়েনের আগে আমরা এটি 'আনগল করা' (সম্পূর্ণ) করার আগে এবং এটি জনসাধারণের কাছে দৃশ্যমান হয়ে ওঠে।

এখানে একটি সাধারণ প্যাকেজ যা আপনাকে এএসপি.নেট এমভিসি জমিতে এটি করতে সহায়তা করে: https://github.com/cottsak/DevCookie (সম্পূর্ণ প্রকাশ: আমি লেখক)

ফাউলারের আরও অনেক বিবরণের সাথে উপরের লিঙ্কযুক্তটির চেয়ে অনেক দীর্ঘ নিবন্ধ রয়েছে

এই পোস্টটি (ফওলারের সাইটেও) বিভিন্ন ধরণের টগল কৌশল ব্যাখ্যা করেডেভুকি মূললাইন / ট্রাঙ্ক-ভিত্তিক কৌশল সমর্থন করে এবং নিবন্ধে একটি " রিলিজ টগল " বলা হয় ।

আদিলের উত্তরটি হাইলাইট করে যে আপনি এই অবকাঠামোগত কিছু চান কেন এমন অনেক শর্ত এবং কারণ রয়েছে। মনে রাখবেন আপনার কেবল এই কয়েকটি জিনিসের প্রয়োজন হতে পারে। উদাহরণস্বরূপ, আমি কেবলমাত্র একটি সহজ, এবং চটপটে স্থাপনা / বিতরণ ওয়ার্কফ্লো সক্ষম করতে চাই এবং তাই একটি সাধারণ অবকাঠামোই যথেষ্ট। তারপরে আপনি যদি চয়ন করেন তবে আপনি পূর্ণরূপে যেতে চান এ / বি, কোয়ার্ট টেস্টিং এবং নিয়ন্ত্রিত রোল-আউট এর মতো সামগ্রীর সাথে #leanstartup পরীক্ষায় আপনার একটি বিশ্লেষণ সরঞ্জাম (যেমন হিপ ) বিবেচনা করা উচিত যা সেই ডেটা-চালিত বিকাশের পদ্ধতিগুলি একটি স্বতন্ত্র সমাধান হিসাবে সহজ করে তোলে । উপরের সবগুলি করে এমন একটি টগল অবকাঠামো ফোলা এবং অপ্রয়োজনীয় জটিলতার দিকে পরিচালিত করবে।

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


1
মজাদারভাবে যথেষ্ট, আমি যা নির্মাণ করি সে ক্ষেত্রে আমি সবসময় একই জিনিস কল্পনা করেছি ed এটি এমন কার্যকর বৈশিষ্ট্য হতে পারে।
গুরদীপস

7
প্রায়শই আপনি এই জাতীয় জিনিসগুলি দেখতে পাবেন যা স্পষ্ট বলে মনে হয়। দেখা যায় যে কেউ সর্বদা এর জন্য একটি নাম নিয়ে আসে।
ম্যাট কোকাজ

27

ফিচার ফ্ল্যাগ হ'ল একটি প্রযুক্তি যা নতুন কোড মোতায়েন না করে কনফিগারেশনের মাধ্যমে আপনার অ্যাপ্লিকেশনটির কিছু কার্যকারিতা বন্ধ করে দেবে।

বৈশিষ্ট্যযুক্ত পতাকাগুলি সিআই স্কিমের মূল ভূমিকা পালন করে যেখানে বৈশিষ্ট্যগুলি ক্রমাগত মোতায়েন করা হয় তবে প্রয়োজনীয়ভাবে উত্পাদনে "মুক্তি দেওয়া হয় না"।

এখানে আরও তথ্য:

- সম্পাদনা:

বৈশিষ্ট্যযুক্ত পতাকা জাভা বাস্তবায়ন


3
এটি 'কন্টিনিউজ ডিপ্লোয়মেন্ট'-এ ভালভাবে বর্ণনা করা হয়েছে এবং' মাইনলাইন 'বিকাশের জন্য এটি বেশ প্রয়োজন। বৈশিষ্ট্যগুলির জন্য এসসিএম-তে শাখা করা না করে বৈশিষ্ট্যগুলি চালু বা বন্ধ হয়ে যায়, আপনাকে এমন বৈশিষ্ট্যগুলির সাথে কোড প্রকাশ করতে দেয় যা এখনও সক্ষম করা যায় না।
চিপ ম্যাককর্মিক

"নতুন কোড মোতায়েন না করে কনফিগারেশনের মাধ্যমে" কেবল একটি নোট: এটি উপস্থিত রয়েছে বলে মনে হয় যে বিবৃতিটির অর্থ একটি কনফিগার পরিবর্তন করা এবং তারপরে অ্যাপ্লিকেশনটি পুনরায় স্থাপন করা (এমনকি কোনও কোড পরিবর্তিত হয়নি)। এটি আপনার স্থাপনার পাইপলাইনের উপর নির্ভর করে এখনও কয়েক সেকেন্ড থেকে কয়েক মিনিট সময় নিতে পারে। একটি বৈশিষ্ট্যযুক্ত পতাকা বা বৈশিষ্ট্য টগল কনফিগারেশনে স্থির থাকতে পারে। এটি কোথাও স্টোর / ডিবিতে থাকতে পারে এবং "লাইভ" ফ্যাশনে আচরণ করতে পারে - অর্থাত্ কিছু অ্যাডমিন পৃষ্ঠায় নেভিগেট করা যেখানে আপনি কিছু আচরণ সাইট-প্রশস্ত তাত্ক্ষণিকভাবে সক্ষম করার জন্য কোনও বোতামে ব্যাং করেন (কোনও স্থাপনা নেই, কোনও রূপান্তর নেই)।
ম্যাট কোকাজ

1
আমি কনফিগারেশন ডটকমের জন্য এবং যেভাবে আমি এটি দেখতে পাই "নতুন কোড মোতায়েন না করেই কোনও কনফিগার পরিবর্তন করা হচ্ছে" এর অর্থ এই যে কনফিগারেশনটি বৈশিষ্ট্যযুক্ত পতাকা পরিষেবা দ্বারা পরিবেশন করা হয় এবং আপনার অ্যাপ্লিকেশন সেই কনফিগারেশন ফাইলটি টেনে মানগুলি অ্যাক্সেস করে। এই উপায়ে আপনি নিশ্চিত হতে পারেন যে কোনও মান পরিবর্তন করার জন্য অ্যাপ্লিকেশনটিকে পুনরায় স্থাপনের কোনও ধরণের দরকার নেই। এর শীর্ষে এটি আপনাকে নিয়ম তৈরি করতে দেয় যাতে আপনি একটি ব্যবহারকারীর জন্য মূল্য এবং অন্য একজনের কাছে পৃথক করে। শীতল হ'ল সমস্ত বৈশিষ্ট্যের পতাকা মূল্যায়ন ক্লায়েন্টের পক্ষে এবং এই সমস্ত যুক্তি ফিচার ফ্ল্যাং পরিষেবাটিতে কোনও ডেটা পিছনে চাপানোর প্রয়োজন ছাড়াই কাজ করে।
সাইজে

techblog.outbrain.com/tag/feature-flags - url কাজ করছে না
সতীশ

19

বৈশিষ্ট্যযুক্ত পতাকা, বৈশিষ্ট্য টগলস, পরীক্ষা-নিরীক্ষা এবং নিয়ন্ত্রিত রোলআউটগুলি একটি সাধারণ তবে শক্তিশালী ধারণার প্রতিশব্দ: বৈশিষ্ট্য রোলআউটগুলি থেকে পৃথক কোড মোতায়েন করে। সাধারণ ভাষায় বলতে গেলে, আপনার গ্রাহকদের মধ্যে - কেহ - যদি কেউ - এই বৈশিষ্ট্যটি দেখতে পায় তা বেছে নেওয়ার সময় এটি আপনার বৈশিষ্ট্যটির প্রতিশ্রুতিগুলি উত্পাদন করার জন্য উত্পাদনে ঠেলে দেওয়ার ক্ষমতা।

তারা কিছুটা ফেসবুকের গেটকিপার জনপ্রিয় করেছিলেন । লিঙ্কডইনের লিক্স আরেকটি ভাল উদাহরণ।

এই সাধারণ ধারণাটি গ্রহণ করা অনেকগুলি সর্বোত্তম অনুশীলনের ভিত্তি রাখে, যার মধ্যে রয়েছে:

অবিচ্ছিন্ন স্থাপনা / বিতরণ - একাধিক কোড একদিনে উত্পাদনকে ধাক্কা দেয়।

ট্রাঙ্ক / মেইনলাইন বিকাশ - বৈশিষ্ট্য শাখাগুলি কেবল টানার অনুরোধের জন্য তৈরি করা উচিত, দীর্ঘায়িত বৈশিষ্ট্য বিকাশের জন্য নয়।

জিনিস হ্রাস করার জন্য আর কোনও প্রকাশের ট্রেন নেই

উত্পাদনের কিউএ / পারফেক্ট টেস্টিং - প্রকৃত ক্যুএ এবং পারফরম্যান্স টেস্টিং উত্পাদন ট্র্যাফিক সহ উত্পাদনের অবকাঠামোতে রয়েছে। বিস্তৃত পারফরম্যান্স ল্যাব এবং মঞ্চের পরিবেশ তৈরিতে সময় নষ্ট করবেন না।

পরীক্ষা -নিরীক্ষা করুন কীভাবে কোনও নতুন বৈশিষ্ট্য আপনার কেপিআইগুলিতে সুই চালায়।

সমস্যাগুলি হটফিক্স বা কোড রোলব্যাকগুলি এড়িয়ে চলুন - হটফিক্স এবং কোড রোলব্যাক উভয়ই স্ট্রেসযুক্ত, দীর্ঘ সময় নিন এবং প্রয়োজনের তুলনায় আরও সমস্যার দিকে পরিচালিত করুন। পরিবর্তে, বৈশিষ্ট্যটি বন্ধ করুন বা এটিকে নামিয়ে দিন।

অন্যরা ওপেন সোর্স লাইব্রেরি উল্লেখ করেছেন। গেটকিপার এবং লিক্সের মতো পূর্ণ সমাধানের একটি ভাল উদাহরণ হ'ল স্প্লিট । আমি স্প্লিটের পক্ষে কাজ করি।


আমি মনে করি কেবলমাত্র সিআই আয়াত AB / cohort / চর্বিযুক্ত পরীক্ষাগুলি সমর্থন করার জন্য বৈশিষ্ট্যযুক্ত পতাকাগুলি সংঘবদ্ধ না করা গুরুত্বপূর্ণ - লক্ষ্যগুলি পৃথক। উদাহরণস্বরূপ, কিউএ / গ্রহণযোগ্যতার জন্য প্রোডে কিছু পাওয়ার জন্য একটি বৈশিষ্ট্য টগল ব্যবহার করা সিআই / সিডিকে সহায়তা করার একটি সহজ সরঞ্জাম হতে পারে এবং এরকম ক্ষেত্রে স্প্লিট ওভারকিল হতে পারে। তারপরে আবার যদি আপনি পাতলা পরীক্ষা বা এ / বি পরীক্ষা করতে চান তবে আপনার সম্ভবত অতিরিক্ত একটি সরঞ্জাম তৈরি এবং টেলিমেট্রি রিপোর্টিং সহ হিপের মতো একটি ভাল বিশ্লেষণ সরঞ্জাম প্রয়োজন these এই দুটি উদ্দেশ্য একত্রিত করার ধারণাটি আমার পছন্দ নয় - আপনার মতো মনে হচ্ছে খুব সহজেই ফুলে যেতে পারে।
ম্যাট কোকাজ

14

এখানে প্রচুর দুর্দান্ত উত্তর রয়েছে, মার্টিন ফোলার পোস্টে জনপ্রিয়, বুনিয়াদি সংজ্ঞাটি জনপ্রিয় করে তুলেছে :

এগুলি কোডের বিট যা "[[মঞ্জুর]] টিমকে কোড পরিবর্তন না করেই সিস্টেমের আচরণ পরিবর্তন করতে সহায়তা করে" "

সুতরাং আমরা historতিহাসিকভাবে সেগুলি সিউডো কোড দ্বারা উপস্থাপিত হিসাবে ভেবেছি:

if(app_settings["beta-mode"] == "true")
  showAwesomeNewGui();
else
  sameOldSnoozeFeset();

এটি ভাবার সম্পূর্ণ সঠিক উপায় এবং ম্যাট এবং আদিল উভয়ই বৈশিষ্ট্যের পতাকার জন্য বিভিন্ন কৌশলগত ব্যবহারের ক্ষেত্রে সুন্দরভাবে এটি প্রসারিত করে।

তবে আমি একটি সংশোধিত সংজ্ঞা দিতে চাই যা ছয় বছরে বাস্তবতা কীভাবে বিকশিত হয়েছে এবং ডটনেটদেব আসল প্রশ্ন জিজ্ঞাসা করার পরে পরিবর্তিত হয়েছে তা প্রতিফলিত করতে চাই। আমি রোলআউট.আইও , একটি বৈশিষ্ট্যযুক্ত পতাকা প্লাটফর্মের জন্য কাজ করি , তাই এই বিবর্তনের জন্য আমার সামনে সামনের সারির একটি আসন ছিল।

সহজ কথায় বলতে গেলে বৈশিষ্ট্যযুক্ত পতাকাগুলি আর আপনার অ্যাপ্লিকেশনটিতে কার্যকারিতার বিটগুলি চালু এবং বন্ধ করার উপায় নয়। এটি "এটি একটি বিবরণ এবং কিছু পরিমাণ মুদ্রা" বলে "একটি চালানের লাইনের আইটেমটি কী" তা উত্তর দেওয়ার মতো। সত্য, তবে এটি চালানের বিস্তৃত স্থানে গাড়ি চালায় না।

বৈশিষ্ট্যযুক্ত পতাকা হ'ল আধুনিক সফ্টওয়্যারটিতে একটি অতি কৌশলগত সমাধানের কৌশলগত বিট। এগুলি সেই মাধ্যম যার মাধ্যমে আপনি যখন আপনার আরও তথ্য রাখেন তখন রানটাইম অবধি আপনার কোডে গুরুত্বপূর্ণ সিদ্ধান্তের যুক্তি স্থগিত করে। এবং, সম্ভবত সবচেয়ে গুরুত্বপূর্ণ, সংস্করণ সংখ্যাটি ২.7-এর চেয়ে বেশি কিনা তা দেখার জন্য একটি চেক সহ এগুলি কেবল আর বিচ্ছিন্নভাবে ঘটবে না; যে সংস্থাগুলি এগুলি ব্যবহার করে তারা সাধারণত একটি বিস্তৃত, সিস্টেম-ব্যাপী পণ্য পদ্ধতির অংশ হিসাবে তাদের অন্তর্ভুক্ত করে।

অন্যরা যেমন উল্লেখ করেছেন, ফেসবুক এবং লিংকডইন এটির সূচনা করেছিল, তবে 2018 সালে, পুরো অনেক সংস্থা এটি করছে। তারা বিকাশের কৌশল, অপারেশন কৌশল (বা যদি আপনি চান ডিভোপস কৌশল, এবং আপনি চান) অংশ হিসাবে রানটাইম জন্য সিদ্ধান্ত লজিক প্রশ্ন মুলতুবি। এই জাতীয় প্রশ্নের উদাহরণ এখানে দেওয়া হল।

  • নতুন অ্যাডমিন স্ক্রিনটি কার দেখা উচিত যা আমরা ঘুরে বেড়াচ্ছি এবং কখন?
  • এই ইস্টার ডিমটি আনলক করতে কোন স্তরের সদস্যতার প্রয়োজন?
  • আমাদের কখন নতুন ডাটাবেসে কাটওভার করা উচিত?
  • রূপান্তর বাড়াতে আমাদের চেকআউট বোতামে একটি চিতা বা anগলের ছবি রাখা উচিত?

রানটাইম পর্যন্ত এই জাতীয় সিদ্ধান্তের উল্লেখযোগ্য সংখ্যক স্থগিত করে এমন একটি অ্যাপ্লিকেশন পাওয়ার জন্য, আপনি অ্যাড-হক পদ্ধতিতে আপনার অ্যাপ্লিকেশনটিতে বৈশিষ্ট্যযুক্ত পতাকা ফেলে দিতে পারবেন না বা আপনি প্রযুক্তিগত debtণে নিজেকে কবর দেবেন। আপনার প্রয়োজন, আজকাল একটি বিস্তৃত বৈশিষ্ট্যযুক্ত পতাকা পরিচালনার কৌশল থাকা দরকার, যাতে কয়েকটি ভিন্ন উপাদান অন্তর্ভুক্ত থাকে।

  • নতুন বৈশিষ্ট্যগুলির জন্য আচরণ পরিবর্তন করতে টগল পয়েন্টগুলি ব্যবহার করা হয়।
  • একাধিক টগল পয়েন্ট একত্রিত হয়ে একটি টগল রাউটার গঠন করে । একটি টগল রাউটার কোনও বৈশিষ্ট্যের স্থিতি নির্ধারণ করে।
  • টগল প্রসঙ্গটি টগল রাউটারকে প্রয়োজনীয় প্রাসঙ্গিক তথ্য সরবরাহ করে (যেমন, নির্দিষ্ট ব্যবহারকারী)।
  • টগল কনফিগারেশন পরিবেশ সম্পর্কে টগল রাউটার তথ্য সরবরাহ করে।

সুতরাং, শেষ পর্যন্ত, বৈশিষ্ট্যযুক্ত পতাকাগুলি কী কী?

ওয়েল, তারা প্রযুক্তি এবং বাজার উভয় প্রয়োজনের সাথে খাপ খাইয়ে নিতে সক্ষম এমন একটি অ্যাপ্লিকেশন রাখার ক্ষেত্রে বিস্তৃত কৌশলগুলির একটি গুরুত্বপূর্ণ অংশ।


9

একটি বৈশিষ্ট্যযুক্ত পতাকা (বৈশিষ্ট্যটি ফ্লিপিং বা বৈশিষ্ট্য টগল হিসাবেও পরিচিত ) হ'ল প্রয়োজনীয় সম্ভাব্য ব্যয়বহুল বৈশিষ্ট্যটি সক্ষম বা অক্ষম করার জন্য একটি স্যুইচ যা (যেমন বলুন, যখন কোনও সাইট অপ্রত্যাশিত ট্র্যাফিকের সাথে হামলা চালাচ্ছে)। আপনি স্কেল আপ না করা পর্যন্ত বা লোড স্পাইকটি না যাওয়া পর্যন্ত এটি আপনাকে একটু সময় কিনে দেবে।

SWIG ডকুমেন্টেশন থেকে এখানে একটি উদাহরণ


6
হ্যাঁ, এটি বৈশিষ্ট্যযুক্ত পতাকাগুলির একটি ব্যবহার যা হ্যাঁ, তবে এটি বোঝার জন্য বড় ধারণাটি হ'ল তারা বৈশিষ্ট্য প্রকাশ এবং কোড মোতায়েনকে ডিকুয়াল করে দেয়, যাতে আপনি যখনই চান কোডগুলি প্রেরণের পরিবর্তে বৈশিষ্ট্যগুলি প্রকাশ করতে পারেন release এটি ক্রমাগত সংহতকরণের ভিত্তি।
এরিক এলিয়ট

6

আমার সংস্থায় আমরা এটির জন্য একটি নিজস্ব সমাধান করতাম। আমরা .jsonপ্রতিটি অ্যাপ্লিকেশনের জন্য ডাউনলোডযোগ্য কনফিগারেশন ( ) ফাইল সরবরাহকারী একটি পরিষেবা তৈরি করেছি । এই কনফিগারেশনে আমরা বৈশিষ্ট্যগুলির জন্য পতাকাগুলি সংরক্ষণ করেছি। সেই কনফিগারটির উপর ভিত্তি করে অ্যাপটি বর্তমান বৈশিষ্ট্যটি প্রদর্শন করতে বা আড়াল করতে পারে। (উদাহরণস্বরূপ সাইডবারে একটি মেনু আইটেম দেখান বা লুকান)।

আমরা একটি অভ্যন্তরীণ প্রশাসক পৃষ্ঠাও তৈরি করেছি যেখানে আমরা বৈশিষ্ট্য-পতাকাগুলি কনফিগার করতে পারি। এটি কিছুক্ষণের জন্য বেশ ভাল কাজ করেছে তবে এর পরে আমরা ব্যবহারকারীর লক্ষ্যবস্তু এবং এ / বি পরীক্ষা করা পছন্দ করতাম। নিজস্বভাবে বিকাশ করার জন্য এটি অনেক বেশি প্রচেষ্টা বলে মনে হয়েছিল, তাই আমরা একটি তৃতীয় পক্ষের সমাধানটি বেছে নিয়েছি। ইতিমধ্যে এখানে উল্লেখ করা হয়েছে যে এর জন্য অনেকগুলি সমাধান রয়েছে।

আমরা কনফিগারগিকে বেছে নিয়েছি কারণ এটি একবারে কাস্টমাইজড টার্গেট গ্রুপ এবং শতাংশ-ভিত্তিক রোলআউট সমর্থন করে। আপনি সমর্থিত ওপেন সোর্স SDK আছে পরীক্ষা করতে পারবেন GitHub


4

বৈশিষ্ট্যযুক্ত পতাকা (বা বৈশিষ্ট্য টগলস) আপনাকে অ্যাপ্লিকেশনটিতে পুনরায় বিল্ডিং / পুনরায় স্থাপনার প্রয়োজন ছাড়াই দূরবর্তী অবস্থান থেকে বৈশিষ্ট্যগুলি সক্ষম করতে দেয়। এটি আপনাকে কোডটি উত্পাদনে মোতায়েন করার অনুমতি দেয় তবে আপনি প্রস্তুত না হওয়া পর্যন্ত বৈশিষ্ট্যটি প্রকাশ করবেন না। আপনি নির্দিষ্ট ব্যবহারকারীদের টার্গেট করতে সক্ষম, যাতে আপনি পরীক্ষা করতে আপনার বিটা ব্যবহারকারীদের জন্য একটি নতুন বৈশিষ্ট্য সক্ষম করতে পারেন।

আমাদের কোম্পানিতে আমরা পূর্বে ব্যবহার করেছি LaunchDarkly থেকে অন্যান্য পরামর্শের FeatureFlags.io । আমরা ফায়ারবেসের রিমোট কনফিগার ব্যবহার করার চেষ্টা করেছিএই কাজটি করার চেষ্টা তবে আমরা দেখতে পেয়েছি যে এটি এই উদ্দেশ্যে উপযুক্ত নয় fit

আমরা বুলেট ট্রেন নামে আমাদের নিজস্ব সংস্করণ বিকাশ করে শেষ করেছি, যা আমরা উত্সাহিত করেছি। এটি বৈশিষ্ট্যযুক্ত পতাকা / টগলস এবং রিমোট কনফিগার উভয়কে একত্রিত করে।


4

বৈশিষ্ট্যযুক্ত পতাকাগুলি বিভিন্ন উদ্দেশ্যে ব্যবহৃত হয়। সাধারণ ধারণাটি হ'ল কোনও রিমোট ড্যাশবোর্ড বা কোন ধরণের ব্যাক-অফিসে কোন বৈশিষ্ট্যটি দেখায় তার উপরে নিয়ন্ত্রণ অর্পণ করা।

কোডটিতে কোনও বৈশিষ্ট্য পতাকাঙ্কিত হওয়ার পরে আপনি এখন কোন অ্যাপ্লিকেশনটিতে কোন ব্যবহারকারী এটি দেখছেন তা নির্ধারণ করতে আপনি বেশ কয়েকটি পদ্ধতি ব্যবহার করতে পারেন: 1. চালু / বন্ধ - আপনার সমস্ত বা কোনও ব্যবহারকারীর কাছেই বৈশিষ্ট্যটি প্রদর্শন করুন। ২. ধীরে ধীরে প্রকাশ - আপনার ব্যবহারকারীদের কয়েক শতাংশকেই বৈশিষ্ট্যটি প্রদর্শন করুন, তারপরে ধীরে ধীরে সমস্ত ব্যবহারকারীর কাছে এটি দেখান। ৩. লক্ষ্য - নির্দিষ্ট ব্যবহারকারীর বৈশিষ্ট্য বা ব্যবহারকারীর বৈশিষ্ট্যের ভিত্তিতে নির্দিষ্ট ব্যবহারকারীদের কাছে বৈশিষ্ট্যটি দেখান।

ফিচার ফ্ল্যাগ (বুলিয়ানস) এবং ফিচার কনফিগারেশন (স্ট্রিং, সংখ্যা ইত্যাদি) নিয়ন্ত্রণ করতে সহায়তা করে এমন সরঞ্জামগুলিকে সাধারণত ফিচার ম্যানেজমেন্ট প্ল্যাটফর্ম বলা হয় কনফিগারেশন.আইও নামে ফিচার ম্যানেজমেন্টের জন্য একটি দুর্দান্ত পরিষেবা রয়েছে


3

কোডিং দৃষ্টিকোণ থেকে একটি বৈশিষ্ট্য পতাকা একটি ifবিবৃতি হিসাবে সহজ হতে পারে যা আপনি লিখে যাচ্ছেন এমন একটি নতুন কোডের চারপাশে মোড়ানো। যখন ifবিবৃতি (বৈশিষ্ট্য পতাকায় হয়) সত্য মূল্যায়ণ তারপরে নতুন কোড সঞ্চালিত করা হবে না।

সফ্টওয়্যার সরবরাহের একটি বাস্তব-বিশ্বের উদাহরণে, if উপরে বর্ণিত বিবৃতিটি সফ্টওয়্যারটি যে পরিবেশে চলছে তার উপর নির্ভর করে আলাদাভাবে মূল্যায়ন করবে example উদাহরণস্বরূপ যদি অ্যাপ্লিকেশনটি আপনার QA সার্ভারে কার্যকর করা হচ্ছে তবে বৈশিষ্ট্যটির পতাকাটি সত্য হবে এবং নতুন বৈশিষ্ট্যটি হবে দেখা যায়। এটি যদি আপনার প্রোডাকশন সার্ভারে কার্যকর করা হয় তবে বৈশিষ্ট্যটির পতাকাটি মিথ্যা প্রত্যাবর্তন করবে এবং বৈশিষ্ট্যটি গোপন থাকবে।

আমার কেরিয়ারের আমার ব্যক্তিগত অভিজ্ঞতা থেকে আমি নিম্নলিখিত উপায়ে বৈশিষ্ট্যযুক্ত পতাকা ব্যবহার করেছি:

  1. গ্রাহকদের কাছে বৈশিষ্ট্য প্রকাশ করা থেকে কোড মোতায়েনের ঘোষণা করা ling এটি ছিল আমাদের বিকাশ প্রক্রিয়াতে বৈশিষ্ট্যযুক্ত পতাকাগুলির প্রথম প্রাথমিক ব্যবহার। আমরা এটি ব্যবহার করে আমাদের বিপণন এবং পণ্য দল এবং প্রকৌশল দল যে উন্নয়ন করছে এবং প্রকাশ করছে তার মধ্যে নির্ভরতা অপসারণ করতে। বৈশিষ্ট্যযুক্ত পতাকা আমাদের লঞ্চের আগে কয়েক সপ্তাহ আগে আমাদের কোড মোতায়েনের অনুমতি দেয় যেখানে এর আগে আমরা একটি রিলিজের আগের রাতে কোড মোতায়েন করছিলাম!

  2. উত্পাদনে পরীক্ষা হচ্ছে। আমরা আমাদের কোড প্রকাশ করার সময় বৈশিষ্ট্যযুক্ত পতাকাগুলি ব্যবহার করার আগে এটি একটি সম্পূর্ণ বা কিছুই নয়, আমাদের সমস্ত গ্রাহক বৈশিষ্ট্যটি পেয়েছিলেন বা তাদের কোনওটিই করেনি। একবারে আমাদের ব্যবহারকারীর অল্প শতাংশে নতুন বৈশিষ্ট্যটি রোল আউট করার জন্য আমরা বৈশিষ্ট্যযুক্ত পতাকা ব্যবহার করেছি। এটি আমাদের সম্পূর্ণ গ্রাহক বেসে কোনও সম্ভাব্য সমস্যা ঝুঁকি না নিয়ে একটি নতুন বৈশিষ্ট্য সম্পর্কে মূল্যবান প্রতিক্রিয়া এবং ডেটা সংগ্রহ করার অনুমতি দিয়েছে।

  3. উন্নয়ন জীবন-চক্রের পরিবেশ প্রতি বৈশিষ্ট্য সক্ষম / অক্ষম করা। আমরা এটি একটি মসৃণ স্থাপনা প্রক্রিয়াটি অনুমোদনের জন্য উন্নয়নের ক্ষেত্রে এটি ব্যাপকভাবে ব্যবহার করেছি - আমাদের কাছে একটি সিআই / সিডি পাইপলাইন রয়েছে যাতে বৈশিষ্ট্যযুক্ত পতাকা ব্যবহার অত্যন্ত গুরুত্বপূর্ণ।

  4. একটি কিল সুইচ তৈরি করা হচ্ছে। আমরা আমাদের অ্যাপ্লিকেশনটির কিছু বৈশিষ্ট্যকে একটি বৈশিষ্ট্যযুক্ত পতাকা দিয়ে আবৃত করেছি যা সেই সময়ে আমাদের অ্যাপ্লিকেশনটির সাথে সমস্যাগুলির সাথে আমাদের সেই বৈশিষ্ট্যটিকে 'হত্যা' করতে দেয়। উদাহরণস্বরূপ, যদি আমরা নিজেকে ভারী বোঝার মধ্যে দেখতে পাই আমরা সমস্যাটির সাথে সহায়তা করতে ওয়েবসাইটের কিছু অ-অপরিহার্য বৈশিষ্ট্যগুলি বন্ধ করতে সক্ষম হয়েছি।

আপনি এখানে বৈশিষ্ট্যযুক্ত পতাকা সম্পর্কে আরও পড়তে পারেন ।

আপনি একাধিক উপায়ে আপনার কোডটিতে বৈশিষ্ট্যযুক্ত পতাকা যুক্ত করতে পারেন।

  1. আপনি নিজের তৈরি করতে পারেন বা তৃতীয় পক্ষের বৈশিষ্ট্যযুক্ত পতাকা গ্রন্থাগার ব্যবহার করতে পারেন এবং আপনার বৈশিষ্ট্যযুক্ত পতাকা ডেটাটিকে একটি কনফিগার ফাইলে যুক্ত করতে পারেন যা আপনার স্থাপনা প্যাকেজে অন্তর্ভুক্ত করা যেতে পারে।
  2. আপনি নিজের তৈরি করতে পারেন বা একটি তৃতীয় পক্ষের বৈশিষ্ট্য ফ্ল্যাগ লাইব্রেরি ব্যবহার করতে পারেন এবং একটি কনফিগার ফাইলে আপনার বৈশিষ্ট্যযুক্ত পতাকা ডেটা যুক্ত করতে পারেন যা রান সময়ে লোড হতে পারে।
  3. আপনার জন্য প্রয়োজনীয় সমস্ত বৈশিষ্ট্যাদির পতাকা পরিচালনা করতে আপনি ক্লাউড-ভিত্তিক বৈশিষ্ট্যযুক্ত পতাকা পরিচালনা পরিষেবা ব্যবহার করতে পারেন।

আপনার নিজের লাইব্রেরিটি লিখতে প্রথমে ভাল ধারণা মনে হতে পারে এবং সাধারণত এটি সেভাবেই শুরু হতে পারে। তবে আপনি শীঘ্রই সমস্যার মধ্যে চলে যেতে পারেন যখন আপনি বৈশিষ্ট্যযুক্ত পতাকার আরও উন্নত ব্যবহারের ক্ষেত্রে প্রয়োগ করতে চান যেমন ব্যবহারকারীর শতকরা এক ভাগ বা নির্দিষ্ট ব্যবহারকারী গ্রুপকে লক্ষ্যবস্তু করা। আপনার নিজস্ব বৈশিষ্ট্যযুক্ত পতাকা বাস্তবায়ন তৈরির সাথে আরেকটি সমস্যা হ'ল আপনি যদি একাধিক ভাষা ব্যবহার করেন তবে আপনার কোডটি একাধিকবার প্রয়োগ করতে হবে।

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

.NET SDK ব্যবহার করে কীভাবে কোনও অ্যাপ্লিকেশনটিতে ফ্লাডগেট বৈশিষ্ট্যযুক্ত পতাকা যুক্ত করা যায় তার একটি উদাহরণ এখানে।

using FloodGate.SDK;

var floodgateClient = new FloodGateClient("API-KEY");

var flag = floodgateClient.GetValue("a-new-feature", false);

if (flag)
{
  // Execute the code for my new feature here...
}

আপনি যদি কোনও উন্নয়ন দলে কাজ করছেন এবং আপনি বৈশিষ্ট্যযুক্ত পতাকা ব্যবহার করছেন না এবং আপনি দলের মধ্যে মোতায়েন এবং কোড পরিচালনার সমস্যাগুলি ভোগ করছেন। এই সমস্যাগুলি সমাধান করার জন্য বৈশিষ্ট্যযুক্ত পতাকা ব্যবহার করা দুর্দান্ত উপায় হতে পারে। আপনার দলগুলির বিকাশের গতি বাড়ানোর জন্য বৈশিষ্ট্যযুক্ত পতাকাগুলির একটি দুর্দান্ত পার্শ্ব প্রতিক্রিয়া রয়েছে।

মার্টিন ফওলার এখানে বৈশিষ্ট্যযুক্ত পতাকার একটি খুব গভীরভাবে লেখার আপ দেয় যা আমি আপনাকে পড়ার পরামর্শ দিই।


2

আমার বোধগম্যতা হ'ল বৈশিষ্ট্যযুক্ত পতাকাগুলি আপনাকে ব্যবহারকারীর নির্দিষ্ট বৈশিষ্ট্যগুলি গ্রহণ করে তা স্থির করে গেট কার্যকারিতাটিতে সহায়তা করে।

উদাহরণস্বরূপ, ধরা যাক আপনি কেবল নিজের বিটা ব্যবহারকারীদেরই একটি নতুন বৈশিষ্ট্য দেখতে চান। আপনি বিটা ব্যবহারকারীদের জন্য সেই বৈশিষ্ট্যটি "টগল" করবেন এবং আপনার বাকী ব্যবহারকারীরা এটি দেখতে পাবেন না।

LDUser user = new LDUser("user@test.com");

boolean showFeature = ldClient.toggle("your.feature.key", user, false);

if (showFeature) {
     // application code to show the feature 
 }
else {
     // the code to run if the feature is off
 }

আমি কিছু ফ্রন্ট-এন্ড জেএস এ / বি পরীক্ষার জন্য লঞ্চডার্ক্লির বৈশিষ্ট্যযুক্ত পতাকাগুলি পরীক্ষা করছি - মনে হচ্ছে এটি ভালভাবে কাজ করছে। বৈশিষ্ট্য টগল এবং বৈশিষ্ট্যযুক্ত পতাকা গ্রন্থাগারগুলির জন্য আপনি এই সাইটটিও দেখতে পারেন ।


1

বৈশিষ্ট্যযুক্ত পতাকাগুলি মূলত আপনাকে কোডটিতে কোনও পরিবর্তন না করে বা একটি নতুন সংস্করণ প্রকাশ না করে কোনও বৈশিষ্ট্য চালু এবং বন্ধ করার ক্ষমতা দেয়। এটি বিশেষত মোবাইল অ্যাপ্লিকেশন বিকাশকারীদের জন্য একটি গুরুত্বপূর্ণ সমাধান যেহেতু তাদের অ্যাপ্লিকেশনটিকে নতুন সংস্করণে আপডেট করার জন্য তাদের কোনও নিয়ন্ত্রণ নেই।

বেশ কয়েকটি সংস্থা মোবাইল অ্যাপ্লিকেশন বিকাশকারীদের জন্য এই পরিষেবা দিচ্ছে।


এগুলি থেকে সাবধান থাকুন। সাধারণ স্যুইচ তৈরি করতে আপনার এই পরিষেবার একটির সংহত করার দরকার নেই যা PROD দৃশ্যমানতা / ইন্টিগ্রেশন থেকে একাধিক বৈশিষ্ট্যগুলি আড়াল করতে ব্যবহার করা যেতে পারে। আপনারও প্রয়োজন হয় না সরাসরি এই লাইভটি করার - যেমন একটি পিআরডি মোতায়েনের সময় মাত্র কয়েক মিনিট (যখন আপনি অন্যান্য অনেক কারণে অপ্টিমাইজ করা উচিত) স্থাপনার জন্য অপেক্ষা করা কোনও বড় বিষয় নয়।
ম্যাট কোকাজ

2
সংযোজন হিসাবে এখানে সেরা বর্তমান বৈশিষ্ট্যযুক্ত পতাকা পরিষেবাগুলির একটি তুলনা করা হয়েছে: Featflagservices.io
সিগ

1

আমার সংস্থায় আমরা আমাদের সাস অ্যাপে প্রবর্তন করি এমন প্রতিটি নতুন বৈশিষ্ট্যের জন্য বৈশিষ্ট্যযুক্ত পতাকা ব্যবহার করি। পারফরম্যান্সের সুবিধাগুলি ছাড়াও এটি আমাদের ধীরে ধীরে নতুন বৈশিষ্ট্যগুলি রোল আউট করার অনুমতি দেয় - প্রথমে বিদ্যুত ব্যবহারকারীদের কাছে নতুন বৈশিষ্ট্য প্রবর্তন করা, তাদের কাছ থেকে প্রতিক্রিয়া পাওয়া এবং এটি সমস্ত ব্যবহারকারীর কাছে রোল আউট করার আগে এটিকে উন্নত করা।

এটি আমাদের পৃথক ব্যবহারকারীদের কাছে অফারটি কাস্টমাইজ করার অনুমতি দেয় - শক্তি ব্যবহারকারীরা সমস্ত বৈশিষ্ট্য চান; সাধারণ ব্যবহারকারীরা কেবলমাত্র বেসিক স্টাফগুলি চান এবং সমস্ত শক্তিশালী জটিল বৈশিষ্ট্যগুলি দ্বারা বিভ্রান্ত হতে পারে। এটি আমাদের বিক্রয় দলকে বিক্রিও করতে দেয়।

এবং অবশ্যই অন্যরা উল্লেখ করেছে যে, যদি আমরা খুঁজে পাই যে কোনও বৈশিষ্ট্য পারফরম্যান্সের অবনতি ঘটাচ্ছে, তবে আমরা কেবলমাত্র সেই বৈশিষ্ট্যটি (সমস্ত ক্লায়েন্টের জন্য বা কোনও ক্লায়েন্টের জন্য যারা সমস্যা সৃষ্টি করছে) বন্ধ করতে পারি।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.