বিপুল সংখ্যক কাঠামোগত কনফিগারেশন / সম্পত্তি ফাইল পরিচালনা করার জন্য সেরা অনুশীলন


15

এমন একটি সিস্টেমের কল্পনা করুন যাতে প্রচুর সংখ্যক সার্ভার রয়েছে। তাদের প্রত্যেকের বেশ কয়েকটি সেটিংস রয়েছে:

  • সার্ভারের সাথে নির্দিষ্ট কিছু
  • অঞ্চলের সাথে নির্দিষ্ট কিছু
  • তাদের সমস্ত জুড়ে কিছু সাধারণ
  • আপনার কিছু কাস্টম গ্রুপিং থাকতে পারে যেমন সার্ভারের এই গ্রুপটি কেবল পড়ার জন্য
  • প্রভৃতি

আমার মনে রাখা বর্তমান অনুশীলন হ'ল ওভাররাইডিং ক্ষমতা সহ একটি সাধারণ সম্পত্তি কাঠামো।

উদাহরণের প্রয়োজনে গুগল সার্ভারগুলি নিতে দিন। তাদের প্রত্যেকের লোড করার জন্য সেটিংসের একটি তালিকা রয়েছে।

উদাহরণস্বরূপ, লন্ডন সার্ভারে থাকতে পারে:

rootsettings.properties, europesettings.properties, londonsettings.properties, searchengine.properties, ইত্যাদি

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

উদাহরণস্বরূপ: ডিফল্ট হিসাবে rootsettings.propertiesথাকতে পারে accessible=falseতবে এটির searchengine.propertiesসাথে ওভাররাইড হয়ে গেছেaccessible=true


এই কাঠামোর সাথে আমার যে সমস্যা হচ্ছে তা হ'ল নিয়ন্ত্রণ থেকে বের হওয়া খুব সহজ। এটি মোটেই কাঠামোগত নয়, এর অর্থ আপনি যে কোনও স্তরে যে কোনও সম্পত্তি সংজ্ঞায়িত করতে পারেন এবং অনেকগুলি আইটেম অচল হয়ে যেতে পারে।

ততক্ষণে নেটওয়ার্কটি বাড়ার সাথে সাথে মাঝারি স্তরের পরিবর্তন করা অসম্ভব হয়ে পড়েছে, কারণ আপনি এখন প্রচুর সংখ্যক সার্ভারকে প্রভাবিত করেন।

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

আপনার কাছে আরও ভাল কনফিগারেশন ম্যানেজমেন্ট আর্কিটেকচার সম্পর্কে কোনও পরামর্শ / ধারণা থাকলে আমি প্রশংসা করব।


1
প্রথম জিনিস: প্রারম্ভকালে লোড করা সমস্ত বৈশিষ্ট্য লগইন করুন, কমপক্ষে আপনি জানেন যে মানটি ব্যবহৃত হচ্ছে।
ওয়ালফ্রাট

@ সটায়ান, আপনি কি "সফ্টওয়্যার কনফিগারেশন" বা "সার্ভার কনফিগারেশন" পদ্ধতির সন্ধান করছেন?
ইউসুবভ

অসম্ভব ধারণা, খুব ভাল না হলেও: কেউ কি এই জাতীয় কোনও কিছুর জন্য "সিএসএস-জাতীয়" সিস্টেম ব্যবহার করেছে? ফাইলের নামগুলি কাঠামোযুক্ত (বা অতিরিক্ত হিসাবে) পরিবর্তে তাদের মধ্যে থাকা ডেটা।
ব্যবহারকারী949300

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

আমার কাছে একটি যুক্তিসঙ্গত পদ্ধতির মতো বলে মনে হচ্ছে।
ডাগনলিজ

উত্তর:


5

আমি মনে করি আপনাকে প্রথমে নিজেকে কিছু প্রশ্ন জিজ্ঞাসা করতে হবে এবং কয়েকটি বিষয় পরিষ্কার করতে হবে, তবে কীভাবে আপনার সমস্যার সমাধান করবেন তা আপনি আরও ভাল করে সিদ্ধান্ত নিতে পারেন।

প্রথম: সার্ভারগুলির উপর কার নিয়ন্ত্রণ থাকবে?

  • এটি কি একা প্রশাসক যিনি শত শত সার্ভার নিয়ন্ত্রণ করতে চলেছেন? তারপরে আপনার কনফিগারেশনটি যথাসম্ভব কেন্দ্রীভূত করা দরকার।

  • বা প্রতিটি সার্ভার সম্ভাব্যভাবে কোনও পৃথক প্রশাসকের নিয়ন্ত্রণে রয়েছে, কে চায় না যে তার সেটিংসকে কেন্দ্রিয়ীকরণের কনফিগারেশনের মাধ্যমে ওভাররুল করা বা নিয়ন্ত্রণ করতে হবে? তারপরে আপনার বিকেন্দ্রীভূত কনফিগারেশনের উপর ফোকাস করা উচিত। যদি প্রতিটি অ্যাডমিনের সর্বাধিক ব্যবস্থাপনার জন্য এক মুঠো সার্ভার থাকে তবে এটি এখনও ম্যানুয়ালি পরিচালনাযোগ্য is

