এখন পর্যন্ত যা শিখলাম, যেই সব টুল ব্যবহার হতে দেখলাম

জানুয়ারী ২৩, শুক্রবার, ২০১৫।


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


প্রথমে, আমি যেখানে কাজ করি, তাদের ব্যবসাটা কী সেটা নিয়ে একটু বলবো- এটা জানা থাকলে পুরো ব্যপারটা,  বুঝতে হয়ত সহজ হবে। এরা SaaS বা Software as a Service কোম্পানি। অর্থাৎ, এদের সফটওয়্যার সিডি কিনে বা ডাউনলোড করে ইনস্টল করতে হয় না।  ইন্টারনেট-এ এক্সেস করতে হয়।  সাবস্ক্রিপশন ফি দিয়ে বছরের জন্য রেজিস্ট্রেশন করে রাখলে ক্লায়েন্ট-রা  যত খুশি ব্যবহার করতে পারবে। এরা আবার নিজদেরকে ১০০% মাল্টি-টেনেন্ট বেসড  বা ভাড়াটিয়া নির্ভর সিস্টেম দাবি করে।  অর্থাৎ, এদের একটাই সফটওয়্যার যা কিনা সব ক্লায়েন্টরা ব্যবহার করবে। যদিও সব ফীচার সব ক্লায়েন্ট পাবে না।  সাবস্ক্রিপশন এর উপর নির্ভর করবে কে কোন কোন ফীচার দেখতে বা ব্যবহার করতে পারবে।


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


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


সত্যি বলতে কী, এরকম যে একটা ব্যবসা থাকতে পারে, আগে জানার তো প্রশ্নই না, বরং এখানে কাজ না করলে আমি হয়তো বিশ্বাস-ই করতাম না!


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


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


এইসব চিন্তা করে কোম্পানি ঠিক করেছে যে তারা পুরোপুরি ক্লাউড বেসড হয়ে যাবে। অর্থাৎ, আমাজন ওয়েব সার্ভিস (AWS) ব্যবহার করে পুরো সার্ভার কে ক্লাউড-এ নিয়ে যাবে। এতে করে খরচ আপাতভাবে বেড়ে গেলেও যেসব সুবিধা হবে তার কয়েকটা নিয়ে লিখলাম:


১. এখন আর  “সিঙ্গেল পয়েন্ট অফ ফেইলিয়ার” থাকবে না।  পুরো সিস্টেমটা ডিস্ট্রিবিউটেড হয়ে যাবে।
২. সার্ভার মেইনটেনেন্স নিয়ে কোম্পানির আর  মাথা ব্যথা থাকলো না। আমাজন টেকনিশিয়ানরা এর দায়িত্ব নিবে।
৩. ব্যবহারকারী বেড়ে গেলে ওয়েব সার্ভার বাড়িয়ে নেয়া যাবে। চাহিদা কমে গেলে আবার বন্ধ করে দেয়া যাবে।
৪. ইচ্ছা মত যখন খুশি মেমরি, হার্ড ডিস্ক সাইজ, প্রসেসর স্পিড বাড়িয়ে/কমিয়ে নেয়া যাবে।
৫. ইউরোপে যেসব দেশ তাদের নাগরিকের (ব্যবহারকারীর) তথ্য অন্য দেশের সার্ভারে  রাখতে বিধিনিষেধ আরোপ করে, খুব সহজেই আমাজনের সেসব দেশের সার্ভারে পুরো সিস্টেম-এর কপি (আমেরিকাতে বসেই ইন্টারনেট-এ) তৈরী করে কোম্পানি তাদের সার্ভিস চালু করতে পারবে। সেই সব দেশে আলাদা করে অফিস খুলে সার্ভার সেটআপ করার আর দরকার নেই।  


