পঞ্চাশটা সার্ভার ক্লিক করে বানানো কেন ভুল উত্তর, টেমপ্লেট কী কী ধরে রাখে, একটা চালু সার্ভার থেকে টেমপ্লেট বের করা, এক কমান্ডে তিনটে সার্ভার, সংস্করণ কীভাবে কাজ করে, আর Default-Latest গোলমাল — যেটা একটা fleet-এ দুরকম সার্ভার তৈরি করে।
পর্ব ৫-এ আমরা একটা সার্ভার চালু করেছি: সাতটা ঘর ভরে, Launch চেপে। পর্ব ৭-এ সাজানোর কাজটা একটা স্ক্রিপ্টে চলে গেছে। এখন প্রশ্নটা: পঞ্চাশটা লাগলে?
সরল উত্তরটা Launch ফর্মেই আছে — ডানদিকের Summary বাক্সে Number of instances লেখা। ১-এর জায়গায় ৫০ লিখে দাও। পঞ্চাশটা সার্ভার তৈরি হবে, একই AMI থেকে, একই স্ক্রিপ্ট নিয়ে।
সেটা কাজ করে। আর সেটাই ভুল উত্তর — কিন্তু কারণটা যা অনেকে ভাবে, তা নয়। কারণটা পঞ্চাশটা বানানো নিয়ে নয়, দ্বিতীয়বার নিয়ে।
ভাবো কী কী আর করা যাবে না:
"একই জিনিস আবার বানাও" — কীভাবে? ফর্মটা আবার ভরতে হবে। কোন AMI ছিল? কোন instance type? কোন security group? স্ক্রিপ্টটা কোথায়? কিছুটা মনে আছে, কিছুটা নেই। তুমি যা বানিয়েছ তার কোনো লিখিত বর্ণনা নেই — শুধু ফলটা আছে।
"স্ক্রিপ্টে একটা লাইন বদলাও" — কোথায় বদলাবে? স্ক্রিপ্টটা পঞ্চাশটা instance-এর ভেতরে ঢুকে গেছে, একটা কপি হিসেবে। মূল কপিটা তোমার ল্যাপটপে একটা ফাইল, বা একটা ব্রাউজার টেক্সটবক্সে — যেটা এখন বন্ধ।
"সহকর্মী একই জিনিস বানাবে" — কীভাবে বোঝাবে? মুখে? একটা উইকি পাতায় সাতটা ঘরের মান লিখে? আর সেই পাতাটা হালনাগাদ থাকবে কে দেখবে?
"Auto scaling নিজে নিজে সার্ভার বানাবে" — কী থেকে? এটাই সবচেয়ে বড় সমস্যা, আর পর্ব ২১-এ এটাই লাগবে। একটা scaling group তোমাকে জিজ্ঞেস করতে আসবে না কোন AMI চাই। তার একটা লিখিত নির্দেশ দরকার, আগে থেকে।
আসল সমস্যাটা তাই একটা শব্দে: পুনরাবৃত্তি নয়, স্থায়িত্ব। ফর্মে ৫০ লেখা পঞ্চাশটা সার্ভার দেয়, কিন্তু একটা রেকর্ড দেয় না। আর রেকর্ড ছাড়া দ্বিতীয়বার করাটা আবার প্রথমবার।
Launch template ঠিক এই রেকর্ডটা। ওই সাতটা ঘরের উত্তর একটা নাম দেওয়া জিনিসে জমা করে রাখা — তারপর "একটা সার্ভার চালু করো" মানে হয়ে যায় "ওই টেমপ্লেট থেকে একটা বানাও"।
আর এই এক বাক্য বদল থেকে তিনটে জিনিস বেরিয়ে আসে, যেগুলো আগে সম্ভব ছিল না:
শেষ সারিটা এই পর্বের আসল কারণ। বাকি তিনটে সুবিধা; এটা পূর্বশর্ত।
একটা launch template-এ Launch ফর্মের প্রায় সব ঘরই রাখা যায়, আর প্রতিটা ঐচ্ছিক। এটা একটা গুরুত্বপূর্ণ নকশার সিদ্ধান্ত: টেমপ্লেট একটা আংশিক বর্ণনা হতে পারে, আর বাকিটা launch-এর সময় দেওয়া যায়।
শেষ সারিটা একটু ব্যাখ্যা দরকার, আর এটা পর্ব ২১-এ কাজে লাগবে। টেমপ্লেটে subnet বেঁধে দিলে ওই টেমপ্লেট থেকে বানানো সব সার্ভার ওই একটা zone-এ যাবে — আর তার মানে তোমার "একাধিক zone-এ ছড়ানো" আর্কিটেকচারটা আসলে একটা zone-এ। তাই subnet-টা scaling group-এর হাতে ছেড়ে দাও; ওই স্তরটাই এই সিদ্ধান্তের সঠিক জায়গা।
আর tags নিয়ে একটা বাস্তব পরামর্শ, কারণ এটা সহজে চোখ এড়ায়: টেমপ্লেটে tag বসানোর সময় দুটো আলাদা জায়গা থাকে — instance-এর tag আর volume-এর tag। দুটোতেই বসাও। নইলে পরে Cost Explorer-এ দেখবে সার্ভারের খরচ ভাগ করা আছে আর ডিস্কের খরচ একটা অচিহ্নিত স্তূপ।
একটা জিনিস টেমপ্লেট রাখে না: অবস্থা। টেমপ্লেট একটা বর্ণনা, একটা জীবন্ত জিনিস নয়। টেমপ্লেট থেকে সার্ভার বানানোর পরে টেমপ্লেট বদলালে চালু সার্ভারগুলোর কিছুই হয় না। ওগুলো তৈরির সময় যা ছিল, তাই থাকে।
এটা সুসংবাদ আর দুঃসংবাদ একসাথে। সুসংবাদ: টেমপ্লেট বদলানো নিরাপদ, কিছু ভাঙে না। দুঃসংবাদ: নতুন কনফিগ পেতে সার্ভারগুলো প্রতিস্থাপন করতে হয় — আর ওটাই পর্ব ২১-এর শেষ অংশের বিষয়।
১০৫টি অংশের ২১টি দেখানো হয়েছে, ৮৪টি বাকি