برنامه نویسی

ارزیابی من از ارائه دهنده Scaleway Cloud

چند سال پیش، یک برنامه توسعه دادم که به من کمک کرد گردش کار ارسال کنفرانس خود را مدیریت کنم. از آن زمان، من یک کاربر خوشحال از طرح رایگان Heroku هستم. تابستان گذشته، مالک Heroku، Salesforce، اعلام کرد که این طرح رایگان را در نوامبر 2022 متوقف خواهد کرد. من به دنبال یک ارائه دهنده میزبانی جدید گشتم و Scaleway را پیدا کردم. در این پست، می‌خواهم نیازم، چرایی انتخاب آنها و تجربه‌ام در استفاده از آنها را توضیح دهم.

زمینه

من قبلاً برنامه را در پست های وبلاگ قبلی توضیح داده ام، به خصوص بخش استقرار. با این حال، در صورتی که می خواهید از خواندن مجدد آن اجتناب کنید، در اینجا خلاصه ای وجود دارد.

منبع حقیقت Trello است، جایی که من وضعیت کنفرانس خود را مدیریت می کنم CFPs: معوقه، ارسال شده، رها شده، پذیرفته شده و منتشر شده (در این وبلاگ). حالت “انجام شد” زمانی است که من یک کارت منتشر شده را بایگانی می کنم.

من برنامه را در Kotlin با Spring Boot نوشتم. این یک برنامه وب است که به تغییرات رویدادها از Trello از طریق webhooks گوش می دهد. یک رویداد یک گردش کار BPMN را بر اساس کاموندا شروع می کند. گردش کار تقویم Google من و فایل Google Sheet را مدیریت می کند.

به عنوان مثال، وقتی کارتی را از Backlog به Submitted منتقل می کنم، کنفرانس را به تقویم من اضافه می کند. این رویداد به عنوان رایگان برچسب گذاری شده است و دارای رنگ خاکستری خاصی است که نشان می دهد مکان نگهدارنده است. همچنین یک خط با وضعیت ارسال شده در Google Sheet اضافه می کند.

وقتی کارت را از ارسال شده به پذیرفته شده منتقل می کنم، رنگ رویداد تقویم Google را به پیش فرض تغییر می دهد و آن را به عنوان مشغول علامت گذاری می کند. همچنین وضعیت Google Sheet را به Accepted تغییر می دهد.

چرا Scaleway؟

همانطور که در مقدمه اشاره کردم، من یک کاربر خوشحال Heroku بودم. یکی از چیزهای مهم در مورد Heroku، جدا از طرح رایگان، ویژگی “هبرنیتینگ” بود: زمانی که برنامه در حال استفاده نبود، آن را خاموش می کرد. در اصل، برای برنامه های وب مقیاس تا صفر بود. اولین درخواست در مدتی کندتر بود، اما برای استفاده من مشکلی نداشت. نکته هیجان‌انگیز این است که مقیاس تا صفر یک ویژگی نبود، بلکه روشی بود که هروکو برای پایین نگه داشتن هزینه‌ها داشت. خارج از طرح رایگان Heroku، مقیاس خودکار فقط می تواند تا 1 کاهش یابد.

من یک طرفدار بزرگ هستم ویکتور فارسیچکانال YouTube، DevOps Toolkit. در همان زمان که Heroku پایان طرح رایگان خود را اعلام کرد، من Scaleway – Everything We Expect From A Cloud Computing Service؟ را تماشا کردم. به طور تصادفی، Scaleway اعتبار رایگان به استارت آپ ها، از جمله شرکتی که من در حال حاضر در آن کار می کنم، ارائه می دهد. طولی نکشید که من برنامه را به Scaleway منتقل کردم.

استقرار در Scaleway

قبل از توضیح نحوه استقرار در Scaleway، اجازه دهید نحوه استقرار من در Heroku را توضیح دهیم. دومی یک مخزن Git فراهم می کند. هر فشار به master ساختی را بر اساس آنچه هروکو می تواند تشخیص دهد، راه اندازی می کند. مثلا اگر ببیند a pom.xml، می داند که یک پروژه Maven است و بر این اساس دستور Maven را فراخوانی می کند. در زیر هود، یک ظرف داکر معمولی ایجاد می کند و آن را ذخیره و اجرا می کند. برای ثبت، این رویکرد پایه و اساس Buildpacks است و Heroku در کنار VMWare بخشی از سازندگان آن است. در Heroku، توسعه‌دهندگان گردش کار منظم خود را دنبال می‌کنند و پلتفرم هر دو بخش ساخت و استقرار را مدیریت می‌کند.

