লাইভে যেতে চারটি ক্লিক। শুরু থেকে শেষ পর্যন্ত ত্রিশ সেকেন্ড। ফ্রি টায়ারে একটি অ্যাকাউন্টে একটি লাইভ সার্ভার-নির্ভর অ্যাপ। নতুন সাবডোমেইনের প্রথম রিকোয়েস্টে আধা সেকেন্ড অতিরিক্ত লেটেন্সি, তারপর আর নয়। এই সংখ্যাগুলোর তিনটি নেহাতই তথ্য — যা পড়ে মাথা নেড়ে পরের অধ্যায়ে ভুলে যাবেন। কিন্তু "একটা" সংখ্যাটাই আসলে আপনার কাজের ধরন বদলে দেয়, তাই এই অধ্যায়ে বেশিরভাগ সময় সেটাতেই ব্যয় করতে চাই।
কেন সীমাটা এক, শূন্য বা সীমাহীন নয়
যেসব নো-কোড টুল বিনামূল্যে ফ্রন্টএন্ড পাবলিশ করতে দেয়, তাদের বেশিরভাগ হয় সার্ভার-নির্ভর অ্যাপ একেবারেই সমর্থন করে না, নয়তো এত কঠোরভাবে মেটার করে যে "ফ্রি" শব্দটা শুধু কাগজে-কলমে থাকে। এখানে, অ্যাকাউন্ট, ডেটাবেস বা মাল্টিপ্লেয়ার স্টেট থাকা বিল্ডও ঠিক একই Publish বোতাম দিয়ে একটা স্ট্যাটিক পেজের মতোই পাবলিশ হয়, আর সার্ভার সাইড সেই একই কাজের অংশ হিসেবে হোস্ট ও ম্যানেজ করা হয় — আলাদা করে ডেটাবেস প্রভিশনিং নেই, এনভায়রনমেন্ট ভ্যারিয়েবল কনফিগার করার দরকার নেই, তিন দিন পর হঠাৎ আবিষ্কার করতে হয় না যে লগইন প্রিভিউতে কাজ করলেও প্রোডাকশনে 500 এরর দিচ্ছে কারণ ব্যাকএন্ড আসলে ডিপ্লয়ই হয়নি। এটা সত্যিকারের সুবিধা, আর ঠিক এই কারণেই মানুষ সীমায় পৌঁছে অবাক হয়: এতক্ষণ সবকিছুই সীমাহীন মনে হচ্ছিল।
কিন্তু তা নয়। ফ্রি টায়ারে একসাথে ঠিক একটিই লাইভ সার্ভার-নির্ভর অ্যাপ পাবেন। স্ট্যাটিক বিল্ড এই হিসাবে ধরা হয় না — যত খুশি মার্কেটিং পেজ ও পোর্টফোলিও সাইট পাবলিশ করুন, সেখানে কোনো সীমা নেই। কিন্তু নিজস্ব ডেটাবেস বা পার্সিস্টেন্ট প্রসেস দরকার এমন দ্বিতীয় বিল্ডকে অপেক্ষা করতে হবে, সম্পূর্ণভাবে তৈরি ও প্রিভিউযোগ্য থাকলেও নিজের URL-এ লাইভ থাকবে না। একই সপ্তাহে তিনটি SaaS আইডিয়ার প্রোটোটাইপ বানালে, শুধু একটাই আসল কম্পিউট জায়গা পাবে; বাকি দুটো সম্পূর্ণ পণ্য হলেও তাদের কোনো ঠিকানা থাকবে না। আমার মনে হয় সীমাটা যুক্তিসঙ্গত জায়গায় টানা হয়েছে — একটা স্ট্যাটিক বান্ডল এজে সার্ভ করতে প্ল্যাটফর্মের প্রায় কিছুই খরচ হয় না, কিন্তু একটা ওয়ার্ম সার্ভার প্রসেস তা করে না — তবে এর মানে হলো কোন আইডিয়াটা সেই স্লট পাওয়ার যোগ্য, সেই সিদ্ধান্তটা Publish চাপার আগেই নিতে হবে, দুটো একসাথে লাইভ রাখায় অভ্যস্ত হয়ে যাওয়ার পরে নয়।
রেকর্ডের জন্য, সেই চারটি ক্লিক
- বিল্ডের কার্ডে, Publish বেছে নিন।
- একটা স্লাগ বেছে নিন — yourname এর মধ্যে
yourname.buildmidas.com। নেওয়া হয়ে গেছে এমন স্লাগের বিকল্প সাজেস্ট করা হয়। - নিশ্চিত করুন।
- কার্ড থেকে URL কপি করুন, বা পরে আপনার Published পেজে খুঁজে নিন।
কোনো DNS নেই, বাইরের কোনো অ্যাকাউন্ট নেই, প্রোপাগেশনের জন্য অপেক্ষা নেই। আর সেই আধা সেকেন্ডের ব্যাপারে বলি: এটা কোনো কিউ বা "২৪ ঘণ্টা পরে চেক করুন" ধরনের বিলম্ব নয়, এটা নেহাতই সাধারণ CDN ক্যাশ ওয়ার্মিং। একটা নতুন সাবডোমেইনের প্রথম ভিজিটর হয়তো নিকটতম এজ নোড থেকে অ্যাসেট বান্ডল টানার সময় সামান্য বাড়তি লেটেন্সি টের পাবেন; দ্বিতীয় ভিজিটর, এবং তারপর সবাই, ক্যাশ থেকেই পাবেন। বাস্তবে আপনি এটা টেরই পাবেন না — পাবলিশ করবেন, লিংকে ট্যাপ করবেন, আর সেটা ততক্ষণে ইনস্ট্যান্ট মনে হবে। এটা শুধু এই কারণে উল্লেখ করলাম, কারণ কেউ যিনি পেশাগতভাবে লোড টাইমের স্ক্রিনশট নেন, তিনি একদিন জিজ্ঞেস করবেন কেন প্রথম আর দশম রিকোয়েস্ট এক নয়, আর এখন আপনি জানেন।
স্লাগই একমাত্র সিদ্ধান্ত যা ধীরেসুস্থে নেওয়া উচিত
এই ফ্লোতে বাকি সবকিছু যান্ত্রিক; স্লাগটাই একমাত্র জায়গা যা কাউকে মুখে বলতে হয় বা মনে রেখে টাইপ করতে হয়, তাই একটু ভেবে দেখা মূল্যবান। ইন্টারনাল টেস্টিংয়ের জন্য "demo-v2-final-final" ঠিক আছে, কিন্তু ক্লায়েন্টকে টেক্সট করার জন্য খারাপ। কনফার্ম করার আগে নিজে নিজে URL-টা উচ্চারণ করে দেখুন — riverside-cafe.buildmidas.com স্পষ্টভাবে পড়া যায়, riverside-cafe-mvp2.buildmidas.com তা যায় না। ছোট, সাধারণ শব্দ অনেকদিন ধরে চলা একটা প্ল্যাটফর্মে দ্রুত শেষ হয়ে যায়, তাই নেওয়া স্লাগের ক্ষেত্রে সরাসরি এরর না দিয়ে সাজেশন দেওয়া হয়। একটা নিন বা বাতিল করুন, কিন্তু বুঝেশুনে সিদ্ধান্ত নিন — আমি দেখেছি লোকেরা তাৎক্ষণিকভাবে একটা লিংক দরকার বলে ডেমোর মাঝে বক্সে যা দেখানো হয়েছে তাই নিয়ে নেয়, তারপর মাসের পর মাস একটা বিশ্রী নাম নিয়ে চলে কারণ পরে ঠিক করার মতো স্বাভাবিক কোনো মুহূর্ত আর আসে না।
আপনি না বলা পর্যন্ত রিপাবলিশ লাইভ সাইটকে স্পর্শ করে না
প্রথম দিকেই মনে গেঁথে নেওয়ার মতো একটা তথ্য: পাবলিশ করা একটা বিল্ড এডিট করলে লাইভ সাইট নড়ে না। আপনি জিনিস ভেঙে ফেলতে পারেন, একটা উদ্ভট লেআউট বদল করে দেখতে পারেন, এক সপ্তাহ ধরে পরীক্ষা করতে পারেন — ক্লায়েন্টের বুকমার্ক করা URL ততক্ষণ পর্যন্ত সেই একই সংস্করণ সার্ভ করতে থাকবে, যতক্ষণ না আপনি ইচ্ছাকৃতভাবে আবার পাবলিশ করছেন।
এটাই আপনার সম্পূর্ণ রোলব্যাক গল্প, আর এটা ভালো ঠিক এই কারণেই যে এটা একঘেয়ে সাদামাটা। ভার্সন ৬-এ একটা বাগ চলে গেল — একটা ফর্ম নীরবে সাবমিট হওয়া বন্ধ করে দিলো — আর আপনাকে রিভার্ট কমান্ড বা সাপোর্ট টিকিটের দিকে ছুটতে হয় না। আপনি ভার্সন হিস্ট্রি খুলুন, ভার্সন ৫ খুঁজে বের করুন, সেটাই রিপাবলিশ করুন। একই বোতাম, পুরনো সংস্করণ, লাইভ URL সাথে সাথে ফিরে যায়। তারপর কোনো চাপ ছাড়াই ভার্সন ৬ ঠিক করুন, কারণ কাজ করার সময় প্রোডাকশন ভাঙা থাকছে না। এর মূল্য হলো প্রতি রিলিজে একটা বাড়তি ক্লিক, কারণ আপনাকে মনে রাখতে হয় যে একটা এডিট করলেই তা এমনিতেই লাইভ হয়ে যায় না, বরং আসলেই পাবলিশ করতে হয়। যেসব টুলে প্রতিটা সেভ সরাসরি লাইভ হয়ে যায় — ডেমোতে দারুণ, কিন্তু সত্যিকারের ব্যবহারের তিন সপ্তাহ পরে ঝক্কির — তার সাথে তুলনা করলে, এই বাড়তি ক্লিক প্রতিবারই লাভজনক লেনদেন।
Unpublish মানে হলো URL আর কাজ করবে না, শুধু "তালিকা থেকে বাদ পড়া" নয়
অনেক প্ল্যাটফর্মে "unpublish" মানে এটাকে গ্যালারি পেজ থেকে লুকিয়ে ফেলা, যদিও URL চুপচাপ সার্ভ করতেই থাকে। এখানে এর মানে হলো ঠিকানাটা পুরোপুরি বন্ধ হয়ে যায় — কোনো ক্যাশ করা পেজ নেই, কোনো প্লেসহোল্ডার নেই, কিছুই খুলবে না। বিল্ডটি নিজে প্রতিটি ভার্সনসহ টিকে থাকে; পরে রিপাবলিশ করলে একই স্লাগ ঠিক যেখানে ছেড়ে গিয়েছিলেন সেখানেই ফিরে আসে। আমি এটা ব্যবহার করেছি সাধারণ কারণে (একটা ক্লায়েন্ট প্রজেক্ট শেষ হয়ে গেছে, কেউ চায় না তাদের পুরনো লোগো পাবলিক লিংকে ভাসতে থাকুক) এবং কম সাধারণ কারণেও (একটা বিল্ড থেকে এমন কিছু ফাঁস হয়ে গিয়েছিল যা হওয়ার কথা ছিল না, আর সেটাকে টিকিট ফাইল করার সময়ের চেয়ে দ্রুত, একটা বোতাম চাপার সময়ের মধ্যে অফলাইনে নেওয়া দরকার ছিল)। দুই পরিস্থিতিই একই নিশ্চয়তা চায়, আর দুটোই তা পায়।
আরেকটা বিষয় গুলিয়ে ফেলা উচিত নয়: পাবলিশ করলে লিংক জানা যেকোনো মানুষের জন্য URL সক্রিয় হয়ে যায়; সেটা খুঁজে পাওয়া যায় কিনা — পাবলিকভাবে তালিকাভুক্ত, মাঝে মাঝে Showcase-এ দেখানো — তা সম্পূর্ণ আলাদা একটা টগল। অনেক বৈধ পাবলিশ করা সাইট চিরকাল শুধু-লিংক-দিয়েই থাকা উচিত, আর পাবলিক লিস্টিংয়ে যুক্ত হওয়া একটা বিল্ডও ভেতরে-ভেতরে একই সাধারণ পাবলিশড সাইট, একই হিস্ট্রি ও একই আনপাবলিশ বোতামসহ।



