در باب استفاده یا عدم استفاده از K8s...

تقریبا روزی نیست که تو یکی از گروه‌هایی که عضو هستم یکی پیشنهاد استفاده از Docker Swarm یا Kubernetes رو نده یا یکی سوالی در رابطه با حل یه مشکل تو یکی از این سیستم‌ها نپرسه.

می‌خوام در مورد اینکه چرا ممکنه پیاده سازی یه کلاستر Kubernetes ایده‌ی خوبی برای خیلی از کسب و کارها نباشه مواردی را مطرح کنم و البته باید اشاره کنم این موارد از تجربه‌ی شخصی من نشات می‌گیره و قابل تعمیم به کل نیست و صرفا سعی بر بیان چیزهایی که به نظرم مهم هستند دارم.

قبل اینکه وارد بحث فنی ماجرا بشم بیایید با این حقیقت رو به رو بشیم که بخشی از تکنولوژی‌های روزمره‌ی مورد استفاده تو مجموعه‌ها و انتخابشون از روی هایپ شکل یا تحت تاثیر قرار می‌گیره. اینطوری که امروز بحث NodeJS داغه و یک دفعه حجم عظیمی از آدم‌ها و شرکت‌ها هستند که به سمتش می‌رن و بعد بحث Kubernetes و ... و همین وضعیت همچنان هم ادامه داره. این شرایط از گذشته وجود داشته و فقط ظاهرش طی این سال‌ها تغییر کرده، در نتیجه باید قبول کنیم گاهی وقت‌ها افراد یا برای پر کردن رزومه یا برای تست یه تکنولوژی یا صرفا هایپ میرن سمت چیزای جدید و کاری ندارم به اینکه چنین تفکری گاهی چقدر می‌تونه به بیزنس آسیب بزنه.

حالا بریم سر موارد یکم فنی‌تر.

  • پیچیدگی پیاده سازی:

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

  • آموزش، آموزش و بازهم آموزش:

با فرض اینکه مورد بالا رو بررسی کردید و دردسرش رو هم به جون خریدید مورد بعدی آموزش تیم‌های فنی برای سازگار کردن اپ‌ها و نحوه‌ی استفاده از kubernetes هست. این پروسه برای شما و سازمان هزینه زمانی قابل توجهی داره. دوباره فکر کنید که آیا واقعا نیاز دارید؟

همچنین باید توجه داشته باشید این کلاستر هم یه نرم‌افزاره و عموما نگه‌داری چنین زیرساختی نیاز به یک تیم داره و برای یک کلاستر پروداکشن نیاز به مونیتورینگ دائمی دارید.


  • با Kubernetes انعطاف دارم:

گزاره‌ی بالا کاملا صحیحه و اتفاقا A/B کردن و green, blue deployment و .... راحتتر میشن اما قبلش از خودتون سوال کنید آیا بیزنسی که قصد دارید چنین زیرساختی را پیاده سازی کنید واقعا نیاز به چنین چیزی داره؟ و این موضوع که چقدر حضور این زیرساخت در برخی قسمت‌های کارتون پیچیدگی اضافه می‌کنه را هم در نظر داشته باشید.

  • فضای ذخیره سازی ابری؟

استوریج در حالت عادی وقتی چنتا ماشین مجازی دارید خیلی مساله بغرنجی نیست اما وقتی پاتون به Kubernetes باز میشه چالش‌های متنوعی اعم از پرفرمنس و نگه‌داری زیرساخت استوریج هم به کاراتون اضافه میشه. شما باید برای مثال تصمیم بگیرید که آیا از CEPH استفاده کنید یا GlusterFS یا ... و انتخاب هرکدام از این موارد خودش می‌تونه دریایی از مساله‌های مختلف و مشکلات نگه‌داری و ... را باز کنه. ممکنه هم تصمیم بگیرید از استوریج خود host ها استفاده کنید که خب محدودیت‌های خودشو داره.


  • سخت افزار:

یک کلاستر پروداکشن بسته به مدلی که پیاده سازی می‌کنید نیاز به منابع سخت‌افزاری زیادی داره و باید به این موضوع فکر کنید که این هزینه‌ها بر حسب موضوع استفاده‌ی شما به صرفه هست یا نه. البته که راه‌های متنوعی برای تست Kubernetes وجود داره ولی وقتی قراره محصول نهایی روی کلاستر شما دیپلوی بشه مسلما نیازمندی‌ها متفاوته و مسائل متعددی از جمله موارد مرتبط با پایداری و امنیت و ... را باید مدنظر قرار بدید.


  • پیچیدگی‌های احتمالی در بروز رسانی:

کانتینرها و ابزارهای مدیریتی‌شون دائما در حال بروز رسانی هستند که عموما مربوط به معرفی امکانات جدید یا رفع مشکلات عملکردی و امنیتی است (درست مثل بقیه نرم‌افزارها) اما چیزی که اهمیت پیدا می‌کنه اینجاست که Kubernetes زیرساخت خدمات شما را مدیریت ‌می‌کند بنابراین باید توجه ویژه‌ای به بروزرسانی و عیب یابی داشته باشید و بسته به مدلی که Kubernetes را پیاده سازی می‌کنید باید اطمینان پیدا کنید که عملیات شما بدون داون تایم صورت می‌گیره و این موضوع همیشه ساده نیست و قبل از اینکه کلاستر شما راهی پروداکشن بشه باید برای این موضوع هم برنامه داشته باشید و تست‌های لازم را انجام داده باشید.



از اونجاییکه دسترسی به سرویس‌های آمازون و گوگل و ... در ایران میسر نیست (که البته تقصیر من و شما هم نیست) و عموما افراد برای استفاده از Kubernetes مجبور می‌شن کلاستر خودشونو ستاپ کنند موارد بالا از جمله مواردیه که باید مدنظر قرار داده بشن و البته به تازگی یکی دو سرویس در زمینه ارائه خدمات مشابه در ایران شروع به کار کردند و با اینکه خودم تجربه‌ی استفاده از اونها را ندارم اما پیشنهاد می‌کنم قبل اینکه برید سراغ راه انداختن کلاستر خودتون از امکانات این سرویس‌ها استفاده کنید و ببینید چقدر مناسب نیازتون هست و بعد به فکر راه انداختن کلاستر خودتون باشید. البته این موضوع که استفاده از همین سرویس‌ها در صورتی‌که نیازهاتون را برآورده می‌کنه را هم بد نیست مدنظر قرار بدید و برای خودتون شب بیداری‌های جدید درست نکنید.


در این مطلب مسلما همه‌ی جوانب را نتونستم بررسی کنم و اگر چیزی بتونید به اینجا اضافه کنید سپاسگذار خواهم بود.