আপনি কীভাবে আপনার বহু-ভাড়াটে সিস্টেমে এক্সটেনসিবিলিটি পরিচালনা করবেন?


13

আমি এখন কয়েকটি বড় ওয়েব ভিত্তিক মাল্টি-টেন্যান্ট পণ্য পেয়েছি এবং খুব শীঘ্রই আমি দেখতে পাচ্ছি যে ভাড়াটে নির্দিষ্ট অনেক কাস্টমাইজেশন থাকবে।

এখানে বা সেখানে একটি অতিরিক্ত ক্ষেত্র, একটি অতিরিক্ত পৃষ্ঠা বা একটি কার্যপ্রবাহের মাঝখানে কিছু অতিরিক্ত যুক্তি - এই ধরণের জিনিস।

এর মধ্যে কিছু কাস্টমাইজেশন মূল পণ্যটিতে রোল করা যায় এবং এটি দুর্দান্ত। এর মধ্যে কয়েকটি অত্যন্ত সুনির্দিষ্ট এবং অন্য সকলের মতো করে।

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

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

আমি যে ধরণের জিনিসটি তৈরি করতে প্ররোচিত হতে পারি তার মতো শব্দ তবে সম্ভবত তা করা উচিত নয়। :)

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

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

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


3
আমি অনুমান করছি এই তাই প্রশ্ন, যা এই এক একটি অভিন্ন ক্রস পোস্টে করে তোলে। এটি করবেন না, হয় এখানে স্থানান্তরিত হওয়ার জন্য এসও প্রশ্নটি জিজ্ঞাসা করুন, বা আপনি যদি বিভিন্ন উত্তর খুঁজছেন, তবে ঠিক কেন এসও প্রশ্নের উত্তর সন্তুষ্ট নয় তা আমাদের বলুন ।
ইয়ানিস

আপনি ঠিক বলেছেন, প্রোগ্রামারদের ক্ষেত্রে প্রশ্নটি আরও ভাল, তবে এখনও মনে হচ্ছে আপনি বেশ সুন্দর উত্তর পেয়েছেন। আমি প্রশ্নটি সম্পাদনা করে এসও প্রশ্নটি উল্লেখ করতে চাই।
maple_shaft

উত্তর:


8

আমি একটি অনুরূপ সমস্যার মুখোমুখি হয়েছিলাম এবং আমি আপনাকে বলব যে এটির সমাধানে আমি কীভাবে চলেছি।

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

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

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

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


+1: এরকম শব্দগুলি এক ঘন্টা বা দুই ঘন্টা সময় নিয়েছে। :)
ব্রায়ান ম্যাকেকে

1
@ ব্রায়ানম্যাককে, ভাল, একবার কাজটি শেষ হয়ে গেলে (এবং এটি একটি স্লোগান ছিল), আমাদের গ্রাহকরা যে গতিতে আমরা কাস্টমাইজেশন ঘুরিয়ে দিতে পারছিলাম তাতে খুব খুশি হয়েছিল। মনে রাখবেন যে এমভিসি কাঠামো (যতগুলি ভিউ / পৃষ্ঠাগুলি উদ্বিগ্ন) বহু-প্রকল্প হওয়ার জন্য তাদের খুব ভাল leণ দেয় না। এসভিএন এর সম্পত্তি বৈশিষ্ট্যগুলি ব্যবহার করে এবং মূল সংগ্রহস্থল থেকে মূল দৃষ্টিভঙ্গি নিয়ে আসা এবং এটি কাস্টমাইজ করার জন্য সিএসএস / লেআউট ব্যবহার করে আমরা এটি পেয়েছিলাম। তবে বছর, বেশ কয়েক ঘন্টা: পি
মূ-রস

কেবল কৌতূহলী, আপনি কীভাবে আর্কিটেকচারটি বাস্তবায়িত করতে কত সময় নিয়েছিলেন এবং কতগুলি দেব এতে জড়িত ছিলেন বলে মনে করেন?
ব্রায়ান ম্যাকেকে

1
@ ব্রায়ানম্যাককে, 5 মাস ছিল সমস্ত সিএসএস / এইচটিএমএল / আংশিক দর্শন, জাভাস্ক্রিপ্ট, ইত্যাদি করতে একটি ইউআই বিকাশকারী এবং বাকীটি করার জন্য একটি ব্যাকএন্ড বিকাশকারী (আমার)।
মু-রস

4

পরিচালনা করার জন্য প্রচুর সংস্করণ যুক্তি এবং কোডের স্তর থাকা আপনার ওয়েব অ্যাপ্লিকেশন / সাইটের মান যোগ করছে না। এটি কী চলছে তা বোঝার জন্য আরও মস্তিষ্কের শক্তি প্রয়োজন এবং আপনি যা করছেন তার মূল থেকে আপনাকে বিভ্রান্ত করে।

আমি অন্যভাবে পরামর্শ। আমি জটিল বিষয়গুলি সহজ রাখার পরামর্শ দিই।

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

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

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

এতক্ষন পরে দেওয়ালে মাথা ঠেকানো, তারপরে সরল কিছুতে হোঁচট খাওয়ার বিষয়টি কেবল আমার অভিজ্ঞতা।

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