এখন বলি, কী কী টুল ব্যবহার করে ডেভেলপমেন্টের কাজ হয়।  মূলত ৪ ধরনের গ্রুপ কাজ করে।  এদের প্রত্যেকের ব্যবহার করা টুল আলাদা:


  • ডেভেলপার:
    • IntelliJ  IDE - জাভা তে কোড লিখতে ব্যবহার করা হয়।
    • Git  - কোড রিপোসিটোরি। কোডের ভার্সন, পারালেল ডেভেলপমেন্ট-এর কাজে ব্যবহার হয়.
    • Gerrit  - কোড রিভিউ -এর কাজে ব্যবহার হয়।  
    • SonarQube  - কোড কোয়ালিটি মেইনটেইন করতে। এটা ওপেন-সোর্স টুল যা FindBugs , CheckStyle সহ আরো অনেক টুল ব্যবহার করে।
    • Firebug, Fiddler, Window Resizer  -  ওয়েব ডেভেলপমেন্ট এবং ডিবাগিং -এর কাজে।
  • টেস্টার বা কোয়ালিটি এসুরান্স:
    • Jira  -  ইস্স্যু বা বাগ ট্র্যাকিং সিস্টেম। এটা সবাই ব্যবহার করে।  
    • ALM  - টেস্ট কেস রিপোসিটোরি। Jira -র আগে এটা ইস্স্যু ট্র্যাকিং সিস্টেম হিসেবেও ব্যবহার হত।  
    • Selenium - ব্রাউসার অটোমেশন, টেস্ট অটোমেশন।  
    • Oracle VM  VirtualBox - বিভিন্ন ব্রাউসার ভার্সনে (যেমন ইন্টারনেট এক্সপ্লোরার ৭ - ১০) সিস্টেম টেস্ট  করার জন্য। ব্রাউসার এমুলেটর অনেক সময়ই ঠিক মত কাজ করে না।  
    • JMeter  - ওয়েব লোড, স্ট্রেস  এবং পারফরমেন্স টেস্টিং। এটা আমি ব্যবহার করেছি।  কোনো এক সময় এর উপর লেখার ইচ্ছা আছে।  
  • ডাটাবেস অ্যাডমিন
    • database -এর সাথে আসা বিভিন্ন বিল্ট-ইন টুল।  পারফরমেন্স মনিটর করতে ব্যবহার হয়।
  • সিস্টেম অ্যাডমিন:
    • Jenkins - কোড বিল্ড, ডিপ্লয়মেন্ট -এর অটোমেশন করতে ব্যবহার হয়।  
    • Ant, Maven  -  স্ক্রিপ্ট লিখতে ব্যবহার হয়।  
    • Nagios -  সিস্টেম ইনফ্রাস্ট্রাকচার মনিটরিং সিস্টেম।  
    • StackDriver  - ক্লাউড মনিটরিং সিস্টেম। AWS -এ যাবার পর থেকে এটা Nagio-র বদলে এটা ব্যবহার হচ্ছে।
    • PagerDuty - সিস্টেমে কোনো ঝামেলা হলে, যেমন StackDriver কোনো ইস্স্যু রিপোর্ট করলে  ডেভেলপার সহ সিস্টেম অ্যাডমিন-দের নোটিফাই বা জানানোর কাজে ব্যবহার হয়।   


আমাজন ওয়েব সার্ভিসে যাওয়াটা পুরো কোম্পানির জন্যই সম্পূর্ণ একটা নতুন অভিজ্ঞতা। কোম্পানির আর্কিটেকচার সহ অনেক কোড এর জন্য পরিবর্তন করতে হয়েছে। পুরো প্রজেক্টে কী শিক্ষনীয় ছিল, কী আরো ভালো ভাবে করা যেতো, তার উপরে একটা Lessons learned মিটিং হয়েছে। ওই মিটিং-র সারমর্ম নিয়ে কোনো এক লেখায় লিখব আশা করি।  


ধন্যবাদ।

--ইশতিয়াক।  

POM or TAP design pattern for test automation using Selenium WebDriver

POM or TAP design pattern for test automation using Selenium WebDriver August 21, Monday, 2017 I've written the same topic in Bangl...