Microservice autonomy
অনেকে মনে করে মাইক্রোসার্ভিস হলে একটা টিম যা খুশি তাই করতে পারে, শুধু API ঠিক থাকলেই হবে। মানে টিম ইচ্ছেমত ল্যাঙ্গুয়েজ বা টেকনোলজি ব্যাবহার করতে পারে। কথাটা থিওরিক্যালি ঠিক হলেও কিন্তু সব সময় এটা ভালো হয় না।
কারণ ১:
প্রোজেক্টকে শুধু ডেভেলপ করলেই হয়না, এর ডিপ্লয়মেন্ট করতে হয়। প্রতিটা ভিন্ন ভিন্ন ল্যাঙ্গুয়েজ বা টেকনোলজির জন্য CI/CD পাইপলাইন লাগে। তাই যত বেশি ল্যাঙ্গুয়েজ বা টেকনোলজি হবে, তত বেশি ইনফ্রাসট্রাকচার রিলেটেড কাজ বেশি কাজ করতে হবে।
কারণ ২:
যদি দশটা মাইক্রোসার্ভিস দশ ল্যাঙ্গুয়েজ এ ডেভেলপ করা হয়, তাহলে অনেক সময় পারফরমেন্স টিউনিং করতে দশটা ল্যাঙ্গুয়েজ এর এক্সপার্ট লাগতে পারে।
কারণ ৩:
খুব ইফিসিয়েন্ট কোড লিখতে হলে বা রিভিউ করতে হবে সেই টেকনোলজির এক্সপার্টিস রাখতে হবে।
কারণ ৪:
অনেক সময় এমন হয় যে, একটা সার্ভিসে খুব একটা কাজ করতে হয় না, মাঝে মাঝে সামান্য কিছু পরিবর্তন করা লাগে। যদি সেই ল্যাঙ্গুয়েজ এর এক্সপার্ট কেউ না থাকে, তাহলে অন্য ডেভেলপারদের অনেক বেশি সময় লাগতে পারে সেই ল্যাঙ্গুয়েজ বুঝে কাজ করতে।
নোট:
তাই মাইক্রোসার্ভিসের ক্ষেত্রে চেষ্টা করা উচিত যতটা সম্ভব একই রকম টেকনোলজি ব্যবহার করা, এতে ভবিষ্যতে প্রজেক্টটি সচল রাখা সহজ হয়। কিন্তু এমন সব কেস আছে, যেখানে ভিন্ন টেকনোলজি ব্যবহার করলে অনেক বেশি সুবিধা পাওয়া যাবে, সেখানে সেটাই করা ভালো।