Loading...

ذخیره‌سازی · ۱۰ دقیقه مطالعه

اجرای MinIO توسط خودتان در برابر ذخیره‌سازی مدیریت‌شده‌ی سازگار با S3

MinIO کاری کرد که ذخیره‌سازی سازگار با S3 روی سخت‌افزار خودتان قابل اجرا باشد، و برای بعضی تیم‌ها این دقیقاً انتخاب درستی است. اما بخش سخت ماجرا هیچ‌وقت نرم‌افزار نبود — عملیات ذخیره‌سازی است: دیسک‌هایی که پر می‌شوند و می‌سوزند، ارتقاها، TLS، مانیتورینگ، و پرسش بکاپ که کسی دوست ندارد صاحبش شود. این راهنما هر دو طرف را صادقانه کنار هم می‌گذارد و اگر تصمیم گرفتید بار عملیاتی جای درستی برای وقت شما نیست، مسیر مهاجرت را هم نشان می‌دهد (یک دستور mc mirror).

Updated

اجرای MinIO توسط خودتان در برابر ذخیره‌سازی مدیریت‌شده‌ی سازگار با S3

MinIO چه چیزهایی را درست انجام می‌دهد

اول اعتبار را به صاحبش بدهیم: MinIO نرم‌افزار متن‌باز باکیفیتی است (AGPLv3) که API استاندارد S3 را تمیز پیاده می‌کند، هرجا که یک باینری یا کانتینر اجرا شود اجرا می‌شود، و روی سخت‌افزار خوب عملکرد چشمگیری دارد. اگر محدودیت شما این است که داده باید روی ماشین‌هایی بماند که فیزیکی در اختیار دارید — الزام قانونی محل نگهداری داده، یک شبکه‌ی جداشده، یا رکی که از قبل مال خودتان است — اغلب MinIO پاسخ درست است، و هیچ‌چیز در ادامه خلاف آن را نمی‌گوید.

پرسشی که این راهنما واقعاً به آن پاسخ می‌دهد باریک‌تر است: برای تیمی که محصولش ذخیره‌سازی نیست، وقتی هزینه‌های واقعی روی میز باشد، آیا اجرای MinIO بهترین مصرف زمان مهندسی است؟

بخشی که کسی برایش بودجه نمی‌گذارد: اجرای آن

یک سرویس ذخیره‌سازی در محیط عملیاتی، فهرستی از تعهدهای دائمی است. دیسک‌ها پر می‌شوند و می‌سوزند — کسی باید ظرفیت را زیر نظر داشته باشد و درایوها را پیش از آنکه افزونگی از بین برود تعویض کند. ارتقاها مرتب منتشر می‌شوند — کسی باید یادداشت‌های نسخه را بخواند، تست کند و کلاستر را بدون قطعی به‌روز کند. گواهی‌های TLS منقضی می‌شوند. access keyها به چرخش و ممیزی نیاز دارند. مانیتورینگ باید پیش از نخستین حادثه وجود داشته باشد، نه بعد از آن. و آن نکته‌ی بازگشتی: ذخیره‌سازی‌ای که بکاپ همه را نگه می‌دارد، خودش هم به بکاپ نیاز دارد، جایی بیرون از خودش.

هیچ‌کدام از این‌ها در یک روز مشخص کار سختی نیست. هزینه این است که هرگز تمام نمی‌شوند، کار روی قابلیت‌ها را قطع می‌کنند، و بهای کوتاهی نه یک صفحه‌ی کند، که از دست رفتن داده است. همین عدم‌تقارن است که باعث می‌شود «فقط یک MinIO روی یک VPS بالا می‌آوریم» بی‌سروصدا به یک شغل نیمه‌وقت با پیجر تبدیل شود.

چه زمانی self-hosted هنوز انتخاب درستی است

در هر دو جهت صادق باشیم. MinIO را خودتان اجرا کنید وقتی داده از نظر قانونی یا قراردادی باید روی ماشین‌های مشخصی بماند؛ وقتی از قبل مهندس زیرساخت دارید و یک سرویس بیشتر تفاوت چندانی نمی‌سازد؛ وقتی مقیاس‌تان آن‌قدر بزرگ است که سخت‌افزار اختصاصی از هر قیمت گیگابایتی بهتر درمی‌آید؛ یا وقتی در حال یادگیری هستید — یک MinIO در آزمایشگاه خانگی، مدل S3 را بهتر از هر مقاله‌ای، از جمله همین مقاله، یاد می‌دهد.

اگر هیچ‌کدام از این‌ها توصیف شما نیست — اگر ذخیره‌سازی وابستگی چیزی است که می‌سازید و نه خودِ آن چیز — آن‌وقت هر ساعتی که صرف هشدارهای دیسک می‌شود، ساعتی است که از محصول شما گرفته شده است. استدلال به‌نفع نسخه‌ی مدیریت‌شده همین است.

«مدیریت‌شده» چه چیزی را جایگزین می‌کند

روی cdn.com.tr همان سطح آشنای S3 — bucketها، access keyها، API استاندارد — به‌جای سرویسی که خودتان اجرا کنید، قابلیتی از حساب فعلی شماست. ماندگاری، ظرفیت و ارتقاها مسئله‌ی عملیاتی ما هستند؛ شما یک bucket را از پنل یا با یک دستور cdnctl می‌سازید، یک جفت کلید تولید می‌کنید و ابزارهای‌تان را به s3.cdn.com.tr نشانه می‌گیرید. Bucketها به container appهای شما متصل می‌شوند و objectهای عمومی از همان edge جهانی سرو می‌شوند که بقیه‌ی حساب شما را پوشش می‌دهد — ذخیره‌سازی و تحویل روی یک پنل و یک صورتحساب، از ماهانه ۹ دلار با ۱۵ روز آزمایش.