দ্বিতীয়: আপনার কি সত্যিই প্রচুর কনফিগারেশন বিকল্পের প্রয়োজন, বা আপনি সংখ্যাটি কয়েকটিতে নামিয়ে রাখতে পারেন? "কেবলমাত্র" ক্ষেত্রে সমস্ত কিছুর কনফিগারযোগ্য করার পরিবর্তে, আপনার সিস্টেমে আসলেই প্রয়োজনীয় বিকল্পগুলি সম্পর্কে নিজেকে আরও সীমাবদ্ধ করুন। এটি করা যেতে পারে, উদাহরণস্বরূপ, দ্বারা

  • আপনার সফ্টওয়্যারটিকে কিছুটা স্মার্ট করে তুলুন (উদাহরণস্বরূপ, পরিবেশটি জিজ্ঞাসা করে প্রোগ্রামটি স্বয়ংক্রিয়ভাবে কী নির্ধারণ করতে পারে)?

  • কঠোরভাবে "কনফিগারেশন ওভার কনভেনশন" অনুসরণ করে - উদাহরণস্বরূপ, কিছু নামকরণের কনভেনশন প্রতিষ্ঠা করার মাধ্যমে, বা অন্যান্য বিকল্পগুলি থেকে ডিফল্ট হিসাবে কিছু বিকল্প প্রাপ্ত করার মাধ্যমে

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

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


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

2

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

rootsettings.properties
rootsettings.eurosettings.properties
rootsettings.eurosettings.londonsettings.properties

এটি কিছুটা এমন পয়েন্ট অবধি কাজ করবে যেখানে আপনার কনফিগারেশন মানগুলির একটি সমষ্টি রয়েছে যা কোনও অঞ্চলে সরে যায় না। সুতরাং আপনার বেছে নেওয়া সাংগঠনিক অক্ষগুলি সম্পর্কে আপনার বিবেচ্য হতে হবে।

আমি যেটি বেশি পছন্দ করি তা হ'ল তাদের নিজস্ব ফাইলে কনফিগারেশন মানগুলির একত্রিত করা এবং এতে একটি (লিফ) কনফিগারেশন ফাইল পয়েন্ট থাকে।

একটি উদাহরণ:

bigcity.searchsettings.properties
regional.searchsettings.properties

ভিতরে londonsettings.propertiesআপনি যেমন একটি মান থাকতে পারে:

searchsettings:bigcity.searchsettings.properties

এটি আরও বেশি ডিগ্রি স্বাধীনতা বা একটি অতিরিক্তের জন্য অনুমতি দেয়।


2

আমারও একই সমস্যা ছিল এবং আমার সমাধানটি খোলা ছিল। আপনি এখানে সোর্স কোডটি https://github.com/Bikeman868/Uchchin খুঁজে পেতে পারেন

আমি এটি প্রতিটি সার্ভারে বেশ কয়েকটি অ্যাপ্লিকেশন এবং একাধিক পরিবেশ সহ অনেকগুলি সার্ভার সহ একটি বৃহত সিস্টেমে ব্যবহার করি। এটিতে কনফিগারেশন পরিচালনার জন্য ডার্টে লেখা একটি ইউআই অন্তর্ভুক্ত রয়েছে।

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

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

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

সার্ভারটির একটি REST + JSON ইন্টারফেস রয়েছে তাই বেশিরভাগ বিকাশ সিস্টেমে কাজ করে এবং নেট অ্যাপ্লিকেশনগুলির জন্য একটি সুবিধাজনক ক্লায়েন্ট লাইব্রেরি রয়েছে।


1

এই ধরণের সেটিংস পরিচালনা করা দুঃস্বপ্ন। আপনার সফ্টওয়্যার উপাদানগুলি সমস্ত ক্ষেত্রে পরিচালনা করে এগুলি যথাসম্ভব হ্রাস করার চেষ্টা করা reduce

যেমন কোনও অঞ্চলের জন্য এপিআই সার্ভার স্থাপনের পরিবর্তে, এপিআই কল দিয়ে অঞ্চলটি পাস করুন এবং একক সার্ভার সেটআপ সমস্ত অঞ্চল পরিচালনা করতে দিন।

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

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

আপনি নিজের মেটা-কনফিগারেশন ফাইলগুলিতে পরিবর্তন আনতে চান না এবং তারপরে আপনার বিভিন্ন অঞ্চল / সার্ভার / কাস্টম গ্রুপিংগুলিতে কোন কনফিগার ফাইল তৈরি করে তা পরীক্ষা করতে হবে You


0

গবেষণা নেই; সমস্ত ব্যক্তিগত মতামত, 30+ আইটি অভিজ্ঞতা। একটি জটিল ডেটা স্ট্রাকচারের মতো মনে হচ্ছে, যা প্রচুর সংখ্যক ব্যবহারকারীর সাথে দ্রুত পরিবর্তন / পরিবর্তন করতে পারে।

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

এটাই আমার পরামর্শ।

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

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