একটি চ্যাট সিস্টেম ডিজাইন (Design A Chat System)
এই অধ্যায়ে আমরা একটি চ্যাট সিস্টেমের ডিজাইন নিয়ে আলোচনা করব। প্রায় সবাই কোনো না কোনো চ্যাট অ্যাপ ব্যবহার করে। চিত্র ১-এ বাজারের কিছু সবচেয়ে জনপ্রিয় অ্যাপ দেখানো হয়েছে।
[চিত্র ১-এর বর্ণনা: ছবিটি পাঁচটি জনপ্রিয় মেসেজিং অ্যাপ্লিকেশনের লোগোর একটি সংগ্রহ উপস্থাপন করে, যেখানে প্রতিটির নামের সাথে সংশ্লিষ্ট লোগো দেখানো হয়েছে। লোগোগুলো দুটি সারিতে সাজানো আছে, উপরের সারিতে তিনটি এবং নিচের সারিতে দুটি। উপরের সারিতে বাম থেকে ডানে: একটি সবুজ স্পিচ বাবল যার ভেতরে সাদা টেলিফোন আইকন এবং নিচে ‘Whatsapp’ লেখা, একটি নীল স্পিচ বাবল যার ভেতরে সাদা বিদ্যুৎ চিহ্ন এবং নিচে ‘Facebook messenger’ লেখা, এবং একটি সবুজ বৃত্ত যার ভেতরে দুটি সাদা স্পিচ বাবল আইকন এবং নিচে ‘Wechat’ লেখা। নিচের সারিতে বাম থেকে ডানে: একটি সবুজ বর্গক্ষেত্র যার ভেতরে সাদা স্পিচ বাবল এবং ‘LINE’ লেখা এবং নিচে ‘Line’ লেখা, এবং একটি হালকা বেগুনি বৃত্ত যার ভেতরে সাদা স্টাইলিশ মুখের আইকন এবং নিচে ‘Discord’ লেখা। লোগোগুলোর মধ্যে কোনো সংযোগ বা তথ্য আদান-প্রদান দেখানো হয়নি; সেগুলোকে আলাদা সত্তা হিসেবে উপস্থাপন করা হয়েছে। বিন্যাসটি বিভিন্ন মেসেজিং প্ল্যাটফর্মের একটি তুলনা বা পর্যালোচনার ইঙ্গিত দেয়।] চিত্র ১
একটি চ্যাট অ্যাপ ভিন্ন ভিন্ন মানুষের জন্য ভিন্ন ভিন্ন কাজ করে। তাই সঠিক প্রয়োজনীয়তাগুলো (requirements) ঠিক করা অত্যন্ত গুরুত্বপূর্ণ। উদাহরণস্বরূপ, যদি ইন্টারভিউয়ারের মনে ১-এর-সাথে-১ (one-on-one) চ্যাটের ধারণা থাকে, তবে আপনি এমন একটি সিস্টেম ডিজাইন করতে চাইবেন না যা গ্রুপ চ্যাটের ওপর ফোকাস করে। ফিচার সংক্রান্ত প্রয়োজনীয়তাগুলো যাচাই করা জরুরি।
ধাপ ১ - সমস্যাটি বোঝা এবং ডিজাইনের সুনির্দিষ্ট ক্ষত্র (scope) নির্ধারণ করা
কোন ধরনের চ্যাট অ্যাপ ডিজাইন করতে হবে তা নিয়ে একমত হওয়া অত্যন্ত জরুরি। বাজারে ১-এর-সাথে-১ চ্যাট অ্যাপ আছে যেমন Facebook Messenger, WeChat, এবং WhatsApp; অফিসের চ্যাট অ্যাপ আছে যা গ্রুপ চ্যাটে ফোকাস করে যেমন Slack; অথবা গেমিং চ্যাট অ্যাপ আছে যেমন Discord, যা বড় গ্রুপের ইন্টারঅ্যাকশন এবং ভয়েস চ্যাটে কম লেটেন্সি (low latency)-এর ওপর ফোকাস করে।
স্পষ্টিকরণমূলক প্রশ্নগুলোর (clarification questions) প্রথম সেটটি দিয়ে ঠিক করা উচিত যে ইন্টারভিউয়ার চ্যাট সিস্টেম ডিজাইন করতে বলতে ঠিক কী বোঝাচ্ছেন। অন্ততপক্ষে, আপনাকে বের করতে হবে আপনার ফোকাস ১-এর-সাথে-১ চ্যাটে হবে নাকি গ্রুপ চ্যাট অ্যাপে। আপনি নিচের মতো কিছু প্রশ্ন করতে পারেন:
প্রার্থী: আমরা কোন ধরনের চ্যাট অ্যাপ ডিজাইন করব? ১-এর-সাথে-১ নাকি গ্রুপ ভিত্তিক? ইন্টারভিউয়ার: এটি ১-এর-সাথে-১ এবং গ্রুপ চ্যাট উভয়ই সমর্থন করবে।
প্রার্থী: এটি কি একটি মোবাইল অ্যাপ? নাকি ওয়েব অ্যাপ? নাকি দুটোই? ইন্টারভিউয়ার: দুটোই।
প্রার্থী: এই অ্যাপের স্কেল (scale) কত? একটি স্টার্টআপ অ্যাপ নাকি বিশাল স্কেলের? ইন্টারভিউয়ার: এটি ৫০ মিলিয়ন দৈনিক সক্রিয় ব্যবহারকারী (DAU) সমর্থন করবে।
প্রার্থী: গ্রুপ চ্যাটের জন্য, গ্রুপের সদস্যদের সর্বোচ্চ সীমা কত? ইন্টারভিউয়ার: সর্বোচ্চ ১০০ জন।
প্রার্থী: চ্যাট অ্যাপের জন্য কোন ফিচারগুলো গুরুত্বপূর্ণ? এটি কি অ্যাটাচমেন্ট (attachment) সমর্থন করে? ইন্টারভিউয়ার: ১-এর-সাথে-১ চ্যাট, গ্রুপ চ্যাট, অনলাইন ইন্ডিকেটর। সিস্টেমটি শুধুমাত্র টেক্সট মেসেজ সমর্থন করে।
প্রার্থী: মেসেজের সাইজের কোনো সীমা আছে কি? ইন্টারভিউয়ার: হ্যাঁ, টেক্সটের দৈর্ঘ্য ১০০,০০০ ক্যারেক্টারের কম হতে হবে।
প্রার্থী: এন্ড-টু-এন্ড এনক্রিপশন (end-to-end encryption) প্রয়োজন কি? ইন্টারভিউয়ার: আপাতত প্রয়োজন নেই, তবে সময় থাকলে আমরা সেটা নিয়ে আলোচনা করব।
প্রার্থী: আমরা চ্যাট হিস্টোরি কতদিন সংরক্ষণ করব? ইন্টারভিউয়ার: চিরকালের জন্য।
এই অধ্যায়ে, আমরা Facebook messenger-এর মতো একটি চ্যাট অ্যাপ ডিজাইন করার ওপর ফোকাস করব, যেখানে নিচের ফিচারগুলোর ওপর গুরুত্ব দেওয়া হবে:
- কম ডেলিভারি লেটেন্সি সহ ১-এর-সাথে-১ চ্যাট
- ছোট গ্রুপ চ্যাট (সর্বোচ্চ ১০০ জন)
- অনলাইন উপস্থিতি (Online presence)
- একাধিক ডিভাইস সাপোর্ট। একই অ্যাকাউন্ট একই সাথে একাধিক ডিভাইসে লগ ইন করা যাবে।
- পুশ নোটিফিকেশন (Push notifications)
ডিজাইনের স্কেল নিয়ে একমত হওয়াও জরুরি। আমরা এমন একটি সিস্টেম ডিজাইন করব যা ৫০ মিলিয়ন DAU সমর্থন করবে।