محاسبات بدون سرور (Serverless Computing) مدلی برای توسعه اپلیکیشن است که در آن میتوان برنامهها را روی زیرساختهای واسط ساخته و قرار داد. همه برنامهها نیاز به سروری برای اجرا دارند. اما در مدل بدون سرور، تامین کننده ابری وظائف روزمره شامل تأمین منابع، مقیاس و نگهداری زیرساخت، مدیریت می کند. ارائه دهنده ابری چندین وظیفه دارد: مدیریت سیستمعامل، پچهای امنیتی، فایلسیستم و ظرفیت، تعادل بار، نظارت و ضبط داده ها. در نتیجه، توسعهدهندگان میتوانند بر طراحی اپلیکیشن تمرکز کنند و از مزایای زیرساخت یک سرور کارآمد و منعطف بهرهمند شوند.
اهمیت محاسبات بدون سرور
در روزهای ابتدایی اینترنت، برای اجرای یک اپلیکیشن وب، باید سرورهای فیزیکی تهیه میشد. شرکتها معمولاً دستگاههای سرور فیزیکی خود را در مراکز داده داخلی یا میزبانان سرور ذخیره میکردند. به دلیل هزینه بالای این روش، بیشتر اپلیکیشنها تنها از بخش کوچکی از منابع سختافزاری سرور استفاده میکردند. مدل محاسبات ابری این مشکل را با ایجاد سرورهای مجازی روی سختافزار ابری حل کرد. در این حالت، کاربران هنوز باید سرورهای مجازی خود را تأمین، پیکربندی، بهروزرسانی و مقیاسدهی میکردند. در نتیجه، ارائهدهندگان ابری شروع به تأمین فناوریهای بدون سرور برای افزایش سرعت و بهینهسازی هزینهها کردند. با محاسبات بدون سرور، توسعهدهندگان میتوانند بدون نگرانی از وظایف مدیریت زیرساخت، به اجرای کد، مدیریت داده و یکپارچه کردن برنامهها بپردازند.
چندین مزیت برای استفاده از محاسبات بدون سرور وجود دارد که در ادامه به آنها اشاره میشود:
- افزایش بهرهوری توسعهدهندگان
تیمهای توسعه میتوانند به جای پیکربندی، روی ساخت اپلیکیشنها تمرکز کنند. کاهش هزینههای عملیاتی به این معنی است که اپلیکیشنها سریعتر به بازار میآیند. توسعهدهندگان میتوانند به بازخورد مشتریان رسیدگی کرده و تغییرات کد اپلیکیشن را منتشر کنند. - مقیاسپذیری
ارائهدهندگان ابری ویژگی مقیاسپذیری خودکار را در محیطهای بدون سرور خود فراهم میکنند. اپلیکیشنهای بدون سرور محدودیتی در مقیاسبندی ندارند و تمرکز بر کدنویسی را آسان می کند. - هزینههای کمتر
هزینه مصرفی شامل CPU، حافظه و سایر منابع محاسباتی موردنیاز در اجرای کد است. برای منابعی که استفاده نمی شوند، هیچ هزینهای پرداخت نمی شود. این مدل «پرداخت بهازای ارزش» استفاده بهینه و جلوگیری از اتلاف منابع را تضمین میکند.
موارد استفاده از محاسبات بدون سرور
محاسبات بدون سرور در بسیاری از برنامهها و سیستمها کارآمد است:
- توسعه برنامههای بدون وضعیت
ساختار بدون سرور برای برنامههای ناهمزمان که دادههای مشتری را بین جلسات ذخیره نمیکنند، ایدئال است. نمونههایی از برنامههای بدون سرور شامل چتباتها، زمانبندی کنندهها و برنامههای IoT هستند. - پردازش دستهای
برنامههای پردازش دستهای وظایف تکراری با حجم بالا مثل پشتیبانگیری، فیلترکردن و مرتبسازی را دوره ای انجام میدهند. پردازش دستهای برای محیطهای بدون سرور که مقیاسپذیری بالایی دارند و وقتی استفاده نشوند هزینهای ندارند، مناسب است. - تحلیل دادههای بیدرنگ
محاسبات بدون سرور، برای بهبود پاسخگویی به مشتری، برای موتورهای پخش دادههای بی درنگ ایدئال است. اپلیکیشنهای بدون سرور میتوانند حجم عظیمی از دادههای صدها هزار منبع را با تأخیر کم و پهنای باند بالا پردازش کنند و به این شکل، بهجای چند دقیقه، می توان در عرض چند ثانیه به نتیجه رسید. - خودکارسازی فرایندهای کسبوکار
میتوان از رویکرد بدون سرور برای خودکارسازی فرایندهای کسبوکاری که وقتگیر و خستهکننده هستند، استفاده کرد. توسعهدهندگان میتوانند منطق کسبوکار را، بدون اینکه نیازی به مدیریت سرورها داشته باشند، به کد اپلیکیشن تبدیل کنند.
طریقه کارکرد Serverless Computing
هر اپلیکیشن دو بخش عملکردی کلی دارد: فرانتاند و بکاند. فرانتاند شامل همه مواردی است که کاربران نهایی با آن سروکار دارند مثل: چیدمان بصری، دکمهها و متنهای نمایشی. بکاند هم عملکردهایی را شامل می شود که کاربران به آنها دسترسی ندارند، مثل ذخیرهسازی و پردازش دادهها.
برای مثال، فرض کنید اپلیکیشن رزرو پرواز را در دستگاه موبایل خود دارید. فرانتاند UI اپلیکیشن شما است که در آن میتوانید تاریخها را انتخاب کرده و فهرستی از پروازهای موجود را ببینید. درخواست شما به بکاند ارسال میشود تا پایگاه داده را جستجو کرده و اطلاعاتی در مورد تمام پروازهای موجود در بازه زمانی انتخابی شما ارائه دهد.
در ساختار بدون سرور، توسعهدهندگان کدهای بکاند را روی زیرساخت ابری قرار میدهند. کلید برنامههای بدون سرور، ساختاری مبتنی بر رویداد است: یک الگوی ساختار مدرن که از سرویسهای کوچک و مجزا ساخته شده است و رویدادها را منتشر و یا مسیریابی میکند. رویدادها پیامهایی هستند که بین سرویسها ارسال میشوند.
این ساختار مقیاسپذیر، بهروزرسانی و استقرار جداگانه اجزای یک سیستم را آسانتر میکند.
مروری بر نحوه عملکرد ساختار بدون سرور (Serverless)
- توابع
توابع، واحدهای کد کوچک و مستقلی هستند که عملکردی خاص دارند. هر تابع برای اجرا به منابع پردازشی مانند CPU و حافظه نیاز دارد. ارائهدهندهٔ ابری این منابع را فقط زمانی که نیاز است تخصیص میدهد و یک محیط موقت برای اجرای تابع بدون سرور ایجاد میکند.
برخی رویدادها میتوانند تابع را فعال یا اجرا کنند. مثلا، یک رویداد ممکن است زمانی رخ دهد که کاربر دکمهای در یک برنامه را انتخاب کند. این درخواست میتواند تابعی را فعال کند که پایگاه داده را خوانده و اطلاعات مربوط را به کاربر نمایش میدهد.
- مقیاسپذیری درخواستها
هر چه تعداد درخواستها بیشتر باشد، به منابع بیشتری برای اجرای تابع نیاز است. تمرکز پلتفرم بدون سرور بر بار است و منابع ابری را به مقیاس تقریباً نامحدودی اختصاص میدهد. یک تابع بدون سرور میتواند یک یا یک میلیون درخواست را بدون تغییر در کد مدیریت کند.
زمانی که تابع دیگر درخواستی دریافت نکند، ارائهدهندهٔ ابری زیرساخت مرتبط را حذف میکند تا در هزینهها صرفهجویی شود. و منابع فقط در زمان نیاز استفاده میشوند.
انواع ساختار بدون سرور
در ساختار بدون سرور، ارائهدهندهٔ ابری وظایف مختلف کوچک و بزرگ بکاند را برای برنامه مدیریت میکند. در این شیوه، می توان کد سفارشی خود را مستقر کرد و ارائهدهندهٔ ابری منابع لازم برای اجرای کد را تامین می کنند. پلتفرم ابری ممکن است عملکردهای پشتیبان هم ارائه دهد که مستقیماً و بدون نوشتن کد قابل استفاده هستند.
در ادامه توضیحاتی در مورد هر دو نوع ساختار بدون سرور ارائه شده:
- تابع به عنوان سرویس (FaaS)
تابع به عنوان سرویس (FaaS) یک ساختار بدون سرور است که توسعهدهندگان میتوانند از آن برای نوشتن توابع سفارشی پشتیبان و پیاده سازی مستقیم کد تابع در زیرساخت ابری استفاده کنند. وقتی تابعی فراخوانی میشود، ارائهدهندهٔ ابری آن را بر روی یک سرور فعال موجود اجرا میکند و در صورت لزوم سرور جدیدی راهاندازی میکند. چنین توابعی به عنوان توابع بدون سرور شناخته میشوند؛ زیرا فرایند اجرای آنها پنهان است. توسعهدهندگان میتوانند کد را، بدون نگرانی از اینکه چگونه و کجا اجرا میشود، بنویسند و مستقر کنند.
- پشتیبان به عنوان سرویس (BaaS)
پشتیبان به عنوان سرویس (BaaS) به توسعهدهندگان امکان دسترسی به توابع پشتیبان از طریق یک API را میدهد. API مکانیزمی است که به دو مؤلفه نرمافزاری اجازه میدهد از طریق مجموعهای از تعاریف و پروتکلها با یکدیگر ارتباط برقرار کنند.
در محیط بدون سرور خود، ارائهدهندگان ابری دسترسی به رمزگذاری اضافی، احراز هویت و پایگاههای داده قابل دسترس از طریق ابر را از طریق API فراهم میکنند. البته امکان دسترسی به دیگر خدمات و برنامههای واسط نیز وجود دارد. این توابع بدون سرور از پیش نوشته شدهاند و میتوان آنها را مستقیماً در کد فراخوانی کرد.
- استراتژی اولویت بدون سرور
ساختار بدون سرور از اصول زیر پیروی میکند:
- عدم مدیریت سرور
- خدمات پرداخت بهازای ارزش
- مقیاسپذیری مداوم
- تحمل خطاهای داخلی
استراتژی اولویت بدون سرور این اصول را در تمام برنامهها، عملیات و چرخههای توسعه سازمان اولویتبندی میکند. در استراتژی اولویت بدون سرور یک توسعهدهنده یا شرکت از این اصول در ساخت برنامهها استفاده میکند. اما محاسبات بدون سرور برای هر بار کاری مناسب نیست و میتوان از فناوریهای دیگری هم به عنوان ساختار پشتیبان در این سیستم استفاده کرد.
- امنیت ساختار بدون سرور
بیشتر ارائهدهندگان ابری مدل امنیتی مشترکی را دنبال میکنند. ارائهدهنده ابری مسئول امنیت خود ابر و کاربران مسئول امنیت داخل ابر هستند. با ساختار بدون سرور، ارائهدهندهٔ ابری بسیاری از لایههای زیرساخت اضافی، از جمله سیستمهای عامل و شبکهها را مدیریت میکند. کاربران باید بهترین شیوهها را برای ایمنسازی برنامههای بدون سرور در پیش گیرند.