Feature flag pattern in java

এমন প্রকল্পগুলি দেখা খুব সাধারণ বিষয় যা পৃথক বৈশিষ্ট্যগুলির সমস্ত বিকাশের জন্য বৈশিষ্ট্য শাখা প্রক্রিয়া ব্যবহার করে এবং এটি চূড়ান্ত হয়ে গেলে, এটি মুক্তির প্রবাহে একীভূত হতে পারে এবং একটি সংস্করণ তৈরি করতে সক্ষম হতে পারে।

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

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

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

উদ্ধারের জন্য পতাকা প্যাটার্ন!

ফিচার ফ্ল্যাগ, ফিচার টগল হিসাবে পরিচিত, আমাদের দীর্ঘকালীন চলমান বৈশিষ্ট্যগুলিতে একটানা সংহতকরণের জন্য নিখুঁত নিদর্শন।

আমাদের কোড এবং কনফিগারেশন ফাইলের একটি শর্তের মাধ্যমে আমরা রানটাইমে আমাদের অ্যাপ্লিকেশনটির কার্যকারিতা সক্রিয় করতে বা সক্রিয় করতে পারি না এবং বৈশিষ্ট্যটি একবার শেষ হয়ে গেলে আমরা এটিকে সক্রিয় করতে পারি।

সবচেয়ে সহজ বাস্তবায়ন হ’ল আমাদের ডাটাবেসে বৈশিষ্ট্য এবং স্থিতির নাম (সক্রিয় বা না) এবং আমাদের কোডে অন্য (সক্রিয়) নোটশো প্রদর্শন সহ একটি সারণী হবে।

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

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

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

যদি আমাদের প্রযুক্তি স্ট্যাক জাভা বা কোনও ভাষা থেকে তৈরি হয় তবে আমরা ভাগ্যবান।

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

এটির বিভিন্ন সিদ্ধান্ত কৌশল, শ্বেত তালিকা, ব্ল্যাকলিস্ট, ক্লায়েন্ট ফিল্টার, সার্ভারফিল্টার, প্রতীক্ষা ইত্যাদিও রয়েছে They তারা আমাদের নিজস্ব কৌশলও তৈরি করতে দেয়।

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

আমাকে কোড দেখান!

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

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

Ffconsole

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

আমাদের একমাত্র কনফিগারেশনটি FF4jServletConfigration.kt শ্রেণিতে রয়েছে যেখানে আমরা এফএফ 4 জনের শিম, সার্লেট এবং ওয়েব কনসোলটি নিবন্ধভুক্ত করি এবং আমরা ক্লাসটি নোট করি যাতে এটি API টি প্রকাশের জন্য প্রয়োজনীয় পোডগুলি আমদানি করে। উদাহরণটি সহজ করার জন্য, আমার কাছে ইতিমধ্যে সুবিধাটি নিবন্ধিত আছে, এটি প্রশাসন প্যানেলের মাধ্যমে করা আবশ্যক।

আমার-সন্ত্রস্ত ওয়েব

একটি কন্ট্রোলার সহ একটি স্প্রিং বুট অ্যাপ্লিকেশন যা একটি যুক্তি প্রয়োগ করে বা অন্যটি বৈশিষ্ট্যটি সক্রিয় কিনা তা নির্ভর করে। এই অ্যাপ্লিকেশনটি http ব্যবহার করে ffconsole এ সংযুক্ত হবে। স্টোরেজ কী তা জানার জন্য কনফিগারেশনটি সহজ:

এবং নিয়ামকটিতে আমাদের একটি শেষ পয়েন্ট রয়েছে যা এই বৈশিষ্ট্যটি সক্রিয় থাকলে HTTP_200 ফিরিয়ে দেবে এবং যদি এটি না ঘটে তবে HTTP_404।

উপসংহার: জাভাতে ফ্ল্যাগ প্যাটার্ন বৈশিষ্ট্য

সর্বোত্তম কৌশল হ’ল কার্যকরীতা / ব্যবহারকারী গল্পগুলিকে সর্বদা ছোটগুলিতে বিভক্ত করতে সক্ষম করা যাতে তারা এগুলি যত তাড়াতাড়ি সম্ভব সংহত করতে পারে তবে সর্বদা এমন ক্ষেত্রে দেখা যায় যে এটি 100% চূড়ান্ত না হওয়া অবধি এবং এই সুবিধাটি যেখানে প্রযোজ্য সেখানে সরবরাহ করা যাবে না ।

অ্যাপ্লিকেশনটির সঠিক বিকাশ এবং রক্ষণাবেক্ষণের জন্য, একবার পরিষেবা স্থাপনের পরে এবং পরীক্ষার সময় কোড সাফ করার পর্বটি অত্যন্ত গুরুত্বপূর্ণ।

Leave a Reply

Your email address will not be published. Required fields are marked *