Nest.JS PlatoBlockchain ডেটা ইন্টেলিজেন্স সহ একটি ক্লিন আর্কিটেকচার বাস্তবায়ন করা। উল্লম্ব অনুসন্ধান. আ.

Nest.JS এর ​​সাথে একটি পরিষ্কার আর্কিটেকচার বাস্তবায়ন করা

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

Nest.JS এর ​​সাথে একটি পরিষ্কার আর্কিটেকচার প্রয়োগ করার জন্য আমাদের প্রথমে এই কাঠামোটি কী এবং এটি কীভাবে কাজ করে তা বুঝতে হবে।

Nest বা Nest.JS হল TypeScript-এর সাহায্যে তৈরি দক্ষ, স্কেলযোগ্য Node.js অ্যাপ্লিকেশন (সার্ভার-সাইড) তৈরির জন্য একটি কাঠামো। এটি এক্সপ্রেস বা ফাস্টফাই ব্যবহার করে এবং বিকাশকারীদের তাদের কোডের মধ্যে প্রচুর পরিমাণে মডিউল (তৃতীয়-পক্ষ) ব্যবহার করতে সক্ষম করার জন্য বিমূর্ততার একটি স্তরের অনুমতি দেয়।

আসুন এই পরিষ্কার স্থাপত্যটি কী তা নিয়ে গভীরভাবে খনন করা যাক। 

ঠিক আছে, আপনি সবাই MVC আর্কিটেকচার ব্যবহার করেছেন বা অন্তত শুনেছেন। MVC মানে মডেল, ভিউ, কন্ট্রোলার। এর পেছনের ধারণাটি হল আমাদের প্রকল্প কাঠামোকে 3টি ভিন্ন বিভাগে বিভক্ত করা।

1। মডেল: এটিতে অবজেক্ট ফাইল থাকবে যা ডিবি-তে সম্পর্ক/নথির সাথে মানচিত্র।

2. নিয়ন্ত্রক: এটি অনুরোধ হ্যান্ডলার এবং ব্যবসায়িক যুক্তি বাস্তবায়ন এবং সমস্ত ডেটা ম্যানিপুলেশনের জন্য দায়ী।

3. দেখুন: এই অংশে এমন ফাইল থাকবে যা ডেটা প্রদর্শনের সাথে সম্পর্কিত, হয় HTML ফাইল বা কিছু টেমপ্লেটিং ইঞ্জিন ফাইল।

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

এখনও বিভ্রান্ত? আমাকে বিস্তারিত ব্যাখ্যা করা যাক.

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

আসুন নীচের চিত্রটি দিয়ে এটি বোঝার চেষ্টা করি।

উত্স: পরিষ্কার আর্কিটেকচার শঙ্কু 

আপনি দেখতে পাচ্ছেন যে আমরা আমাদের স্থাপত্যকে 4 স্তরে ভাগ করেছি:

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

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

3. কন্ট্রোলার/গেটওয়ে: এগুলি এমন চ্যানেল যা নির্ভরতা ইনজেকশন ব্যবহার করে বাহ্যিক সরঞ্জাম এবং লাইব্রেরি ব্যবহার করে ব্যবহারের ক্ষেত্রে প্রয়োগ করতে সহায়তা করে।

4. বাহ্যিক সরঞ্জাম: আমাদের যুক্তি তৈরি করার জন্য আমরা যে সমস্ত সরঞ্জাম এবং লাইব্রেরি ব্যবহার করি সেগুলি এই স্তরের অধীনে আসবে যেমন। ORM, ইমেইলার, এনক্রিপশন, ইত্যাদি

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

ঠিক আছে, এতক্ষণে, আপনি Nest.JS-এর সারাংশ পেয়েছেন এবং বুঝতে পেরেছেন যে কীভাবে পরিষ্কার আর্কিটেকচার কাজ করে। এখন প্রশ্ন জাগে, এই দুটি কীভাবে সম্পর্কযুক্ত?  

আসুন Nest.JS-এর 3টি বিল্ডিং ব্লক কী এবং তাদের প্রত্যেকটি কী করে তা বোঝার চেষ্টা করি।

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

সংক্ষেপ,

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

উপসংহার:

Nest.JS হল একটি শক্তিশালী Node.JS ফ্রেমওয়ার্ক এবং বর্তমানে উপলব্ধ সবচেয়ে সুপরিচিত টাইপস্ক্রিপ্ট। এখন যেহেতু আপনি এই কাঠামোর লোডাউন পেয়েছেন, আপনি অবশ্যই ভাবছেন যে আমরা একটি পরিষ্কার আর্কিটেকচার সহ একটি প্রকল্প কাঠামো তৈরি করতে এটি ব্যবহার করতে পারি কিনা। ভাল, তবে উত্তর হ্যাঁ হয়! একেবারে। কিভাবে? আমি এই নিবন্ধের পরবর্তী সিরিজে ব্যাখ্যা করব। 

ততক্ষণ, সাথে থাকুন!

লেখক সম্পর্কে:

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

আমাদের সর্বশেষ ব্লগ পড়ুন: গোলং-বিগো ফ্রেমওয়ার্ক এবং এর অ্যাপ্লিকেশন

আপনার ইনবক্সে বিতরণ করা মূল্যবান জ্ঞান

সময় স্ট্যাম্প:

থেকে আরো মন্ত্র ল্যাব