গতি এবং দক্ষতা আজকের দ্রুতগামী ব্যবসায়িক পরিবেশে শ্রেষ্ঠত্বের হอลмар্ক।
যে প্রতিষ্ঠানগুলো ম্যানুয়াল, রিজিড প্রসেসে আটকে থাকে, তারা একটি জটিল আর্কিটেকচারের ভার বহন করে এবং ব্যবসায়িক সুযোগগুলো তাদের পাশ থেকে যেতে থাকবে চিরকাল।
কিন্তু যারা তাদের প্রসেস অটোমেট করেছে, তারা আরও প্রোডাক্টিভ, আরও agile, এবং অনেক বেশি সম্ভাবনা থাকে বৃদ্ধি অনুভব করার। এবং সেজন্য প্রতিষ্ঠানগুলোর একটি ডিস্ট্রিবিউটেড বিজনেস রুলস ম্যানেজমেন্ট সিস্টেম (DBRMS) দরকার।
ব্যবসায়িক কমিউনিটিতে প্রভাব ফেলতে চেয়ে, বিশ্রুত কোহলি তার নিজস্ব DBRMS, Bonsai বানিয়েছেন। Redis ব্যবহার করে, Bonsai ব্যবহারকারীদের একটি অ্যাপ্লিকেশন গ্যারান্টি দেয় যা রিয়েল-টাইমে প্রসেস অটোমেট করে, ল্যাগ হওয়ার সম্ভাবনা কমিয়ে প্রোডাক্টিভিটি লেভেল maksimize করে।
চলুন দেখি এই অ্যাপ্লিকেশনটি কীভাবে তৈরি করা হয়েছে। কিন্তু আরও আগে বড় করার আগে, আমরা ইঙ্গিত দিতে চাই যে Redis Launchpad-এ আমাদের আপনার জন্য এক্সসাইটিং রেঞ্জের ইনভেটিভ অ্যাপ্লিকেশনও আছে।
তাই আপনি যদি এই পোস্টটি উপভোগ করেন, তবে পরে ব্রাউজ করতে ভুলবেন না!
Redis ব্যবহার করে একটি ডিস্ট্রিবিউটেড বিজনেস রুলস ম্যানেজমেন্ট সিস্টেম বানানোর পদ্ধতি
- আপনি কী বিল্ড করবেন?
- আপনার কী কী লাগবে?
- আর্কিটেকচার
- শুরু করা
- ব্যাকএন্ড সেট আপ করা
- ফ্রন্টএন্ড সেট আপ করা
- কীভাবে এটি কাজ করে
- বিভিন্ন ফিচার কীভাবে করবেন
১. আপনি কী বিল্ড করবেন?
আপনি একটি ডিস্ট্রিবিউটেড বিজনেস রুল ম্যানেজমেন্ট প্ল্যাটফর্ম বিল্ড করবেন যা ব্যবসায়কে এন্টারপ্রাইজ জুড়ে স্কেলেবল বিজনেস রুল তৈরি, ম্যানেজ এবং ইমপ্লিমেন্ট করতে সাহায্য করবে। অনেক বিজনেস টাস্ক অটোমেট করা যায় এবং অতিরিক্ত রিসোর্স মুক্ত করা যায় যা ব্যবসায়ের অন্য জায়গায় ইনভেস্ট করা যায়।
এই অ্যাপ্লিকেশনটি প্রতিষ্ঠানগুলোর সক্ষম করবে বিজনেস ডিসিশন রুল এবং ডিসিশন লজিক স্পেসিফাই, ডিপ্লয়, এবং ম্যানেজ করতে যাতে অ্যাপ্লিকেশনগুলো কনসিস্টেন্টলি ইন্টেলিজেন্ট ডিসিশন নিতে পারে গতি এবং মানব হস্তক্ষেপ ছাড়া।
নিচে আমরা হাইলাইট করব কোনো কম্পোনেন্টগুলো আপনাকে এই অ্যাপ্লিকেশনকে জীবন্ত করার জন্য লাগবে সেইসাথে ইমপ্লিমেন্টেশন প্রসেসের প্রতিটি ধাপে আপনাকে নিয়ে যাব।
শুরু করার জন্য প্রস্তুত?
ঠিক আছে, সরাসরি শুরু করা যাক।
২. আপনার কী কী লাগবে?
- Python: একটি হাই-পারপজ পাওয়ারফুল প্রোগ্রামিং ল্যাঙ্গুয়েজ হিসেবে ব্যবহৃত
- Redis: একটি ইন-মেমরি ডেটা স্টোর রিয়েল-টাইম ডেটা ইনজেস্ট, প্রসেস, এবং অ্যানালাইজ করতে সাব-মিলিসেকেন্ড লেটেন্সি দিয়ে।
- RedisJSON: Redis-এ JSON সাপোর্ট প্রদানকারী একটি মডিউল হিসেবে ব্যবহৃত
- RedisTimeSeries: Redis-এ টাইম সিরিজ ডেটা স্ট্রাকচার যোগকারী একটি মডিউল হিসেবে ব্যবহৃত
৩. আর্কিটেকচার
৪. শুরু করা
নিশ্চিত করুন যে আপনার কাছে Redis Stack ডাটাবেস আপ এবং রানিং আছে:
৫. ফ্রন্ট এন্ড সেট আপ করা
Create React App-এ শুরু করা
এই প্রজেক্টটি Create React App-এ বুটস্ট্র্যাপ করা হয়েছে।
ধাপ ১: ফ্রন্টএন্ড রিপোজিটরি ক্লোন করুন
ধাপ ২: ডিপেন্ডেন্সি ইনস্টল করুন
yarn install
ধাপ ৩: উপলব্ধ স্ক্রিপ্টগুলো ব্যবহার করুন
প্রজেক্ট ডিরেক্টরিতে, আপনি নিচের স্ক্রিপ্টগুলো রান করতে পারেন:
yarn start
অ্যাপটি ডেভেলপমেন্ট মোডে চালু করে।
https://localhost:3000 খুলুন ব্রাউজারে দেখতে।
পেজটি রিলোড হবে আপনি যদি কোনো এডিট করেন।
আপনি কনসোলে যেকোনো লিন্ট এররও দেখতে পাবেন।
yarn test
ইন্টারঅ্যাক্টিভ ওয়াচ মোডে টেস্ট রানার চালু করে।
টেস্ট চালানোর বিষয়ে আরও ইনফো পেতে সেকশনটি দেখুন।
yarn build
প্রডাকশনের জন্য অ্যাপ বিল্ড করে build ফোল্ডারে।
এটি সঠিকভাবে React-কে প্রডাকশন মোডে বান্ডেল করে এবং বিল্ডকে অপ্টিমাইজ করে সেরা পারফরম্যান্সের জন্য।
বিল্ডটি মিনিফাইড এবং ফাইলনেমগুলিতে হ্যাশ থাকে।
আপনার অ্যাপ এখন ডিপ্লয় করার জন্য প্রস্তুত।
ডিপ্লয়মেন্ট সম্পর্কে আরও ইনফো পেতে সেকশনটি দেখুন।
yarn eject
দ্রষ্টব্য: এটি একটি one-way অপারেশন। একবার eject করলে, আপনি ফিরে যেতে পারবেন না!
আপনি যদি বিল্ড টুল এবং কনফিগারেশন চয়েসগুলোতে সन्तুষ্ট না হন, তবে আপনি যেকোনো সময় eject করতে পারেন। এই কমান্ডটি আপনার প্রজেক্ট থেকে সিঙ্গেল বিল্ড ডিপেন্ডেন্সি রিমুভ করবে।
বদলে, এটি সকল কনফিগারেশন ফাইল এবং ট্রানজিটিভ ডিপেন্ডেন্সি (webpack, Babel, ESLint, etc) আপনার প্রজেক্টে কপি করবে যাতে আপনার উপর স فول কন্ট্রোল থাকে। eject ছাড়া সকল কমান্ড কাজ করবে, কিন্তু সেগুলো কপি করা স্ক্রিপ্টগুলোকে পয়েন্ট করবে যাতে আপনি সেগুলো টুইক করতে পারেন। এই পয়েন্টে, আপনি আপনার দায়িত্বে আছেন।
আপনাকে eject ব্যবহার করতে হবে না। কিউরেটেড ফিচার সেট ছোট এবং মিডিয়াম ডিপ্লয়মেন্টের জন্য উপযুক্ত, এবং আপনাকে এই ফিচার ব্যবহার করতে বাধ্য করবেন না বলে বুঝতে হবে। যাহা হোক, আমরা বুঝতে পারি এই টুলটি উপযোগী হত না যদি আপনি এটি কাস্টমাইজ করতে পারতেন না আপনি যebolë প্রস্তুত।
ধাপ ৪. Bonsai Rule Engine ক্লোন করুন
git clone: https://github.com/redis-developer/bonsai
ধাপ ৫. পাইথন ডিপেন্ডেন্সি ইনস্টল করুন
ধাপ ৬. স্ক্রিপ্ট এক্সিকিউট করুন
৬. কীভাবে এটি কাজ করে
কীওয়ার্ডস
- Namespace
- Rules
- entity
Namespace
রুলসকে আলাদা করার সবচেয়ে লজিক্যাল ভিত্তি হলো namespace। Namespace হলো রুলসের একটি সেট যেগুলো একটি ডেটা সেটের ওপর ইভ্যালুয়েট করা হবে। উদাহরণস্বরূপ, এই পোস্টে পরে, আপনি একটি লয়ালটি ম্যানেজমেন্ট সিস্টেমের জন্য একটি namespace বানাবেন এবং সেই namespace-এর অধীনে সকল রুল সংরক্ষিত থাকবে।
- আমাদের ডেটা সংরক্ষণের স্ট্রাকচার হলো
এখানে namespace হলো:
tax_system.
Namespace তৈরি করার কমান্ডটি হলো:
Entity
এন্টিটি হলো একটি namespace-এর ইনপুট এবং সেই namespace-এ উপস্থিত রুলস ইভ্যালুয়েট করার পর একটি আউটপুট প্রদান করবে।
Rules
সাব কীওয়ার্ডস
- Predicates: এটা মানে আপনার রুলসের ইনপুট কন্ডিশন।
- Results: এটা মানে আপনার রুলসের আউটপুট কন্ডিশন।
- Operators: আমাদের ৭টি অপারেটর আছে:
– eq যার মানে =
– range যার মানে ভ্যালুটি দিয়ে দেওয়া রেঞ্জের মাঝপথে থাকা উচিত (উপরের লিমিট অন্তর্ভুক্ত নয়)
– contains যার মানে স্ট্রিংটি ইনপুট ভ্যালু ধারণ করা উচিত।
– gt যার মানে greater than বা >
– gte যার মানে greater than or equal to >=
– lt যার মানে lesser than <
– lte যার মানে lesser than or equal to <=
মান लीজিয়ে আমরা একটি রুল তৈরি করতে চাই যা নির্ধারণ করবে একজন নাগরিকের ট্যাক্স ভ্যালু যিনি ওন্টারিও প্রদেশে এবং টরন্টো সিটিতে বাস করেন। এছাড়া এই ব্যক্তি ৩৫% ইনকাম ট্যাক্স দেন। তাই আমাদের দুটি ভেরিয়েবল আছে – province এবং city কিন্তু একটি আউটপুট tax_rate।
সেজন্য এই কেসে, province হিসেবে Ontario-এর একটি উদাহরণ predicate(input) হতে পারে ৪ অংশে গঠিত:
প্রতিটি রুল একটি কমান্ড যা ডিসাইড করে যে কোনো নির্দিষ্ট ইনপুট (entity)-এর আউটপুট কী হবে। প্রতিটি রুল একটি namespace-এ নিচের ফরম্যাটে সংরক্ষিত হবে:
Ontario and the city is Toronto the tax rate will be 35.
এটি রুল অবজেক্ট:
এখানে namespace হলো:
loyalty_systemএবং rule_id হলো:
123456.
Namespace-এ রুল আপডেট করার কমান্ড:
Namespace-এ সকল রুল পাওয়ার কমান্ড:
Namespace-এ rule_id দিয়ে একটি রুল পাওয়ার কমান্ড:
৭. বিভিন্ন ফিচার কীভাবে করবেন
রুল তৈরি কীভাবে করবেন
হোম স্ক্রিনে 'Create'-এ ক্লিক করুন।
এরপর, রুল তৈরি করতে পারলে বিভিন্ন ফিল্ড পূরণ করুন।
রুল ভিজুয়ালাইজেশন
রুল তৈরি করার পর, আপনি সেগুলো সহজে ফ্লোচার্ট আকারে ভিজুয়ালাইজ করতে পারবেন।
রুল ইভ্যালুয়েশন
ইভ্যালুয়েশন ফ্লোতে সকল অ্যাট্রিবিউট থাকে যেগুলো রুল তৈরি করতে ব্যবহৃত হয়েছে। অ্যাপ্লিকেশনে একটি কোড আছে যা প্যাটার্ন ম্যাচিং অ্যালগরিদম ব্যবহার করে দেখে কোনো রুল এন্টিটির সাথে সবচেয়ে ভালো ফিট করে সেইসাথে রুলগুলো এক্সিকিউট হওয়ার অর্ডার emit করে।
রুল অ্যানালাইসিস
RedisTimeSeries আপনাকে সকল মেট্রিক্স ভিজুয়ালাইজ করতে দেয় এবং সকল রুলের পারফরম্যান্সের ভিত্তিতে ডেটা-ড্রিভেন ডিসিশন নিতে সাহায্য করে তাদের namespace-এ।
টাইম সিরিজ ডেটা এক্সপোজ করার কমান্ড:
TS.ADD ruleId * 1
উপসংহার: রিয়েল-টাইম ডেটা ব্যবহার করে একটি DBRMS প্ল্যাটফর্ম বানানো যা দক্ষতা বাড়ায়
DBRMS প্ল্যাটফর্ম сотрудниদের এবং ব্যবসায়কে সময়-সাপেক্ষ, জটিল টাস্কগুলো থেকে মুক্ত করতে পারে যা প্রতিষ্ঠানের জন্য অপরিহার্য। এই টাস্কগুলো একটি DBRMS প্ল্যাটফর্মের মাধ্যমে অটোমেট করা একটি প্রতিষ্ঠানকে সম্পূর্ণরূপে পুনর্জীবিত করতে পারে প্রতিটি কর্মীর মনোযোগ কম মেনিয়াল টাস্কের দিকে দিয়ে।
তবে, একটি DBRMS সিস্টেম কার্যকর হতে হলে, এটি একটি রিয়েল-টাইম ডাটাবেস দ্বারা পাওয়ার্ড হতে হবে যাতে কনসিস্টেন্টলি একটি এলিট লেভেলের পারফরম্যান্স গ্যারান্টি দেয়। একটি মাত্র ল্যাগ প্রসেস দক্ষতা স্থবির করতে পারে, যা প্রোডাক্টিভিটি נגেটিভলি প্রভাবিত করে।
Redis-এর শুক্রে, সকল বিজনেস রুল রিয়েল-টাইমে ম্যানেজ, আপডেট, এবং মেইনটেইন করা সম্ভব হয়েছে। এটি আপনাকে রিয়েল-টাইম ইনসাইট পাওয়ার অনুমতি দেয় পারফরম্যান্সের ওপর এবং ইনস্ট্যান্ট ডেটা-লেড ডিসিশন নিতে যা আপনাকে ব্যবসায়িক সুযোগগুলোতে ক্যাপিটালাইজ করতে সাহায্য করবে।
আপনি যদি Bonsai কীভাবে তৈরি হয়েছে সেটি আরও জানতে চান তবে নিশ্চিত করুন বিশ্রুতের YouTube ভিডিও এখানে দেখুন। কিন্তু এটো সেটো নয়… Redis Launchpad-এ আমাদের একটা হোল রেঞ্জের ইনভেটিভ অ্যাপ্লিকেশন আছে আপনার চেক আউট করার জন্য।
সারা বিশ্বের প্রোগ্রামাররা Redis-এর ম্যাজিকে ট্যাপ করছে প্রতিদিনের জীবনে প্রভাব ফেলতে।
হেড অন ওভার। ইনস্পায়ার্ড হন। এবং Redis-র সাথে মজা করুন।
অ্যাপটি কে বানিয়েছেন?
Vishrut Kohli
Vishrut একজন ফুল-স্ট্যাক ডেভেলপার এবং ডেটা এন্থুসিয়াস্ট যিনি Python, MATLAB/octave, এবং মেশিন লার্নিং অ্যালগরিদমে প্রফিশিয়েন্ট। আপনি যদি তার সকল প্রজেক্টের সাথে আপ টু ডেট থাকতে চান তবে GitHub-এ ফলো করতে ভুলবেন না।