Skip to content

Why microservices? (Monolith vs Microservices)

সিস্টেমের গঠন বা আর্কিটেকচার কেমন হবে তা নির্ধারণ করা একটি বড় চ্যালেঞ্জ। মূলত দুটি প্রধান আর্কিটেকচার আমরা ব্যবহার করি: Monolith এবং Microservices

1. Monolithic Architecture

মনোলিথ হলো এমন একটি সিস্টেম যেখানে অ্যাপ্লিকেশনের সব পার্ট (ইউজার ম্যানেজমেন্ট, পেমেন্ট, নোটিফিকেশন ইত্যাদি) একটি মাত্র কোডবেস এবং একটি মাত্র সার্ভারে থাকে।

সুবিধা:

  • Simple to develop: শুরুতে ডেভেলপ করা এবং টেস্ট করা খুব সহজ।
  • Easy deployment: শুধুমাত্র একটি ফাইল বা একটি সার্ভারে ডিপ্লয় করলেই হয়।
  • Performance: ইন্টার-সার্ভিস কমিউনিকেশন ল্যাটেন্সি থাকে না।

অসুবিধা:

  • Hard to scale: কোনো একটি পার্টের জন্য পুরো অ্যাপ্লিকেশন স্কেল করতে হয়।
  • Large codebase: কোডবেস অনেক বড় হয়ে গেলে বুঝতে এবং মেইনটেইন করতে সমস্যা হয়।
  • New technology adoption: নতুন কোনো ল্যাঙ্গুয়েজ বা ফ্রেমওয়ার্ক ব্যবহার করা খুব কঠিন।

2. Microservices Architecture

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

কেন মাইক্রোসার্ভিস ব্যবহার করবেন?

  1. Independent Scaling: যে সার্ভিসে লোড বেশি (যেমন: পেমেন্ট বা সার্চ), শুধুমাত্র তাকেই স্কেল করা যায়।
  2. Fault Isolation: একটি সার্ভিস ডাউন হলেও পুরো সিস্টেম বন্ধ হয়ে যায় না।
  3. Technology Variety: আলাদা আলাদা সার্ভিসের জন্য আলাদা ল্যাঙ্গুয়েজ (যেমন: একটি Go-তে, অন্যটি Python-এ) ব্যবহার করা যায়।
  4. Autonomous Teams: বিভিন্ন টিম আলাদা আলাদা সার্ভিস নিয়ে স্বাধীনভাবে কাজ করতে পারে।

Monolith বনাম Microservices

বৈশিষ্ট্যMonolithMicroservices
কোডবেসএকটি সিঙ্গল ইউনিটঅনেকগুলো ছোট ইউনিট
স্কেলিংপুরো সিস্টেম স্কেল করতে হয়সার্ভিস অনুযায়ী স্কেল করা যায়
ডিপ্লয়মেন্টসহজ (Single deployment)জটিল (Distributed deployment)
টেকনোলজিলিমিটেডঅনেক স্বাধীনতা থাকে

TIP

শুরুতে ছোট প্রজেক্টের জন্য Monolith সেরা। কিন্তু যখন ইউজার এবং টিমের সংখ্যা অনেক বেড়ে যায়, তখন Microservices এ মুভ করা বুদ্ধিমানের কাজ।

Released under the MIT License.