ذخیرهسازی فایل و Object Storage
ذخیرهسازی فایل: File در برابر Block در برابر Object (S3)؛ معماری آپلود و CDN برای فایلها
سه مدل ذخیرهسازی
| مدل | ایده | مثال | کاربرد |
|---|---|---|---|
| Block | بلوکهای خام مثل دیسک | EBS، دیسک سرور | دیتابیس، OS |
| File | فایل + پوشه + اشتراک شبکه | NFS، SMB | فایل سرور سازمان |
| Object | فایل + متادیتا + HTTP API | S3، MinIO | وب، عکس، ویدیو، بکاپ ✓✓ |
Object Storage — پادشاه وب
هر فایل = «شیء» با:
- داده: خود فایل (عکس، ویدیو، هرچیزی)
- کلید: نام یکتا (مسیر-مانند: images/2024/cat.jpg)
- متادیتا: نوع، اندازه، سفارشی!
دسترسی: HTTP ساده — GET/PUT/DELETE! بدون mount، بدون فایلسیستم.
چرا S3 برای وب؟
- مقیاس نامحدود: بدون مدیریت دیسک/سرور!
- دوام ۱۱ ناین: کپی خودکار در چند دیتاسنتر
- ارزان: GB در ماه ~ چند سنت
- سطحبندی: Hot (سریع) / Glacier (بایگانی ارزان!)
- CDN دوست: CloudFront جلوی S3 = تحویل جهانی
معماری آپلود درست
❌ اشتباه: فایل در دیتابیس (BLOB) — دیتابیس متورم و کند!
❌ اشتباه: فایل روی دیسک سرور — سرور مرد = فایل مرد!
✓ درست:
۱) کلاینت → Presigned URL → مستقیم به S3 (بدون فشار سرور!)
۲) S3 Event → صف → پردازش (تغییر اندازه)
۳) URL نهایی → CDN → کاربر
Presigned URL — آپلود مستقیم
سرور فقط «اجازهنامه امضاشده» میدهد؛ کلاینت مستقیم به S3 آپلود میکند — باندواید سرور صفر!
نکته مصاحبه: «فایلها کجا؟» — «Object Storage (S3) + CDN برای تحویل؛ آپلود با Presigned URL؛ متادیتا در دیتابیس» — این جمله کامل، معماری درست را نشان میدهد.
جمعبندی
- Block برای دیتابیس، File برای سازمان، Object برای وب
- S3: HTTP + مقیاس نامحدود + دوام عالی
- آپلود مستقیم با Presigned URL
- CDN جلوی S3 = تحویل جهانی سریع
این مبحث بخشی از دوره آموزش کامل طراحی سیستم (System Design) است.