“আমাজন ক্লাউড কি আমাদের ইউযার বা ব্যবহারকারীর লোড সামলাতে পারবে?" - পর্ব ১

“আমাজন ক্লাউড কি আমাদের ইউযার বা ব্যবহারকারীর লোড সামলাতে পারবে?" - পর্ব ১
(এপ্রিল ২৭, ২০১৫, সোমবার)

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


JMeter টুলের কাজ কী? - এটা বলার জন্য একটু ভুমিকা দেয়ার দরকার। আমার আগের এক লেখায় আমি যে কোম্পানিতে কাজ করি তাদের ব্যবসা টা কী সেটা বলেছিলাম। খুব সংক্ষেপে বলতে গেলে এরা একটা Software As A Service বা Saas কোম্পানি। এখন, এরা ঠিক করেছে যে, এরা অন-প্রেমেসিস না থেকে ক্লাউড-বেসড হয়ে যাবে। অর্থাৎ, এদের পুরো সিস্টেমটা এরা আমাজন ক্লাউড -এ নিয়ে যাবে। এতে করে সুবিধা কী হবে তাও আমার সেই আগের ব্লগ পোস্ট-এ লিখেছিলাম। চাইলে একটু পড়ে নিতে পারেন। এখন অনেকগুলো প্রশ্নের মধ্যে প্রথম যেই প্রশ্ন তা আসে তা হচ্ছে:


  • “আমাজন ক্লাউড কি আমাদের ইউসার বা ব্যবহারকারীর লোড সামলাতে পারবে?”


অর্থাৎ, আগে যখন আমরা নিজেরাই আমাদের সিস্টেম হোস্ট করছিলাম, তখন আমরা জানি যে আমাদের সিস্টেমের শক্তি কত, নেটওয়ার্ক লোড-ই বা কতটুকু সামলাতে পারবে। কিন্তু যখন আমরা আমাজন ওয়েব সার্ভিস-এ চলে যাচ্ছি, আমরা কিন্তু ১০০% নিশ্চিত হতে পারছি না।  যদিও আমাজনে যথেষ্ট শক্তিশালী মেশিন ভাড়া করে আমরা সিস্টেম হোস্ট করছি, তাও আমরা সম্পূর্ণ নিশ্চিত না।  


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


মূল আইডিয়া সিম্পল, আর তা হচ্ছে, একজন ইউসার বা ব্যবহারকারীর সিস্টেমের সাথে ইন্টারঅ্যাকশন রেকর্ড করে তা ৫০০ বা তারও বেশি সংখ্যক ভার্চুয়াল ইউসার দিয়ে পুনরায় চালিয়ে সিস্টেমে লোড তৈরী করা। এরপর সিস্টেমের রেসপন্স টাইম, এরর রেট ইত্যাদি খেয়াল রাখা। একই সাথে সার্ভার সাইড-এ মেমরি, সিপিইউ ব্যবহার ইত্যাদি মনিটর করা।  


খুব সংক্ষেপে আরো ২ টা সিনারিও বা ঘটনা বলি। উপরেরটা সহ নিচের দুটোও কিন্তু সত্যি।  


ঘটনা-১: ধরা যাক, আমরা আমাজনে আমাদের সিস্টেম হোস্ট করলাম। তারপর কয়েকদিন পর আবিষ্কার করা হলো যে, কোনো একটা লাইব্রেরির কারণে সিস্টেম প্রতি সপ্তাহে রিলিস বা ডেপ্লয় করার সময় অনেক সময় লাগে। সব ইঞ্জিনিয়াররা অনেক রাত পর্যন্ত ডিপ্লয়মেন্ট-এর কাজটা করে। এরপর QA টীম পোস্ট-প্রোডাকশন টেস্ট গুলো হয় গভীর রাতে, না হয় ভোর বেলা করে। এটা বেশ ঝামেলার একটা ব্যাপার। ভাগ্য ভালো, এরপর বের করা হলো যে, ওই লাইব্রেরি-র মতই আরেকটা লাইব্রেরি আছে, যা কিনা ডেপ্লয় টাইম প্রায় অর্ধেকের বেশি কমিয়ে ফেলে। কিন্তু প্রশ্ন হচ্ছে, এই নতুন লাইব্রেরি ইনস্টল করলে সিস্টেম আবার ধীর গতির হয়ে যাবে না তো?


ঘটনা -২: যেকোনো SaaS কোম্পানির জন্যই রিয়েল-টাইম ডেটা খুব জরুরি। কোন-কোন পেজ সবচেয়ে বেশি হিট হচ্ছে, সিস্টেম কোন অংশে (সার্ভার, ডাটাবেস, সার্চ, নাকি ফাইল আপলোড করতে ) সবচেয়ে বেশি সময় পার করছে - ইত্যাদি জানা থাকা দরকার। এসব জানার জন্য ডায়নাট্রেস নামের এক কোম্পানি তাদের সার্ভিস বিক্রি করে।  মূলত ওদের লাইব্রেরি সিস্টেমে ইনস্টল করে রাখলে, তা রিয়েল টাইম-এ এসব তথ্য খুব সুন্দর রিপোর্ট আকারে দিতে পারে।  কিন্তু আবারো প্রশ্ন হলো, এই নতুন লাইব্রেরি-র  ওভারহেড কত? সিস্টেম আবার খুব স্লো হয়ে যাবে না তো?


উপরের প্রতি সিনারীয়তেই লোড টেস্টিং জরুরি। প্রোডাকশন-এ প্রতিটা পরিবর্তনের আগেই টেস্ট সিস্টেমে লোড টেস্ট করে দেখতে হবে যে তা স্লো হয় কীনা।  


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


আর এখানেই JMeter টুলের মাহাত্ব! এটা Apache Software  Foundation-এর ফ্রি টুল। ওপেন সোর্স হওয়ায় প্রতি নিয়তই ডেভেলপাররা কোড কমিট করে নতুন নতুন ফীচার যুক্ত করছেন। আর অসংখ্য ব্যবহারকারী থাকায়, ভিডিও টিউটোরিয়াল, লেখা টিউটোরিয়াল, ব্লগ পোস্ট, ফোরাম পোস্ট-এর অভাব নাই।  


এইরকম একটা ব্লগ দিয়েই আমার JMeter শেখা শুরু। আর গর্বের বিষয় হচ্ছে, ব্লগটা এক বাংলাদেশি, শান্তনু সরকার-এর লেখা!! যদিও এই টুল শেখাটা শুরুর দিকে একটু কঠিন, কিন্তু একবার শিখে ফেলতে পারলে বিরাট কাজের কাজ হবে।  কারণ এটা খুবই শক্তিশালী টুল। প্রায় সব রকম ওয়েবসাইট -ই সিমুলেট করে লোড তৈরী করা যায়।  


যাই হোক, আজকে আর JMeter নিয়ে  টিউটোরিয়াল লিখলাম না।  আরেকদিন (খুব জলদিই) লিখবো। আজকেরটা না হয় সেটার ট্রেইলার হিসেবেই থাকলো!!

[আপডেট: ২য় পর্ব এই লিঙ্কে পাবেন।]

ধন্যবাদ।  

লাঞ্চ এন্ড লার্ন - জাভা ৯

লাঞ্চ এন্ড লার্ন - জাভা ৯ নভেম্বর ১০, শুক্রবার, ২০১৭ আমেরিকাতে আমার কাজের অভিজ্ঞতার মধ্যে এই একটা জিনিস আমার খুব প্রিয় - লাঞ্চ এন্ড লার্...