نگاهی بر تحولات ۲ سال گذشتهی لیارا، زیرساخت جدید و پشتیبانی
۲۷ دی ۱۴۰۲
ما با یک ماموریت روشن و شفاف کار خود را شروع کردیم، ایجاد تجربهای تازه برای توسعهدهندگان که به صورت جادویی، متفاوت، ساده و لذتبخش باشد. در این مسیر، بازخوردهای شما روشنگر مسیر پیش روی ما بوده است. کدام قابلیت جدید را اضافه کنیم؟ کدام بخش را سریعتر کنیم؟ کدام تجربه را شیرینتر کنیم؟
در همین راستا، تیم توسعهی ما طی ۲ سال گذشته، با تمام توان و انرژی مشغول پیادهسازی این امکانات و تغییرات جدید بودند. اگر امکانات جدید مشکلاتی هم داشتند، با گزارشات کاملی که از شما دریافت میکردیم، رفع آنها را همواره در اولویت قرار دادهایم.
چگونه امکان استفاده از زیرساخت ابری را برای همه فراهم کردیم؟
بازخوردهای بسیاری دریافت میکردیم که توسعهدهندگان علاقهمند به استفاده از خدمات جدید ما هستند اما چون دانشجو هستند، به تازگی برنامهنویسی را شروع کردهاند و یا استارتآپی نوپا هستند، در حال حاضر درآمدی ندارند.
در اردیبهشت سال ۱۴۰۱، تصمیم گرفتیم که برای اولینبار بین شرکتهای ارائه دهندهی زیرساخت در کشور، این رویه را تغییر دهیم و امکان دسترسی به زیرساخت ابری را برای همه فراهم کنیم. در همین راستا، بررسیهای زیادی انجام گرفت و در نهایت منجر به سه تغییر زیر شد:
- ارائهی پلن ارزانتر با منابع کمتر برای برنامههای کم مصرف
- و ارائهی پلن رایگان برای برنامههای استاتیک (React و Vue و Angular و…)
در مرحلهی اول، تغییرات بالا را اعمال کردیم و از شما هم بازخوردهای مثبت فراوانی دریافت کردیم. خوشحالی شما انرژی تیم ما را برای پیشروی چند برابر کرد.
اما ما با ارائهی پلن رایگان برای برنامههای استاتیک، همچنان امکان استفاده از زیرساخت ابری را برای همه فراهم نکرده بودیم. خیلی از شما برنامههای خود را با فریمورکهایی مانند Laravel و Django توسعه دادهاید و نیازمند دست کم یک دیتابیس هم هستید.
ما متوجه شدیم که همچنان برای کاربردیتر شدن پلن رایگان، نیاز داریم که محدودیت آن را برای برنامههای استاتیک حذف کنیم و امکان استقرار هر نوع پلتفرمی را ارائه دهیم. این کار نیازمند افزایش ظرفیت زیرساخت لیارا بود تا توانایی میزبانی از موج جدید برنامههای رایگان کاربران را داشته باشیم. ما طبق برنامهریزی، ظرفیت را افزایش دادیم و در آبان ۱۴۰۱، پلن رایگان برای تمام پلتفرمها و سهتا از دیتابیسهای محبوب کاربران ارائه شد.
اما همه چیز طبق برنامهریزی پیش نرفت…
روزهای تاریک اینترنت
من فکر میکنم که کسب و کارها مانند قطعات Lego هستند. با تکیه بر توانمندیهای یکدیگر، کسب و کارهای جدید شکل میگیرند و چرخ را هم از ابتدا اختراع نمیکنند و روی نوآوری تمرکز میکنند.
همهی ما پاییز گذشته را بهخوبی بهخاطر داریم. بسیاری از کاربران ما، برای اتصال دامنههای شخصی خود به برنامههایی که در لیارا داشتند، از سرویس خارجی و دوستداشتنی Cloudflare استفاده میکردند. مشکلات ارتباطی پاییز گذشته، کسب و کار کاربران ما را مختل کرده بود.
ما قبل از آن روزها، بر روی سرویس DNS لیارا به عنوان یک خدمت جدید متمرکز بودیم و این محصول در دست توسعه بود. اما با مشکلاتی که پیش آمد، مجبور شدیم سریعتر دست به کار شویم و در آبان ۱۴۰۱، سرویس DNS لیارا را بهصورت آزمایشی و کاملا رایگان در اختیار کاربران قرار دادیم و خوشبختانه مشکلات ارتباطی دامنههای کاربران را برطرف کرد.
این سرویس تا به امروز دستخوش بهبودهای فراوانی شده و ما سعی کردیم چاشنی دلخواه خود را هم به آن اضافه کنیم تا همان تجربهی سادهای که در سایر محصولاتمان پیادهسازی کردیم را ارائه کند.
چگونه تجربهی جدیدی برای ارتباط کسب و کارها با کاربرانشان خلق کردیم؟
ارتباط با کاربران از طریق ایمیل یکی از محبوبترین روشهای ارتباطیست که متاسفانه ما برای ساخت لیارا، ارائهدهندهی خوبی برای آن پیدا نکردیم. ایمیل هم یکی از همان قطعات Lego ای است که در بخش قبلی از آن گفتم. این قطعهی Lego را پیدا نکردیم که به آن تکیه کنیم و روی کارهای اصلیمان متمرکز شویم.
بازخوردهایی که از شما دریافت میکردیم هم نشان میداد که شما هم این قطعهی Lego را پیدا نمیکنید. ایمیلی که ارسال کنید، بدانید الان در چه وضعیتیست، گزارش خوبی از جزئیاتاش داشته باشید و صرفا یک نامهای در بطری به دریا نیانداخته باشید.
در بهمن ۱۴۰۱، سرویس ایمیل لیارا را منتشر کردیم. محصولی ساختیم که خودمان آرزو داشتیم که وقتی لیارا را میساختیم، چنین سرویسی داشتیم که بتوانیم از آن برای ارسال ایمیل استفاده کنیم. اما حالا خوشحالیم که میتوانیم آن را در اختیار شما قرار دهیم.
چگونه برای همه امکان ارسال ایمیل با کیفیت را فراهم کردیم؟ خب، ۱۰۰ ایمیل رایگان در ماه، مهمانتان کردیم.
آنچه بر ما گذشت
تا تابستانی که گذشت، یعنی تابستان ۱۴۰۲، بیش از یک سال بود که پلنهای رایگان را بدون توقف ارائه میکردیم. از اینکه میدیدیم از آن برای تست ایدههایتان، اجرای استارتآپتان و آپلود نمونه کارهایتان استفاده میکنید، مطمئن میشدیم که مسیر درستی را در پیش گرفتهایم.
اما خاطرتان است که گفتم همه چیز طبق برنامه پیش نرفت؟ ما ظرفیتها را به درستی محاسبه کرده بودیم و برای تقاضای دوچندانی که پلنهای رایگان اضافه میکردند، آماده بودیم.
اما چندین برابر شدن سرویسهای کاربران، تنها نیازمند افزایش زیرساخت نبود و ضعفهای دیگری از سرویس ما را مشخص کرد. سرویسهای PaaS مانند لیارا بهطور کلی به این صورت عمل میکنند که سورسکد شما را در قالب یک Image به کمک Orchestratorهای OpenSourceای مانند Docker Swarm و Kubernetes بر روی یکی از سرورهایشان اجرا میکنند.
اما متاسفانه این تابستان لیارا، گرمتر از تابستانهای گذشته بود. کاربران به صورت تصادفی با اختلالاتی مواجه میشدند. برای مثال ارتباط درون شبکهای ناپایدار بود. و یا تغییرات روی سرویسها با تاخیر اعمال میشد. Orchestratorهایی که ما استفاده میکردیم، توان مدیریت این تعداد از کانتینرهایی که اصطلاحا کانتینرهای کوچک حساب میشوند را نداشتند. در واقع این ابزارها مناسب مدیریت تعداد زیادی کانتینر کوچک نیستند. کاربران ما بهصورت مداوم در حال اعمال تغییرات روی برنامههایشان هستند و تمام این فشار به سمت Orchestrator منتقل میشود که مطمئن شود آخرین نسخهی برنامههای دیپلویشدهی کاربران، همیشه در حال اجراست.
از دیگر محدودیتهایی که در Orchestratorهای مرسوم دارند این است که انعطاف بالایی برای اینکه ما بتوانیم سرورهای خود را در دیتاسنترهای مختلف قرار دهیم ندارند و معمولا ترجیح میدهند که تمام سرورهای کلاستر در کنار یکدیگر و با ping پایین باشند.
انتظاری که ما از یک Orchestrator داشتیم این بود که فرایند Scheduling را انجام دهد مطمئن شود که سرویسهای کاربران در حال اجرا باشند. بیایید یک Orchestrator با هم بنویسیم:
while (true) {
for(const task of tasks) {
await task.ensureIsRunning();
}
}
باید بپذیریم که این یک Design Pattern قدرتمند است. حلقهای که خسته نمیشود و دائما کنترل میکند.
دوباره به دنیا آمدن
با تمام مواردی که گفته شد، به نتیجه رسیدیم که برای پایداری ارتباط درون شبکهای زیرساخت لیارا و همینطور بهبود فرایند استقرار برنامهها و کنترل وضعیت آنها، لازم است که زیرساخت لیارا را دوباره طراحی کنیم. از همین بابت، پاییز امسال را مشغول طراحی زیرساخت جدید شدیم. معماری شبکهیمان را کاملا دگرگون کردیم و از همه مهمتر، Orchestrator خودمان را ساختیم.
در معماری جدید لیارا، Control Loopها هستند که تمام کارها را به عهده گرفتهاند و مطمئن میشوند که سرویسهای شما همیشه در حال اجرا باشند. ما پیچیدگیهایی که ابزارهای معروف دارند را به دور انداختیم، اما از بخشهای خوب آنها ایدههای فراوانی گرفتیم. باورتان نمیشود که چقدر خواندن سورسکد Kubernetes سخت و در عین حال، لذتبخش بود.
در حال حاضر که تقریبا یک و نیم ماه از ارائهی زیرساخت جدید لیارا گذشته است، ما در زیرساخت جدید به اندازهی ۵۰ درصد کل سرویسهای زیرساخت قبلی، خدمات میزبانی ارائه کردهایم.
چگونه جلوی اتلاف وقت کاربرانمان را گرفتیم؟
ما با تغییراتی که در این ۲ سال داشتیم و محصولاتی که ارائه کردیم، کاربران بیشتری را علاقهمند به استفاده از سرویسهای ابری مدرن کردیم. کاربران بیشتر، یعنی سوالات بیشتر. برای پاسخ به سوالات، هر شرکت زیرساختیای تیم پشتیبانی خود را تبلیغ میکند و عملا شما برای هر کاری، نیازمند این هستید که منتظر اپراتور پشت خط بمانید. اما ما رویکرد متفاوتی را در پیش گرفتیم تا قدرت بیشتری داشته باشید و کنترل سرویسهایتان، در دستان خودتان باشد و نیازی به اپراتورها نداشته باشید.
هر کدام از شما سوالاتی دارید که این سوالات در چند دسته خلاصه میشوند.
برای موارد مالی، بخش گزارش مالی را قرار دادهایم که توسط بخش مالی لیارا بررسی شده و از مشکلات فنی تفکیک شده تا با سرعت بیشتری توسط واحد مربوطه قابل تشخیص و پیگیری باشند.
برای موارد حساس، مانند زمانی که سرویستان با اختلال مواجه شده و از دسترس خارج شده، بخش گزارش اختلال را فراهم کردهایم. گزارشات این بخش بهطور مدام توسط تیم پشتیبانی لیارا در دست بررسی هستند تا در کوتاهترین زمان، اختلالاتی که ممکن است زیرساخت لیارا تجربه کند را رفع کنند. برای ثبت گزارش اختلال، در کنسول لیارا باید وارد صفحهی راهنما شوید که لینک آن در بالای کنسول است.
ما در تلاشیم که به جز این موارد، کاربرانمان نیازی به ارتباط با پشتیبانی نداشته باشند. در این صورت این نشان دهندهی ضعفی در محصول ماست که شما برای انجام یک عمل، نیازمند ارتباط با اپراتور انسانی باشید. ما برای پوشش این ضعف، برنامهریزیهای مختلفی انجام دادیم و افراد مختلفی در تیم ما مشغول بهبود محصولات لیارا بودهاند تا شما بتوانید به صورت سلف سرویس، از خدمات لیارا در ۲۴ ساعت شبانهروز، استفاده کنید.
پاسخ سوالاتم کجاست؟
ما راههای مختلفی را برای پاسخدهی ایجاد کردهایم.
مستندات لیارا، بهطور مداوم در حال بهبود و تکمیلشدن است. بیش از ۳۰۰ صفحه برای پوشش تمام نکات مرتبط با فریمورکها و ابزارهای مختلف نوشتهایم. از Fastify و NestJS گرفته تا Laravel Octane و کار با WebSocketها و…
روی تجربهی جستجوی آن هم وقت زیادی را گذاشتهایم. فقط کافیست عبارتی مانند Swoole و یا CORS را جستجو کنید تا تمام صفحات مرتبط را بیابید.
دورههای آموزشی ویدیویی هم به تازگی به تلویزیون لیارا اضافه شدهاند که آموزشهای گام به گام کار با محصولات لیارا و نحوهی ارتباط آنها با یکدیگر، در ویدیوها پوشش داده شده است.
اما من هنوزم جواب سوالم را نیافتم!
اگر سوالی دارید که در مستندات لیارا پاسخ آن داده نشده است، در این صورت کاربران با تجربهتر لیارا در کامیونیتی تلگرام حضور دارند که پاسخ شما را میدهند. شاید هم شما بهزودی جزو کاربران حرفهای لیارا شدید و پاسخ کاربران جدیدتر را دادید. ما همه پشتیبان یکدیگر هستیم.
در ادامه…
در ادامه، سعی میکنیم در راستای تحقق ماموریتمان قدمهای بلندتری برداریم. بازخوردهای شما را میشنویم و برنامهریزی میکنیم. برنامههای زیادی برای ماههای پیش رو داریم تا تجربهی زندگی ابری شما بهبود دهیم. این داستان دو سال گذشتهی ما بود. سختیهای زیادی داشتیم، اما از نتیجه خوشحالیم.