Scaleway یک ویژگی اختصاصی مقیاس تا صفر را برای ارائه کانتینرهای بدون سرور خود ارائه می دهد. ابتدا باید یک ظرف از قبل ساخته شده داشته باشید. زمانی که من شروع به استفاده از آن کردم، کانتینر قرار بود در رجیستری کانتینر اختصاصی Scaleway میزبانی شود. اکنون می توان آن را در هر جایی میزبانی کرد.

در رابط کاربری، کانتینری را برای استقرار انتخاب می‌کنید، متغیرها و اسرار محیط را پر می‌کند و Heroku آن را مستقر می‌کند.

مسائل اصلی

من تا به حال با استفاده از Scaleway به دو مشکل اصلی برخوردم.

  • را رابط کاربری گرافیکی تنها راه برای استقرار یک کانتینر است:

    برای شروع کار خوبی است، اما برای استفاده معمولی مناسب نیست. استاندارد صنعت مبتنی بر خطوط لوله ساخت است که کامپایل، آزمایش، ایجاد تصاویر کانتینر، ذخیره آنها در یک رجیستری و استقرار آنها در زیرساخت های راه دور است.

  • شما باید اسرار را در هر استقرار پر کنید:

    GitHub و GitLab هر دو به پیکربندی کانتینرهای مستقر شده با متغیرهای محیطی اجازه می دهند. به این ترتیب می توان یک ظرف واحد ایجاد کرد اما آن را در محیط های مختلف مستقر کرد. شما می توانید برخی از متغیرهای محیط را به عنوان مخفی پیکربندی کنید. هیچ کس نمی تواند آنها را بعد از آن بخواند، و آنها در گزارش ها ظاهر نمی شوند. Scaleway همچنین اسرار را ارائه می دهد. با این حال، شما باید آنها را در هر استقرار پر کنید. فراتر از چند تا از آنها، غیر قابل کنترل است.

پشتیبانی از اشکالات و Scaleway

در مدت کوتاهی که از Scaleway استفاده کردم، با دو باگ مواجه شدم.

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

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

در نهایت، من یک بلیط باز کردم تا بپرسم آیا امکان استقرار خودکار وجود دارد یا خیر. پس از چندین پیام، پشتیبانی من را به یک پروژه GitHub هدایت کرد. دومی یک اکشن GitHub را ارائه می دهد که به نظر می رسید نیاز من را برآورده می کند. متأسفانه، نمی تواند راهی برای پیکربندی کانتینر مستقر شده با متغیرهای محیطی ارائه دهد. تنها جایگزینی که پشتیبانی ارائه می دهد، جاسازی متغیرهای محیطی در کانتینر است. از جمله اسرار.

صرف نظر از مشکلات، ارتباط پشتیبانی از متوسط ​​تا کاملاً بی فایده متغیر است.

ورود به سیستم

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

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

من سعی کردم بفهمم که چرا Scaleway کنسول logging را به این روش پیاده‌سازی کرده است و به چند توضیح ممکن رسیدم:

  • مهندسی غذای سگ خودش را نمی خورد
  • مهندسی به تجربه توسعه‌دهنده اهمیتی نمی‌دهد
  • اینجوری ارزانتر بود
  • محصول گفت که این یک تجربه توسعه دهنده بد است، اما Engineering به هر حال به دلیل یکی از دلایل بالا این کار را انجام داد و قدرت سازمانی بیشتری دارد.

در هر صورت، روی محصول ضعیف منعکس می شود.

نتیجه

حتی اگر استفاده من از Scaleway 100% رایگان است، من از بخش استقرار بسیار ناراضی هستم. من برای اعتبارات رایگان و قابلیت مقیاس تا صفر آمدم. با این حال، فقدان یک راه حل استقرار خودکار قابل قبول و پشتیبانی از کیفیت ناهمگون (به صورت دیپلماتیک) باعث می شود در این مورد تجدید نظر کنم.

از سوی دیگر، خود سرویس Scaleway Cloud تاکنون قابل اعتماد بوده است. گردش کار Trello من به آرامی اجرا می شود و من نمی توانم شکایت کنم. Scaleway نمونه‌ای از یک محصول نه بد است که توسط یک تجربه توسعه‌دهنده بسیار بد خراب شده است. اگر در حال توسعه یک محصول هستید، حتماً به این جنبه از چیزها توجه کنید: درک محصول شما به دلیل عدم توجه به توسعه دهندگان می تواند بدتر شود.

فراتر رفتن:

در ابتدا در A Java Geek در 26 مارس منتشر شدهفتم، 2023

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

همچنین ببینید
بستن
دکمه بازگشت به بالا