Microservice না, Monkey Service

in মাইক্রোসার্ভিস,

মাইক্রোসার্ভিস সিরিজটি শুরু করার আগে নিচের দুইটি পোস্টপড়ে আসা বাধ্যতামূলক :

১) স্কেলিং ওয়েব সার্ভার এবং গেদু ভাইয়ের আদি ফ্যামিলি

২) ভার্টিক্যাল স্কেলিং এবং হরিজন্টাল স্কেলিং

মানকি সার্ভিস

আপনার এপ্লিকেশনের একটি মডিউল কে একটি বানর হিসেবে কল্পনা করুন । বানরটিকে এমনভাবে প্রশিক্ষন দিলেন যে এটি একটি নোট ইনপুট হিসেবে নিবে তারপর সে ঐ নোট টি নিয়ে কিছুকক্ষন নাচানাচি করবে। নাচানাচি শেষে দেখাগেল যে আপনার নোট টি আর আগের মত নেই । সে তখন আপনাকে এটি রিটার্ন করল যেটা আপনি আউটপুট হিসেবে পেলেন, আপনি আপনার কাঙ্খিত রেজাল্ট নিয়ে বাড়ি ফিরে আসলেন ।

মাইক্রোসার্ভিস

বানরীয় জটিলতা

মজার ব্যাপার হল যে সবসময় বিষয়টা এমন নাও হতে পারে। দেখা গেল যে নাচানাচি করার সময় সে তাল হারিয়ে কোথাও ছিটকে পড়ে যেতে পারে, এতে তার পা ভেঙ্গে যেতে পারে, কপাল খারাপ হলে আরো অনেক বড় অঘটন ঘটে যেতে পারে ।

এরপরও একই ফ্যাক্টরীতে (এ্যাপ্লিকেশনে) আপনি একসাথে একাধিক বানর (মডিউল) রাখার কথা ভাবতে পারেন, শুধু আপনাকে খেয়াল রাখতে হবে:

১) এক বানর যাতে অন্য বানরের সাথে ঝগড়া না লাগে

২) এক জনের ফাইল নিয়ে অন্য জন যেন লাফালাফি না করে

৩) একজন মরে গেলে যেন বাকিরা ভয় পেয়ে কাজ বন্ধ না করে।

বাস্তবতায় চোখ রাখলে দেখবেন যে এসব খুবই কমন ঘটনা । সেক্ষেত্রে আপনি কি করবেন?

সমাধান

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

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

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

মাইক্রোসার্ভিস

মাইক্রোসার্ভিস শব্দটি তুলনামূলক অনেক নতুন একটি শব্দ । একটি বড় এ্যাপ্লিকেশন সিস্টেমকে ভেঙ্গে ডিস্ট্রিবিউট আর্কিটেকচারে ডিজাইন করার একটি চমৎকার কৌশল হল মাইক্রোসার্ভিস।

গামলা ভর্তি সারকাজমে ভার এই পোস্টের আগা-মাথা এখন পুরোটা মাথায় না আসলেও কোন সমস্যা নেই। পরবর্তী কয়েকটা পোস্টে সব পানির মত স্বচ্ছ হয়ে যাবে। চলুন আগে মাইক্রো-বাস আর মাইক্রোসার্ভিসের গুষ্টি উদ্ধার করি:  মনোলিথিক এবং মাইক্রোসার্ভিস আর্কিটেকচার কি?

পরবর্তী পোস্ট   »  মনোলিথিক এবং মাইক্রোসার্ভিস আর্কিটেকচার কি?


মুক্ত জ্ঞান ছড়িয়ে দিন সবার মাঝে!