آنچه از دست می‌دهید دسترسی root روی گره‌های ذخیره‌سازی و امکانات خاص MinIO مانند کنسول مدیریتی یا سیاست‌های ILM آن است. آنچه به دست می‌آورید زمان است — و یک سیستم کمتر که حالت خرابی‌اش، از دست رفتن داده‌ی مشتری است.

مهاجرت: یک دستور، بعد تعویض endpoint

چون MinIO و cdn.com.tr هر دو به API استاندارد S3 صحبت می‌کنند، کلاینت خودِ MinIO بار سنگین را برمی‌دارد. mc mirror محتوای bucket را بین هر دو endpoint سازگار با S3 کپی می‌کند، قابل‌ازسرگیری است و می‌تواند بارها اجرا شود — هر بار فقط آنچه تغییر کرده منتقل می‌شود، پس می‌توانید در حالی که سیستم قدیمی هنوز زنده است پیش‌همگام‌سازی کنید و هنگام جابه‌جایی نهایی فقط یک اجرای کوتاه داشته باشید.

پیش‌همگام‌سازی، بررسی، و سپس تعویض endpoint در پیکربندی اپلیکیشن

# 1) point mc at both sides
mc alias set minio  http://10.0.0.5:9000       MINIO_ACCESS_KEY  MINIO_SECRET_KEY
mc alias set cdntr  https://s3.cdn.com.tr      CDNTR_ACCESS_KEY  CDNTR_SECRET_KEY

# 2) copy a bucket (re-run any time; only changes transfer)
mc mirror --preserve minio/app-uploads cdntr/app-uploads

# 3) verify object counts and sizes match
mc du minio/app-uploads
mc du cdntr/app-uploads

# 4) cutover: change S3_ENDPOINT (+ keys) in your app config,
#    run one final mirror pass, then retire the old server

یک مقایسه‌ی واقع‌بینانه‌ی هزینه

نمایش صفحه‌گسترده را کنار بگذاریم: مقایسه‌ای که برای حالت self-hosted فقط فاکتور VPS را می‌شمارد، داستان است. دفتر صادقانه سه سطر دارد. سخت‌افزار یا اجاره‌ی VPS — سطر قابل‌مشاهده، و معمولاً کوچک‌ترین. ساعت‌های مهندسی — یک‌بار راه‌اندازی، و بعد همان تعهدهای دائمی بالا، با قیمت واقعی وقت شما. و ریسک — هزینه‌ی مورد انتظار یک روز بد: خرابی همزمان دو دیسک، یک ارتقای خراب‌شده، بکاپی که هرگز آزمایش نشد. ذخیره‌سازی مدیریت‌شده سطرهای دوم و سوم را به سمت ما منتقل می‌کند و آن‌ها را به اشتراکی ثابت و قابل‌پیش‌بینی تبدیل می‌کند. اینکه این معامله به‌نفع شما تمام می‌شود یا نه به تیم شما بستگی دارد — و دقیقاً به همین دلیل چارچوب تصمیم‌گیری بالا درباره‌ی ظرفیت عملیاتی شما می‌پرسد، نه فقط درباره‌ی قیمت‌ها.

پرسش‌های پرتکرار

آیا کد فعلی S3 من بعد از مهاجرت از MinIO کار می‌کند؟

بله. هر دو طرف API استاندارد S3 را پیاده می‌کنند، پس اپلیکیشن‌هایی که از SDKهای AWS، presigned URL یا multipart upload استفاده می‌کنند به کار خود ادامه می‌دهند — شما آدرس endpoint و جفت access key را در پیکربندی عوض می‌کنید، نه کد را.

می‌توانم به‌جای یک‌باره، تدریجی مهاجرت کنم؟

بله — و مسیر پیشنهادی همین است. mc mirror افزایشی است، پس روزها قبل پیش‌همگام‌سازی کنید، سیستم قدیمی را زنده نگه دارید و برای هر bucket یا هر اپلیکیشن، هر بار با یک اجرای کوتاه نهایی جابه‌جا شوید.

آیا استفاده‌ی تجاری از MinIO رایگان است؟

MinIO تحت AGPLv3 منتشر می‌شود که استفاده از آن رایگان است اما تعهدهای copyleft دارد و بعضی شرکت‌ها این تعهدها را با دقت بررسی می‌کنند؛ MinIO لایسنس تجاری هم می‌فروشد. این بررسی بخشی از هزینه‌ی واقعی مسیر self-hosted است — به‌جای یک مطلب وبلاگی، از جمله همین مطلب، با مشاور حقوقی خودتان مشورت کنید.

بعد از انتقال به cdn.com.tr چه بر سر ترافیک دانلود می‌آید؟

objectهای عمومی می‌توانند از طریق edge جهانی جلوی حساب شما سرو شوند، پس دانلودهای تکراری به‌جای رسیدن به storage در هر بار، از کش نزدیک کاربر پاسخ داده می‌شوند — معمولاً نخستین بردی که پس از ترک یک MinIO تک‌سروری به چشم می‌آید.