আপনার অভিজ্ঞতা ভাগ করে নেওয়ার জন্য +1। আমি যা শুনছি বলে মনে হচ্ছে তা হ'ল "এটি খুব কঠিন সমস্যা।" আমি যে বাস্তবতার মুখোমুখি হচ্ছি তা হ'ল এই সিস্টেমে প্রচুর কাস্টমাইজেশন থাকবে এবং এগুলি সবার জন্য উপযুক্ত নয় ... মনে হচ্ছে আপনি বলছেন যে আপনি কোনও পরিষেবা স্তর উন্মোচনের পদ্ধতি গ্রহণ করেছেন এবং তারপরে লোকেরা সেটিকে গ্রাস করতে দিচ্ছেন তবে তারা চায় - আমার সুবিধা আছে, কমপক্ষে, আমরা অভ্যন্তরীণভাবে সমস্ত এক্সটেনশন লিখি। তবে এটি পরিচালনা করতে এখনও বিশৃঙ্খলা রয়েছে (সিএনটিডি)
ব্রায়ান ম্যাককে

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

আপনি কৌতূহলী হলে ব্রায়ান, এফওয়াইআই কিটগুই.কম এবং হাবসফট ডটকম।
জেসন সেব্রিং

2

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

এটি ব্যবহারকারীর জন্য অতিরিক্ত ডেটা সঞ্চয় করার সহজ এবং পারফরম্যান্স উপায়। এই ক্ষেত্রগুলির নাম এবং প্রকার সম্পর্কে অতিরিক্ত তথ্য সংরক্ষণ করা দরকার।

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


1

1) আপনার নিজের বাক্সে অন্য কারও কোড চালানো বেশ শক্ত সমস্যা। হয় আপনি তাদের বিশ্বাস করতে পারেন বা আপনি যুক্তিসঙ্গতভাবে দায়িত্ব স্থগিত করতে পারেন, আপনাকে তাদের কোডটি খুব ভারীভাবে স্যান্ডবক্স করতে হবে এবং সুরক্ষার জন্য গড়ের চেয়ে গড় উত্সর্গীকৃত থাকতে হবে। আপনার প্লাগইন সিস্টেমটি আরও কার্যকারিতা মঞ্জুর করার সাথে সাথে এটিকে সুরক্ষিত করে তুলতে অসুবিধা বাড়ছে। পরিষেবাদি অস্বীকার করার মতো বিষয় (প্লাগইনগুলি অত্যধিক সংস্থান গ্রহণ করে), তথ্য ফাঁস (প্লাগিনগুলি অন্যান্য ভাড়াটেদের ডেটা অ্যাক্সেস করতে পারে) ইত্যাদি খুব বাস্তব এবং ঝামেলা হতে পারে, আমি যদি এতে লোকদের খুব পরিচিত না করি তবে আমি এতে অংশ নেব না unless এই সমস্যাগুলি বা খুব উপযুক্ত লোকেরা এটি সঠিকভাবে পাওয়ার জন্য প্রচুর সময়।

2) হ্যাঁ, মডুলারিটি এবং কাস্টমাইজিবিলিটি শক্ত। কৌশল প্যাটার্নের মতো জিনিসগুলি সহায়তা করতে পারে (ফাংশন পয়েন্টারগুলির অভিনব নাম; জাভাতে এটি সাধারণত একটি ইন্টারফেস ঘোষণা করে প্রয়োগ করা হয় যা শ্রেণীর ব্যবহারকারীরা আপনার কোডের আচরণটি কাস্টমাইজ করার জন্য প্রয়োগ করতে পারে) তবে আপনি খুব বিচ্ছিন্ন এবং ডিকোপলড চাইবেন এই কাজ করার জন্য কোড।

3) ডেটা-ভিত্তিক, এটি স্কিমহীন স্টোরেজটি কার্যকর হওয়ার উদাহরণগুলির মধ্যে একটি হতে পারে। আপনার যদি একটি সম্পর্কিত সম্পর্কিত মডেল থাকে, তবে বিভিন্ন গ্রাহকের জন্য প্রচুর কলামের সাথে টেবিল রাখা সমস্যাযুক্ত (হ্যাঁ, আপনি প্রচুর পরিমাণে নালাগুলি কলাম দিয়ে শেষ করেছেন, যা খারাপ one একটি কারণ হ'ল সঠিক বাধা নির্ধারণ করা শক্ত বা অসম্ভব [যথা যে সীমাবদ্ধতাগুলি নালগুলির অবৈধ সংমিশ্রণগুলি উপস্থিত হতে দেয় না])। (অর্থাত ক্রেতা-নির্দিষ্ট টেবিল যোগ করার পদ্ধতি usersএবং foo_usersসঙ্গে, usersক্ষেত্র সকল গ্রাহককে জন্য বৈধ ধরে foo_usersউত্তম ফু নির্দিষ্ট fileds থাকার); আপনার সহজেই সঠিক প্রতিবন্ধকতা থাকতে পারে তবে আপনার আরডিবিএমএস এটিকে কৌতূহলীভাবে পরিচালনা করতে পারে না (বিস্ফোরণে যোগ দেওয়ার কারণে, টেবিলের সংখ্যার সীমা ইত্যাদি ইত্যাদি) এবং সম্ভবত আপনার কোডে কুৎসিত দেখাবে।

আপনি আপনার আরডিবিএমএসে একটি মূল-মান স্টোর বাস্তবায়ন করতে পারেন, যা আপনার ডেটা মডেলটিকে তুলনামূলক কম করে তোলে এবং অস্বস্তি তৈরি করে (যেমন রিলেশনাল ডাটাবেসগুলি রিলেশনাল-ইশ মডেলের সাথে সবচেয়ে ভাল কাজ করে)। আমি নিশ্চিত নোএসকিউএল সমাধান সামগ্রিকভাবে সমস্যাটি খাপ খায় কিনা, তবে বেশিরভাগ বাস্তবায়নের স্কিমলেস-নেস সুবিধা হতে পারে an

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