انتخاب راهکار ذخیره‌سازی مناسب برای Containerها

انتخاب راهکار ذخیره‌سازی مناسب برای Containerها

امروزه بسیاری از سازمان‌ها یا در حال استفاده از DevOps هستند، یا اینکه قبلا از این اقدامات بهره گرفته‌اند. برای بسیاری از شرکت‌ها، جلوتر حرکت کردن از اختلالات به این معنی است که نه تنها برنامه‌های کاربردی تازه‌ای را ارائه نمایند، بلکه فرایند‌ها و سیستم‌های کنونی را بهینه‌سازی کرده و یا تغییر دهند. اغلب این شرکت‌ها که به سمت کارهای تیمی پیش می‌روند، با سیر توسعه کمتر کار کرده و محیط‌های خود را خودکارسازی می‌کنند تا بتوانند سرعت توسعه و پیاده‌سازی نرم‌افزارها را افزایش دهند.

داشتن یک Storage مشترک که برای توسعه‌دهندگان Self-Service باشد تا بتوانند Storage را برای برنامه‌های کاربردی خود آماده‌سازی و مدیریت نمایند، به این معنی است که تیم‌ها در توسعه و انتشار برنامه‌های کاربردی اختلاف کمتری خواهند داشت.

برای تیم عملیاتی، پلتفرمی باثبات و دائمی برای توسعه، آزمایش و پیاده‌سازی محصولات، موفقیت بزرگی محسوب می‌گردد. همچنین برای توسعه‌دهندگان Self-Service بودن به این معنی است که تیم‌های عملیاتی زمان کمتری را صرف آماده‌سازی خدمات و زمان بیشتری را صرف کارهای سطح بالاتری نمایند که برای کسب‌و‌کار سودآور باشد. در نتیجه،Persistent Storage   برای کانتینرها همچنان بحث داغی هستند. با وجود اینکه Containerها برای ذخیره‌ی برنامه کاربردی و منطق آن بسیار خوب عمل می‌کنند، اما راهکاری را به صورت Built-In برای ذخیره‌سازی داده‌های برنامه کاربردی روی چرخه‌ی عمر برای کانتینرها ارائه نمی‌نمایند.

ناکارآمدی راهکار‌های Storage قدیمی برای کانتینرها

مدت زمان اجرای یک کانتینر ممکن است چندین روز، ساعت‌، دقیقه و یا حتی ثانیه باشد و این امر بستگی به این دارد که معماری برنامه کاربردی به چه صورتی است، نکته حائز اهمیت آن است که از دست دادن کانتینر می‌تواند جبران پذیر باشد اما از دست دادن داده‌ها هرگز قابل جبران نخواهد بود.

قاعدتا Storage موقت (Ephemeral) یا لوکال گزینه مناسبی نیست چراکه برنامه‌های کاربردیِ Stateful نیاز دارند که داده‌های متعلق به Container، فراتر از طول عمر کانتینرها قابل دسترسی باشد. همچنین نیازمند لایه‌ی Storageی هستند که تمامی ویژگی‌های Enterprise مانند مقیاس‌پذیری، پشتیبانی Multi-Protocol، Mirroring، کلاسترهای Stretched و غیره را برای برنامه‌های کاربردی که در محیط‌های مجازی پیاده‌سازی شده‌اند را فراهم نمایند. این مورد مهمی است که باید مدنظر قرار گیرد، زیرا بسیاری از محیط‌ها دارای Hostهای کانتینری هستند که در ماشین‌های مجازی اجرا می‌گردند، درنتیجه کاربر باید بتواند ویژگی‌هایPersistent Storage  را که برای مجازی‌سازی لازم است، به علاوه‌ی ویژگی‌های لازم برای Containerها، فراهم نماید. فراهم آوردن گزینه‌هایPersistent Storage  برای مدیران امری حیاتی است، زیرا Hypervisorها همواره امکان Storage باثبات را به شکل‌های مختلف ایجاد نموده‌اند.

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

نحوه‌ی کارکرد Storage مبتنی بر نرم‌افزار برای کانتینرها

راه بهتری نسبت به موارد ذکر شده در بالا وجود دارد: Storage مبتنی بر نرم‌افزار، یا در این مورد کانتینرهای Storage که حاوی نرم‌افزارهای Storage هستند و می‌توانند با کانتینرهای محاسباتی به طور مشترک مستقر گردند، از Storageی که به صورت لوکال و یا به صورت مستقیم به Hostها متصل شده استفاده نمایند. این کانتینرهای Storage با استفاده از لایه‌ی تنظیم یکسانی که توسعه‌دهندگان درون سازمان مورد استفاده قرار داده‌اند (مانند Red Hat OpenShift Container Platform مبتنی بر Kubernetes)، درست مثل کانتینرهای محاسباتی پیاده‌سازی و آماده‌سازی می‌گردند. در این سناریوی پیاده‌سازی، خدمات Storage با استفاده از نرم‌افزار Storageی که کانتینربندی شده است (مانند Red Hat OpenShift Container Storage) فراهم می‌گردد تا Storage را به طور ساده‌تر و با یکپارچگی بیشتر از Hostها و یا Storageی که به طور مستقیم متصل شده است برای برنامه‌های کاربردی کانتینربندی شده، دسته بندی و عرضه نمود.

Red Hat OpenShift Container Storage با Red Hat Gluster Storage ساخته شده و Storageی انعطاف‌پذیر، مقرون به صرفه و مناسب برای توسعه دهندگان را برای کانتینرها ارائه می‌نماید. این کانتینر  ذخیره سازی به سازمان‌ها کمک می‌کند تا Storage خود را در محیط‌های متعددی استانداردسازی کرده و به سادگی با Red Hat OpenShift یکپارچه‌سازی می‌گردد تا لایه Storage باثباتی را برای برنامه‌های کاربردی Containerبندی شده که نیازمند ذخیره‌سازهای Stateful  بلندمدت هستند، فراهم نماید. سازمان‌ها می‌توانند از یک راهکار ساده و یکپارچه‌سازی‌شده حاوی پلتفرم Container، محیط توسعه‌ی برنامه کاربردی و Storage، همه و همه به صورت یکجا و پشتیبانی‌شده توسط یک Vendor واحد، بهره ببرند.