তুমি একটি ছোট্ট চায়ের দোকান চালাচ্ছো, যেমন আগের গল্পে আমরা বলেছি। এবার আমরা তোমার দোকানের কাজের ধরনকে আরো বড় আকারে দেখবো এবং সেটাকে দুইভাবে ভাঙবো—একটা হলো Monolithic Applications এবং আরেকটা হলো Microservices।
Monolithic Application – একক এবং কেন্দ্রীভূত দোকান:
তুমি শুরুতে একাই চায়ের দোকান চালাচ্ছিলে। তখন তোমার দোকানে যা যা দরকার ছিল সব তুমি একাই করছো:
- চা বানানো
- কাস্টমারের অর্ডার নেয়া
- টাকা নেয়া এবং ফেরত দেয়া
তুমি একাই সব কাজ একসাথে করছো। মানে, সব কাজের জন্য তুমি নিজেই একটি “সেন্ট্রাল সিস্টেম”। এটাই হলো Monolithic Application এর মতো। একটি Monolithic সিস্টেমে সব ফিচার এবং কাজ একটি একক অ্যাপ্লিকেশনের মধ্যে থেকে কাজ করে।
বৈশিষ্ট্য:
- সব ফিচার বা কাজ একসাথে একই সিস্টেমের মধ্যে থাকে।
- একে সহজে পরিচালনা করা যায় যখন কম কাজ থাকে।
- নতুন ফিচার যোগ করতে হলে পুরো সিস্টেমকে আপডেট করতে হয়।
গল্পের বাস্তব উদাহরণ:
তোমার দোকানের Monolithic অ্যাপ্লিকেশন একক হিসেবে তখন কাজ করছিল যখন তুমি একাই সব কাজ সামলাচ্ছিলে। সব কাজ একই হাতে ছিল, তাই দ্রুত কাজ করা সহজ ছিল। কিন্তু দোকানের কাস্টমার বেড়ে গেলে এবং অর্ডারের সংখ্যা বেশি হলে সমস্যা শুরু হয়।
Microservices – আলাদা আলাদা বিভাগ:
এবার ধরো, তোমার দোকানে কাস্টমার এত বেড়ে গেছে যে, একা সব কাজ সামলানো সম্ভব হচ্ছে না। এবার তুমি ঠিক করলে, দোকানের কাজগুলো ভাগ করে দিলে ভালো হয়।
- চা বানানোর জন্য একজন কর্মচারী থাকবে।
- অর্ডার নেওয়ার জন্য একজন কর্মচারী থাকবে।
- টাকা লেনদেন করার জন্য একজন কর্মচারী থাকবে।
এখন প্রত্যেকটা কাজ আলাদা আলাদা কর্মচারী করছে, এবং প্রত্যেকটা কর্মচারী শুধু তার নিজের কাজটুকুই করছে। এবার যদি নতুন একটি ফিচার যোগ করতে হয়, যেমন, চায়ের সাথে স্ন্যাকস বা বিস্কুট বিক্রি করা, তাহলে শুধু স্ন্যাকস বিক্রির জন্য আলাদা কর্মচারী যোগ করতে হবে, আর কোনো কিছুর পরিবর্তন করতে হবে না।
বৈশিষ্ট্য:
- প্রত্যেক কাজ আলাদা আলাদা ইউনিটে ভাগ করা।
- কোনো একটি কাজের উন্নতি করতে হলে, পুরো সিস্টেমে পরিবর্তন আনতে হবে না।
- প্রতিটি সেবা স্বাধীনভাবে কাজ করে এবং সমস্যা হলে শুধুমাত্র নির্দিষ্ট অংশটুকুই সংশোধন করতে হয়।
গল্পের বাস্তব উদাহরণ:
তোমার দোকানকে Microservices মডেলের মতো করে গড়ে তোলার মানে হলো, প্রতিটি কাজকে আলাদা সেবা (Service) হিসেবে তৈরি করা। যেমন:
- চা বানানোর সেবা (চা তৈরির কর্মচারী)।
- অর্ডার নেওয়ার সেবা (অর্ডার নেওয়ার কর্মচারী)।
- টাকা লেনদেনের সেবা (টাকা লেনদেন কর্মচারী)।
এখন, ধরো চা বানানোর লোকের সমস্যা হলে, বাকিরা কিন্তু তাদের কাজ ঠিকই চালিয়ে যেতে পারবে। আবার, যদি নতুন কিছু শুরু করতে চাও, যেমন স্ন্যাকস বিক্রি, তাহলে সেটা আলাদা সেবা হিসেবে সহজে যোগ করা যায়।
Monolithic বনাম Microservices – মূল পার্থক্য:
- Monolithic Application এ সব কাজ একসাথে এবং এক জায়গায় থাকে, যেটা ছোট পরিসরে সহজ কিন্তু বড় পরিসরে জটিল হয়ে যায়।
- Microservices Application এ প্রতিটি কাজ আলাদা সেবা হিসেবে কাজ করে, যেখানে প্রতিটি সেবা স্বতন্ত্র এবং স্বাধীন।
এই গল্পে আমরা তোমার চায়ের দোকানের কাজ ভাগ করে দেখালাম কিভাবে Monolithic থেকে Microservices মডেলে পরিবর্তন করা যায়, যেখানে কাজের চাপ বেড়ে গেলে প্রতিটি সেবা আলাদা করে দেয়া হয় এবং প্রত্যেক সেবার জন্য আলাদা কর্মচারী রাখা হয়।