قبل از هرچیزی میخوام براتون یه داستان جالب تعریف کنم که در پاییز 2017 در استرالیا اتفاق افتاد.
دولت استرالیا در اون سال تصمیم گرفت که به صورت اینترنتی مردم رو سرشماری کنه. حدودا چند ساعت بعد از شروع رسمی سرشماری، وبسایت به دلیل ترافیک سنگین از کار افتاد.
یک هفته بعد از این اتفاق، دو دانشجوی دانشگاه هکاتون یک وبسایت غیر رسمی برای سرشماری ایجاد کردن که تا چهار برابر ترافیکی که باعث سقوط وبسایت رسمی شده بود رو تحمل میکرد.
تازه اون چیزی که جالبتره اینه:
مجموع هزینهای که برای این وبسایت غیررسمی شده بود، مبلغی معادل ۴۰۰ دلار بود که ۱۰ میلیون دلار کمتر از اون چیزیه که دولت استرالیا برای وبسایت رسمی سرشماری هزینه کرده بود.
هدفم از تعریف کردن این داستان این نبود که بگم، دولتها چهجوری هزینههای غیرضروری میکنن! میخوام توجهتون رو به این موضوع جلب کنم که یک تیم کوچیک در زمان کم و حتی شاید با اطلاعات کمتری نسبت به اون تیم دولتی چطور تونست از سرویسهای ابری استفادهی خیلی خوبی ببره.
در این پست میخوایم در مورد تکنولوژی جدیدی به اسم محاسبات و معماری بدون سرور یا Server-Less صحبت کنیم که توی زمینهی سرویسهای ابری ارائه شده و میتونه در آیندهای نزدیک به کمک کسبوکارهای زیادی بیاد.
به جای تولید نرمافزار به فکر خلق ارزش باشید!
اگر دقت کنید اون چیزی که این روزها داره زیاد تولید میشه، برنامه، وبسایت و نرمافزارهای مختلفه! برای هر کاری کلی نرمفزار مختلف وجود داره. در واقع باید بگم که نرمافزارها دارن دنیا رو میبلعن!
اما چیزی که داره فراموش میشه اینه که هدف ما نباید تولید نرمافزار باشه. هدف ما باید رفع نیاز مشتری و در واقع ارائهی ارزش به مشتری باشه.
خوشبختانه در روند تولید نرمافزار داره تجدیدنظرهایی میشه که در ادامه بعضی از ترندهاشو بررسی میکنیم:
تبدیل میکروسرویسها به یک جریان اصلی
میکروسرویسها به خاطر مزیتهایی که دارند، در شرکتهایی که به طور اختصاصی در زمینهی توسعهی نرمافزار فعالیت میکنن، مورد استقبال قرار گرفتن.
این مزیتها چیزایی مثل استقرار سریعتر، استفادهی بهتر از منابع و خودکار بودن هستن.
در واقع شرکتها سعی دارند، نرمافزارها رو به صورت توزیع شده و با استفاده از میکروسرویسها توسعه بدن.
پیشرفت برنامههای Open-Source
نرمافزارهای Open-Source و مخازن کد اشتراکی مثل گیتهاب، بین توسعهدهندهها محبوبیت خیلی زیادی پیدا کرده و توسعهنرمافزار رو به یک کار دستهجمعی تبدیل کردند.
توسعهدهندهها به صورت خیلی گسترده از نمونهکدهای موجود استفاده میکنند و با این کار توی زمان توسعهی نرمافزار مقدار زیادی صرفهجویی میکنند.
توسعه، آزمایش و بازخورد
برخلاف سالهای پیش که مدت زمان زیادی برای طراحی و توسعه نرمافزار صرف میشد بدون اینکه هیچگونه بازخوردی از کاربر گرفته بشه، این روزها نرمافزارهای خوب بر اساس چرخهی «توسعه، آزمایش و بازخورد» تولید میشن. این یک اقدام خیلی مفید هم برای استارتاپها و هم برای شرکتهای بزرگه.
خب، اگر بخوایم از ترندهای بالا کمال استفاده رو ببریم مطمئنا نیاز داریم که زیرساختهای مناسبش رو هم داشته باشیم.
تا امروز ما اسیر بودیم! اسیر زیرساختهای فیزیکی!
ما باید برنامهها و نرمافزارهامون رو محدود میکردیم به امکانات و محدودیتهای زیرساختهای فیزیکیمون.
ما نمیتونیم از زیرساختهایی که امروز میتونن نیازهامون رو برطرف کنن در چند سال آینده هم استفاده کنیم! یعنی چند سال آینده نیاز پیدا میکنیم که زیرساختهامون رو بهبود بدیم تا نیازهای نرمافزاریمون رو برطرف کنند.
البته این روند همینطور ادامه پیدا میکنه.
چیزی که الان بهش احتیاج داریم، تجدیدنظری اساسی در مورد زیرساختهاست! طوریکه بتونیم بدون دغدغه و نگرانی از هزینهها و محدودیتها روی ارزشی که میخوایم به کاربر ارائه بدیم، تمرکز کنیم.
معماری بدون سرور وارد میشود!
معماری بدون سرور یا Server-less دقیقا همون چیزیه که ما برای نسلهای بعدی بهش احتیاج داریم.
به معماری بدون سرور؛ FaaS یا Function as a Service هم میگن.
در حقیقت به این مفهوم اشاره دارد که توابع به عنوان خدمت در اختیار کاربران قرار داده میشود.
معماری بدون سرور باعث میشه توسعهدهندهها بتونن بدون نیاز به مدیریت سیستمهای سرور و برنامههای سمت سرور، روی توسعه محصولشون تمرکز کنن.
در واقع معماری بدون سرور به این معنی نیست که هیچ سروری وجود نداره! بلکه به این معنیه که شما به عنوان توسعهدهنده لازم نیست در مورد سرور و زیرساخت و حتی کانتینرها اطلاعاتی داشته باشین.
ارائهدهندههای سرویس میزان نیاز برنامهی شما به منابع رو محاسبه میکنن و در هر لحظه در اختیارتون قرار میدن.
حتی نیازی نیست نگران هزینهی منابع (تعداد سرورها و پهنای باند) باشین! چون ارائههندگان هزینه رو بر اساس میزان استفاده توابع و برنامهی شما از منابع محاسبه میکنن.
مزیتهای زیادی برای معماری بدون سرور وجود داره. موارد زیر چند نمونه از این مزیتها هستن:
- جدا کردن زیرساخت باعث میشه، توسعهدهنده درگیر مسائل مرتبط با پیچیدگیهای عملیاتی برنامه نشه.
- مقیاسپذیری منابع به صورت خودکار انجام میشه و منابع کاملا انعطافپذیر میشن.
- پیچیدگیهای مرتبط با استقرار برنامهها کاهش پیدا میکنه.
- توسعهدهندهها به همون اندازهای برای منابع هزینه پرداخت میکنند که واقعا به اون نیاز دارن و از اون استفاده میکنند.
این عوامل باعث شده که محاسبات و معماری بدون سرور محبوبیت زیادی پیدا کنه.
امیدواریم معماری بدون سرور مثل ماشینهای مجازی و کانتینرها رشد بیشتری پیدا کنه و به صورت عمومیتری مورد استفاده قراربگیره.
ارائهدهندههای بزرگ پیشبینیکردن تا ۵ سال آینده تا ۶۰ درصد از کارهای ابری رو با معماری بدون سرور انجام بدن.
معماری بدون سرور خیلی خوبه اما ...
برخلاف تمام مزیتهایی که برای معماری بدون سرور گفته شد، باید توجه داشته باشیم که این تکنولوژی، یک تکنولوژی نوظهوره و باید قبل از این که برای کارهای بزرگ ازش استفاده بشه از منظرهای مختلف مورد بررسی قرار بگیره.
خب این تکنولوژی هم بدون محدودیت نیست! اما از بین محدودیتهای مختلفی که داره، دوتا از اونا از بقیه برجستهتر هستند:
- توابع در معماری بدون سرور، Stateless هستند! این باعث میشه که اطلاعات از یک تابع به تابع دیگهای منتقل نشه! در نتیجه ایجاد برنامههای مختلف رو محدود میکنه.
- مثل هر تکنولوژی جدید دیگهای ابزارهایی که توی اکوسیستم محاسبات و معماری بدون سرور هستن هنوز کامل نیستن! مثلا monitoring و debugging برنامههای بدون سرور هنوز یه سری چالشهایی دارن.
اما با توجه به استقبالی که سرمایهگذارها و توسعهدهندهها از طرح معماری بدون سرور داشتن، پیشبینی میشه که این محاسبات با سرعت خوبی پیشرفت و تکامل پیدا کنه و محدودیتهاش برطرف بشه.