মাইক্রোসার্ভিসেস আর্কিটেকচার (Microservices Architecture)

অ্যাপ্লিকেশন ডেভেলপমেন্টে (Application Development) একটি আধুনিক পন্থা হলো মাইক্রোসার্ভিস (Microservice), যা ক্লাউড নেটিভ (Cloud Native) প্রযুক্তির সুবিধা নেয়। যেখানে আধুনিক অ্যাপ্লিকেশনগুলি, যেমন নেটফ্লিক্স(netflix) একটি একক অ্যাপ এর মত দেখায় কিন্তু এটি আসলে অনেকগুলি ছোট ছোট সার্ভিসের একত্রিত রূপ, সবগুলি একে অপরের সাথে আবদ্ধ ভাবে কাজ করে চলেছে। এই ক্ষেত্রে, কোনো অ্যাপ এর একটি একক পেজ যা আমাদের search, authenticate এবং ভিডিও দেখতে অনুমতি দেয় তা আসলে অনেকগুলি ছোট ছোট সার্ভিস দ্বারা চালিত হয়, যেখানে এক একটি সার্ভিস এক একটি বৈশিষ্ট্য সামলায়। সংক্ষেপে, মাইক্রোসার্ভিস বলতে একটি এপ্লিকেশন আর্কিটেকচার প্যাটার্ন (Application Architecture Pattern) কে বোঝানো হয় যা মনোলিথিক এপ্লিকেশন (Monolithic Application) এর থেকে স্বাভাবিকত বিপরীত।

এটা যেসব সমস্যাতে দৃষ্টিপাত করে

মাইক্রোসার্ভিসেস হল মনোলিথিক এপ্লিকেশনের দ্বারা জাহির করা চ্যালেঞ্জগুলির প্রতি একটি উত্তর। স্বাভাবিকভাবে, একটি অ্যাপ্লিকেশনের বিভিন্ন অংশকে আলাদা আলাদা ভাবে বড় (scaled) করতে হবে। উদাহরণস্বরূপ, একটি অনলাইন দোকানের বিক্রি থেকে প্রোডাক্ট ভিউস বেশি হয়, যার মানে বিক্রির থেকে আমাদের প্রোডাক্ট ভিউস ফাংশনালিটির অনেকগুলি চলমান দৃষ্টান্ত (running instance) প্রয়োজন হয়। একটি মনোলিথিক অ্যাপ্লিকেশনে, আলাদা আলাদাভাবে এই ছোট ছোট যুক্তি বা কোড গুলির সঞ্চার করা সম্ভব নয়। যদি প্রোডাক্ট ভিউস ফাংশনকে আলাদা ভাবে বড়ো করে তোলা না যায় তাহলে আমাদের পুরো সফটওয়্যারটিকে ডুপ্লিকেট করে তার আরো চলমান দৃষ্টান্ত তৈরি করতে হবে, প্রত্যেকটি কম্পনেন্ট সহকারে যা সম্পদের একটি অদক্ষ ব্যবহার। মনোলিথিক অ্যাপ্লিকেশনগুলি ডেভেলোপারদের ডিজাইন পিটফলে (design pitfall) পড়া সহজ করে তোলে। যেহেতু সমস্ত কোড এক জায়গায় রয়েছে, সেই কোডটিকে শক্তভাবে জোড়া দেওয়া (tightly coupled) সহজ এবং উদ্বেগের বিচ্ছেদের নীতি প্রয়োগ করা আরও কঠিন। মনোলিথিকের জন্য প্রায়ই ডেভেলপারদের উৎপাদনশীল (productive) হওয়ার আগে পুরো কোডবেস বোঝার প্রয়োজন হয়।

এটা কিভাবে সাহায্য করে

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


সর্বশেষ পরিবর্তিত November 28, 2024: [bn] Merge `dev-bn` branch into `main` branch (#3301) (6d888bb)