ব্লক আর অবজেক্ট স্টোরেজের আসল পার্থক্য, bucket ও key, নাম বিশ্বব্যাপী অনন্য হওয়ার ফল, ছ-টা storage class আর তাদের দুটো অক্ষ, lifecycle rule দিয়ে খরচ নিয়ন্ত্রণ, এগারোটা নয়-এর সৎ ব্যাখ্যা, আর S3-কে ফাইলসিস্টেম ভাবার পাঁচটা ফাঁদ।
পর্ব ৫-এ আমরা একটা সার্ভারে একটা ডিস্ক পেয়েছি, আর পর্ব ৪-এ একটা বিচ্ছিন্ন ডিস্ক খুঁজে বের করেছি। এবার সম্পূর্ণ আলাদা একটা জিনিস: S3, যেটা স্টোরেজ, কিন্তু ডিস্ক নয়।
পার্থক্যটা অনেকে "S3 বড়, সস্তা" বলে বোঝায় — সেটা সত্যি কিন্তু মূল কথা নয়। আসল পার্থক্যটা হলো তুমি জিনিসটাকে কীভাবে ঠিকানা দাও, আর তার থেকেই বাকি সব কিছু বেরিয়ে আসে।
ব্লক স্টোরেজ (EBS, অর্থাৎ একটা ডিস্ক): তুমি ব্লক নম্বর দিয়ে ঠিকানা দাও। "১,২০,৪৫৬ নম্বর ব্লক থেকে ৪ কিলোবাইট পড়ো।" নাম নেই, ফাইল নেই — শুধু সংখ্যা।
তাহলে ফাইলগুলো কোথা থেকে আসে? একটা filesystem উপরে বসে, যেটা ওই ব্লকগুলোকে ফাইল আর ডিরেক্টরিতে সাজায়। আর ওই সাজানোটা জানে শুধু ওই একটা সার্ভার, যেটায় ডিস্কটা mount করা।
অবজেক্ট স্টোরেজ (S3): তুমি একটা নাম দিয়ে ঠিকানা দাও, HTTP-র উপরে। "devops-lab-logs bucket থেকে logs/app-2026-10-31.log দাও।" কোনো mount নেই, কোনো filesystem নেই, কোনো সার্ভার নেই।
ছবিতে দুটো পাশাপাশি আছে। আর এই এক পার্থক্য থেকে তিনটে ফল বেরোয়, আর তিনটেই ব্যবহারিক:
ফল ১ — ব্লকে এক বাইট বদলানো যায়, অবজেক্টে যায় না।
এটাই সবচেয়ে গুরুত্বপূর্ণ। একটা ডিস্কে তুমি একটা ফাইলের মাঝখানে লিখতে পারো — একটা বাইট বদলাও, বাকিটা অপরিবর্তিত। S3-তে এটা অসম্ভব। একটা অবজেক্টের একটা অক্ষর বদলাতে চাইলে পুরো অবজেক্টটা আবার আপলোড করতে হবে।
আর এটা থেকেই পরিষ্কার হয়ে যায় কোনটা কোথায়:
ফল ২ — ব্লক একটা সার্ভারে, অবজেক্ট সবার জন্য।
একটা EBS volume একসাথে একটাই instance-এ লাগানো যায়, আর সেটা একটা availability zone-এ সীমিত (পর্ব ৩-এর কথা)। একটা S3 bucket সব জায়গা থেকে পৌঁছানো যায়, আর হাজারটা ক্লায়েন্ট একসাথে পড়তে পারে।
ফল ৩ — দামের পার্থক্য বিরাট।
অবজেক্ট স্টোরেজ প্রতি গিগাবাইটে অনেক সস্তা — আর তার কারণ এই নকশাটাই। কোনো ডিস্ক বরাদ্দ রাখতে হয় না, কোনো filesystem রক্ষণাবেক্ষণ করতে হয় না।
আর পর্ব ৪-এর সেই গুরুত্বপূর্ণ পার্থক্যটা এখানে ফিরে আসে: EBS-এ তুমি বরাদ্দের দাম দাও, S3-তে যা আছে তার দাম দাও। একটা ১০০ GiB ডিস্ক খালি থাকলেও ১০০ GiB-র দাম; একটা bucket-এ ২ GiB থাকলে ২ GiB-র দাম।
তাই প্রশ্নটা মাপের নয়, একটা বাক্যের: "এই জিনিসটার মাঝখানে কিছু কি লিখবে?" উত্তর হ্যাঁ হলে ব্লক, না হলে অবজেক্ট।
S3-এর শব্দভান্ডার ছোট — মাত্র তিনটে জিনিস:
আর এখন সবচেয়ে কাজের তথ্যটা, যেটা অনেকে কখনো জানে না:
S3-তে ফোল্ডার নেই।
কনসোলে ফোল্ডার দেখা যায়, aws s3 ls ফোল্ডারের মতো দেখায়, আর সব কিছু ফোল্ডারের মতো আচরণ করে। কিন্তু ওগুলো নেই। যা আছে তা হলো একটা সমতল তালিকা, যেখানে প্রতিটা অবজেক্টের একটা লম্বা নাম:
logs/2026/app-10-31.log logs/2026/app-09-02.log logs/2025/app-12-15.log
ওই / চিহ্নগুলো নামের অংশ, কোনো গঠন নয়। কনসোল / দেখে ফোল্ডারের ভ্রম তৈরি করে, কারণ সেটা মানুষের জন্য সুবিধাজনক।
এটা জানা কেন দরকার — তিনটে ব্যবহারিক ফল:
১. "খালি ফোল্ডার" বলে কিছু নেই। একটা ফোল্ডারের ভেতরের শেষ অবজেক্টটা মুছলে ফোল্ডারটা অদৃশ্য হয়ে যায়, কারণ ওটা কখনো ছিলই না।
২. একটা ফোল্ডারের নাম বদলানো সস্তা নয়। একটা filesystem-এ ফোল্ডারের নাম বদলানো একটা তাৎক্ষণিক কাজ — শুধু একটা এন্ট্রি বদলায়। S3-তে ওটা মানে প্রতিটা অবজেক্ট নতুন নামে কপি করা আর পুরোনোগুলো মোছা। হাজারটা ফাইল হলে হাজারটা কপি, আর প্রতিটার জন্য একটা অনুরোধের দাম।
৩. Prefix দিয়ে খোঁজা দ্রুত, মাঝখান দিয়ে খোঁজা নয়। logs/2026/ দিয়ে শুরু হওয়া সব কিছু চাওয়া দ্রুত, কারণ তালিকাটা নাম অনুযায়ী সাজানো। কিন্তু "যেসব নামে error আছে" — এটা পুরো তালিকা পড়া ছাড়া সম্ভব নয়।
১৪৯টি অংশের ৩০টি দেখানো হয়েছে, ১১৯টি বাকি