আপনার AI দিয়ে বানানো অ্যাপ ফিচার হয়ে গেল। ট্রাফিকের ঢল কি সামলাতে পারবে?
কেউ একজন আপনার অ্যাপ শেয়ার করল আর এক হাজার মানুষ একসঙ্গে হাজির। এর আগের রাতে নতুন করে না বানিয়েই কীভাবে আপনার AI দিয়ে বানানো অ্যাপকে ট্রাফিকের ঢল সামলাতে সাহায্য করবেন, এখানে তা-ই।
একটা খারাপ দিনের ভালো সংস্করণটা কল্পনা করুন। আপনি যে কমিউনিটির সদস্য সেখানে আপনার AI দিয়ে বানানো অ্যাপটা পোস্ট করলেন, কিংবা বড় ফলোয়ারওয়ালা কেউ একে পরখ করে শেয়ার করল, কিংবা আপনি জমাই দেননি এমন কোনো ফোরামের প্রথম পাতায় এটা উঠে এলো। হঠাৎ করে আপনার চেনা সেই দু-চারজন ভিজিটরের ফোঁটা ফোঁটা স্রোত পরিণত হলো বানে। এক হাজার মানুষ, সবাই একই ঘণ্টায় এদিক-ওদিক ক্লিক করছে।
এই মুহূর্তটার জন্যই তো জিনিসটা বানিয়েছিলেন। আবার এই মুহূর্তেই অনেক AI দিয়ে বানানো অ্যাপ নীরবে ভেঙে পড়ে — পেজ ধীরে লোড হয়, লোডার ঘুরতেই থাকে, সাইন-আপ ফর্ম সাবমিট হয় না। শেষমেশ যারা এলো, তারা দেয়ালে গিয়ে ঠেকে চলে যায়, আর তাদের বেশিরভাগই আর কখনো ফিরে এসে পরখ করে না।
ভালো খবরটা হলো: ট্রাফিকের ঢল সামলানোর ব্যাপারটা মূলত গুটিকয় নীরস সিদ্ধান্তের ব্যাপার, যেগুলো আপনি ঢলটা আসার আগেই নিতে পারেন। আপনাকে ইঞ্জিনিয়ার হতে হবে না। আপনাকে শুধু জানতে হবে কোন কোনাগুলো কেটে ফেলা যাবে না।
ট্রাফিক বেড়ে গেলে আসলে কী ভাঙে
আপনার অ্যাপ যখন স্বাভাবিকের চেয়ে একশো গুণ বেশি মানুষ একসঙ্গে ব্যবহার করে, তখন জিনিসপত্র এলোমেলোভাবে ভাঙে না। সেগুলো একটা অনুমানযোগ্য ক্রমে ভাঙে, আর প্রায় সবসময়ই একই তিন জায়গায়।
ডেটাবেস কুলিয়ে উঠতে পারে না। যখনই কেউ একটা পেজ লোড করে, আপনার অ্যাপ সাধারণত তার ডেটাবেসকে একটা প্রশ্ন করে: “এই ইউজারের ডেটা কী?” একজন মানুষের প্রশ্ন কিছুই না। কিন্তু এক হাজার মানুষ একই মিনিটে একই প্রশ্ন করলে সেটা ডেটাবেসের উত্তর দেওয়ার গতির চেয়ে দ্রুত জমতে থাকে, আর সবার পেজ হামাগুড়ি দিয়ে চলতে শুরু করে।
আপনার অ্যাপের বাইরের কিছু একটা ধীর হয়ে যায়। বেশিরভাগ AI দিয়ে বানানো অ্যাপ অন্য সার্ভিসের ওপর নির্ভর করে — ইমেইল পাঠানো, পেমেন্ট প্রসেস করা, কোনো AI মডেলে কল করা। ওই সার্ভিসগুলো প্রায়ই সীমা বেঁধে দেয় আপনি কত দ্রুত তাদের কল করতে পারবেন। স্বাভাবিক ট্রাফিকে আপনি কখনো সেই সীমাটা টের পান না। কিন্তু ঢল এলে আপনার অ্যাপ সেটায় গিয়ে ঠেকে, আর হঠাৎ করে ওই সার্ভিসকে ছুঁতে থাকা প্রতিটা কাজ আটকে যায়।
অ্যাপ একই ব্যয়বহুল কাজ বারবার করতে থাকে। কেউ ভিজিট করলেই যদি আপনার হোমপেজ প্রতিবার একটা ভারী হিসাব চালায় — একটা তালিকা টানা, সেটাকে র্যাংক করা, ফরম্যাট করা — দশজন ভিজিটরের জন্য সেটা ঠিকঠাক, কিন্তু এক হাজারের জন্য নিষ্ঠুর। কাজটা সবসময়ই অপচয় ছিল। কম ট্রাফিক শুধু সেটা ঢেকে রেখেছিল।
প্যাটার্নটা খেয়াল করুন: এর কোনোটাই নতুন বাগ নয়। ঢল কিছু ভাঙেনি। এটা শুধু আগে থেকেই থাকা দুর্বলতাগুলো ফাঁস করে দিয়েছে, যেগুলো কম ট্রাফিকে নীরবে বসে ছিল।
সবচেয়ে সস্তা সমাধান: যা বদলায় না সেগুলো ক্যাশ করুন
ক্যাশিং শুনতে টেকনিক্যাল লাগে, কিন্তু আইডিয়াটা সহজ: কোনো প্রশ্নের উত্তর যদি সবার জন্য একই হয় আর খুব কমই বদলায়, তাহলে প্রতি ভিজিটরের জন্য আবার আবার কাজটা করার বদলে একবার সেটা হিসাব করে রেখে দিন আর পুনরায় ব্যবহার করুন।
আপনার হোমপেজটা সম্ভবত এতে আসা ১,০০০ জনের সবার কাছেই হুবহু একরকম দেখায়। তাহলে ডেটাবেসকে কেন সেটা ১,০০০ বার নতুন করে বানাতে বলবেন? একবার বানান, কয়েক মিনিটের জন্য ফলাফলটা সংরক্ষণ করুন, আর সেই সংরক্ষিত কপিটাই সবাইকে দিন। আপনি এইমাত্র এক হাজারটা ব্যয়বহুল ডেটাবেস-ট্রিপকে একটায় নামিয়ে আনলেন।
আপনার AI বিল্ডারকে ঠিক এটাই বলুন: “হোমপেজ আর পাবলিক প্রোডাক্ট লিস্ট পাঁচ মিনিটের জন্য ক্যাশ করো, যাতে আমরা প্রতি ভিজিটে ডেটাবেসে না যাই।” যা সবার জন্য একই আর যেটার প্রতি-সেকেন্ডে আপডেট হওয়ার দরকার নেই — একটা প্রাইসিং পেজ, একটা পাবলিক লিস্টিং, একটা ব্লগ ইনডেক্স — সবই ক্যাশিংয়ের যোগ্য। ব্যক্তিগতকৃত জিনিস (কারো নিজের ড্যাশবোর্ড, তার অ্যাকাউন্ট সেটিংস) একইভাবে ক্যাশ করা যায় না, কিন্তু ঢলের সময় সেটা সাধারণত ট্রাফিকের ছোট্ট একটা অংশ। বেশিরভাগ মানুষই একই গুটিকয় পাবলিক পেজ দেখছে।
যা পরে হতে পারে, সেগুলোর জন্য মানুষকে অপেক্ষা করাবেন না
এমন একটা ভুল আছে যেটা করা সহজ আর ঠিক করাও সহজ। ধরুন কেউ সাইন আপ করল, আর আপনার অ্যাপ তাকে একটা ওয়েলকাম ইমেইল পাঠায়। ইমেইলটা পুরোপুরি না পাঠানো পর্যন্ত আপনার অ্যাপ যদি তাকে সাইন-আপ পেজে অপেক্ষা করায়, তাহলে একটা ধীরগতির ইমেইল সার্ভিস আপনার সাইন-আপকেই ধীর করে দেয় — ঠিক সেই মুহূর্তে যখন সবচেয়ে বেশি মানুষ সাইন আপ করছে।
সমাধান হলো ধীর জিনিসগুলোকে ব্যাকগ্রাউন্ডে হতে দেওয়া। মানুষটা সঙ্গে সঙ্গে দেখে “আপনি ঢুকে পড়েছেন!” আর ইমেইলটা কয়েক সেকেন্ড পরে যায়, যার জন্য কাউকে অপেক্ষা করতে হয় না। ফলাফল একই, কিন্তু ভিজিটরকে একটা লোডার ঘুরতে দেখে বসে থাকতে হয় না যখন তিন কোম্পানি দূরের কোনো ইমেইল সার্ভার তার সময় নিচ্ছে।
আপনার বিল্ডারকে বলুন: “ওয়েলকাম ইমেইলটা ব্যাকগ্রাউন্ডে পাঠাও, যাতে সাইন-আপ সেটার জন্য অপেক্ষা না করে।” একই যুক্তি প্রযোজ্য এমন যেকোনো কিছুর জন্য যেটা মানুষটার এগিয়ে যাওয়ার আগে শেষ হওয়ার দরকার নেই — একটা রিপোর্ট জেনারেট করা, অন্য টুলের সঙ্গে সিংক করা, একটা নোটিফিকেশন পাঠানো। ইউজারের যদি ফলাফলটা এই মুহূর্তে দরকার না হয়, তাহলে তাকে সেটার জন্য অপেক্ষা করাবেন না।
একটা “অনেক বেশি মানুষ” প্ল্যান রাখুন
কখনো কখনো ঢলটা আপনার প্রস্তুতির চেয়েও বড় হয়, আর সৎ পদক্ষেপ হলো ভেঙে পড়ার বদলে সুন্দরভাবে গুটিয়ে নেওয়া। একটা ধীর অ্যাপ যেটা এখনো কাজ করে, সেটা একটা ভাঙা অ্যাপের চেয়ে ভালো।
এর কয়েকটা সহজ সংস্করণ:
- একটা বন্ধুত্বপূর্ণ অপেক্ষার বার্তা। কোনো কিছু সত্যিই যদি ওভারলোড হয়ে যায়, তাহলে “এই মুহূর্তে আমরা অনেক ভিজিটর পাচ্ছি — একটু সময় দিন” দেখানো একটা ফাঁকা স্ক্রিন বা একটা কাঁচা এররের চেয়ে অনেক ভালো। মানুষ ব্যস্ত অ্যাপকে ক্ষমা করে দেয়। ভাঙা অ্যাপকে করে না।
- সবচেয়ে ভারী ফিচারটা সাময়িকভাবে বন্ধ করে দিন। যদি একটা ফিচারই ব্যয়বহুল হয় — ধরুন একটা AI জেনারেশন যেটা প্রতি ক্লিকে আসল টাকা আর সময় খরচ করে — তাহলে ঢলের সময় সেটা লুকিয়ে রেখে অ্যাপের বাকিটা দ্রুত রাখতে পারেন। ঢলের সময় বেশিরভাগ ভিজিটর এমনিতেও ঘুরে দেখছে, আপনার সবচেয়ে চাহিদাসম্পন্ন ফিচারটা ব্যবহার করছে না।
- আপনার বিলটা কোথা থেকে আসে তা জানুন। আপনার অ্যাপ যদি প্রতি ভিজিটে একটা পেইড AI মডেলে কল করে, তাহলে এক হাজার ভিজিটরের মানে শুধু একটা ধীর পেজ নয়, একটা অপ্রত্যাশিত চার্জও হতে পারে। কোন কাজগুলো টাকা খরচ করে তা জানা থাকলে আপনি আগেভাগেই ঠিক করতে পারেন কোনটায় সীমা টানবেন।
আধ ঘণ্টার একটা মহড়া
আপনার দুর্বল জায়গাগুলো খুঁজতে কোনো জমকালো টুল লাগবে না। কয়েকজন বন্ধু আর আধ ঘণ্টা লাগবে।
পাঁচ-ছয়জনকে বলুন একই মুহূর্তে আপনার অ্যাপ খুলতে আর কয়েক মিনিট জোরেশোরে এদিক-ওদিক ক্লিক করতে — সাইন আপ করতে, মূল ফিচারটা ব্যবহার করতে, ব্যস্ত পেজগুলো লোড করতে। ব্যাপারটা কাঁচা, কিন্তু এটা স্পষ্ট সমস্যাগুলো দ্রুত সামনে আনে। ছয়জন মানুষ হাতুড়ি পেটালেই যদি অ্যাপটা ধীর মনে হতে শুরু করে, তাহলে এক হাজার একে চেপটে ফেলবে। যদি এটা চটপটে থাকে, তাহলে অন্তত আপনি নিচু বাধাটা পেরিয়ে গেছেন।
তারা যখন ক্লিক করছে, খেয়াল করুন কোন পেজটা সবচেয়ে ধীর মনে হয়। ওই ধীর পেজটাই ঠিক সেই জায়গা যেখানে একটা আসল ট্রাফিকের ঢল সবচেয়ে বেশি আঘাত করবে, আর সেটাই প্রথমে ক্যাশ করা বা সরল করার যোগ্য। আপনি এক হাজার ইউজার সিমুলেট করার চেষ্টা করছেন না। আপনি সেই এক পেজটা খুঁজছেন যেটা ছয়জনেই ইতিমধ্যে হাঁসফাঁস করছে।
আসল লক্ষ্য
আপনি আপনার অ্যাপকে অসীমভাবে অভেদ্য বানাতে পারবেন না, আর সেটার দরকারও নেই। লক্ষ্যটা আপনার প্রথম ভাইরাল মুহূর্তেই দশ হাজার মানুষকে নিখুঁতভাবে সামলানো নয়। লক্ষ্যটা হলো শেষমেশ যে কয়েকশো মানুষ এলো তাদের সামনে নিজেকে লজ্জায় না ফেলা — নিশ্চিত করা যে এত পরিশ্রম করে যাদের টানলেন তারা একটা ঘূর্ণায়মান চাকার বদলে একটা চলমান অ্যাপ পায়।
যা বদলায় না সেই পেজগুলো ক্যাশ করুন। ধীর জিনিসগুলো ব্যাকগ্রাউন্ডে সরিয়ে দিন। “অনেক বেশি মানুষ”-এর জন্য একটা প্ল্যান রাখুন। দরকার হওয়ার আগেই পাঁচ-বন্ধুর একটা মহড়া করে নিন। এর কোনোটাতেই আপনাকে নিজে কোড লিখতে হবে না — শুধু আপনার AI বিল্ডারের কাছে ঠিক জিনিসগুলো চাইতে জানতে হবে।
তারপর, আপনার মুহূর্তটা যখন আসবে, আপনি দিশেহারা হয়ে ডিবাগ করার বদলে সেটা উপভোগ করতে পারবেন। তাই এই সপ্তাহে ভেবে দেখার মতো প্রশ্নটা হলো: আগামীকাল যদি এক হাজার মানুষ হাজির হয়, কোন পেজটা সবার আগে ভাঙবে — আর আপনি কি ইতিমধ্যেই জানেন?