রিয়েল প্রজেক্ট অভারভিউ - থ্রাইভডেস্কের টেক স্ট্যাক

Full Stack Developer, focused on web automation, open source enthusiast and contributor.
Passionate about programming, specializing in JavaScript.
থ্রাইভডেস্ক হলো কাস্টমারদের সাপোর্ট দেয়ার একটা টুলস। আজ আমরা এই সিস্টেম তৈরি করতে কি কি ব্যবহার করা হয়েছে তা নিয়ে সংক্ষেপে আলোচনা করবো যেন একটা রিয়েল প্রজেক্টে কি থাকে তা নিয়ে আমরা ধারণা করতে পারি।
থ্রাইভডেস্ক ছোটখাট কোন বিজনেস থাকলে তাতে কাস্টমারদের সাপোর্ট দেয়ার জন্য একবার ফেসবুক, একবার ইমেইল, আরেকবার লাইভ চ্যাট এত কিছুর জন্য একেক দিকে না দৌড়িয়ে একটা জায়গা থেকেই সব রকম সাপোর্ট দেয়ার সিস্টেম। বিশেষ করে যাদের ইকমার্স, ওয়ার্ডপ্রেস প্লাগিন, থিম বিজনেস ইত্যাদি আছে, তাদের জন্য এটা খুবই উপযোগী। লাইভ চ্যাট, কমিউনিটি, নলেজ বেইজ, শেয়ার্ড ইনবক্স সহ অনেক রকম ফিচার আছে এটাতে।
এটা খুব ছোট সিস্টেম না। আবার গুগল-ফেসবুকের মত খুব বড় সিস্টেমও না। তবে আস্তে আস্তে এই ছোট টুলসের শাখা-প্রশাখা গজানোর কারণে ডেভেলপার আর স্ট্যাকের সংখ্যা বাড়ছে। আমি এই প্রজেক্টে জয়েন করার পর বেশ কয়েকটা অংশের টেক স্ট্যাক নিয়ে ঘাটাঘাটি করার সুযোগ পেয়েছি, তবে সবগুলো দেখার সুযোগ মিলেনি।
স্ট্যাক জেনে কি লাভ?
একজন ডেভেলপার কোথাও জয়েন করার আগেই ওই প্রতিষ্ঠানের টেক স্ট্যাক আর প্রাকটিস গুলো দেখে নেয়া উচিৎ, গনহারে কোন রকম রিসার্চ ছাড়া একটা কোম্পানীতে আবেদন করলে লাভের চেয়ে ক্ষতিই বেশি হয়।
এছাড়া কোম্পানীগুলো যদি তাদের বিভিন্ন স্ট্যাক সম্পর্কে মানুষকে অবহিত করে, তাহলে সবার সাথে তাদের বোঝাপড়া ভালো হয়, বিশ্বাস বাড়তে থাকে, একটা প্রয়োজন হলে মানুষকে সেটা নিয়ে প্রশ্ন করলেও উত্তর পেতে সুবিধা হয় কমিউনিটি গড়ে তোলার কারণে।
থ্রাইভডেস্কের স্ট্যাকগুলো
এই সাপোর্ট সিস্টেমের অনেকগুলা ভাগ আছে। ফ্রন্টএন্ড, ব্যাকএন্ড, ইমেইল, সার্চ, চ্যাট, পেমেন্ট, নলেজ বেইজ, মোবাইল এপ, কমিউনিটি ইত্যাদি। একেকটা একেকভাবে করা, কোন অংশ একটা টিম মিলে করেছে, কোন অংশ একজন একা করেছে, কোন অংশ আবার এক্সপেরিমেন্ট হিসেবে করা হয়েছে। সবগুলো অংশের উপর দিয়ে যাওয়া সম্ভব না হলেও একটা ধারণা দেয়া সম্ভব।
পোস্ট লেখার আগে স্ট্যাক একরকম ছিলো, লেখার সময় একরকম আছে, ভবিষ্যতে হয়তো পরিবর্তন হয়ে অন্যরকম হবে। কিন্তু একদম অভারভিউ করতে গেলে যেসব টেক ব্যবহার করা হয়েছে তা হলো,
- ব্যাকএন্ডে মূলত লারাভেল আর ব্লেড
- ফ্রন্টএন্ডে মূলত এঙ্গুলার, কিছু অংশের রিএক্ট
- মোবাইলে রিএক্ট ন্যাটিভ
- ডিপ্লয়মেন্টে এনভয়ার ও ডিজিটালওশ্যানে, কখনো ডকার দিয়ে, কখনো ডকার ছাড়া, রিভার্স প্রক্সিতে এনজিনএক্স, আর ক্যাডি
- সোর্স কোড হোস্টিং আর অটোমেটেড টেস্টিং এর জন্য গিটহাব
- পেমেন্টে প্যাডেল
- ইন্টিগ্রেশনে প্যাবলিকানেক্ট
- ওয়েবসকেট আর পুশ নোটিফিকেশনে পুশার আর ফায়ারবেইজ
- ডাটাবেইজে মাইএসকিউএল, রেডিস ইত্যাদি।
- টেস্টিংয়ে কিছু অংশে প্লেরাইট, সাইপ্রেস ইত্যাদি টাইপের টুলস
বেশ কিছু টিম আছে, সবাইকে সব স্ট্যাকে পারদর্শী হতে হয় না। সবাই যদি এত এত স্ট্যাক নিয়ে কাজ করে তাহলে এত বড় সিস্টেম তৈরি করতে বেশ বেগ পেতে হতো। তো এই স্ট্যাকগুলোর সংক্ষিপ্ত নিয়ে আলোচনা করা হলো।
ল্যান্ডিং পেইজ

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

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

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

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

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

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




