محاسبات بدون سرور یک الگوی استقرار برنامهای است که به برنامهها اجازه میدهد بر اساس تقاضا اجرا شوند و فقط منابع مورد نیاز برای اجرای آنها را مصرف کنند. در مقابل، با مدلهای محاسباتی سنتی، برنامهها به طور مداوم عمل میکنند (و منابع را مصرف میکنند)، حتی زمانی که درخواستهای کاربر را رسیدگی نمیکنند.
برنامه هایی که با استفاده از استراتژی محاسباتی بدون سرور مستقر می شوند، معمولاً توابع بدون سرور نامیده می شوند. خدماتی برای اجرای عملکردهای بدون سرور، مانند توابع AWS Lambda و Azure، از فروشندگان ابر عمومی در دسترس هستند. توسعهدهندگان همچنین میتوانند محیطهای بدون سرور را خودشان بر روی زیرساختهای مبتنی بر ابر یا در محل با استفاده از پلتفرمهایی مانند OpenFaaS و Knative که موتورهای محاسباتی بدون سرور منبع باز هستند، راهاندازی کنند.
اصطلاح “محاسبات بدون سرور” – که گاهی اوقات محاسبات رویداد محور نامیده می شود – کمی گمراه کننده است زیرا عملکردهای بدون سرور برای اجرا به سرور نیاز دارند. با این حال، منابع سرور “زیر سرپوش” مدیریت می شوند و هر عملکرد بدون سرور بر حسب تقاضا توسط یک موتور ارکستراسیون بدون سرور اجرا می شود. بنابراین، اگرچه محیطهای محاسباتی بدون سرور به سرورهای فیزیکی زیربنایی وابسته هستند، هیچ سختافزار سرور یا محیط سیستمعاملی برای مدیریت توسعهدهندگان یا مهندسان فناوری اطلاعات که توابع بدون سرور را اجرا میکنند وجود ندارد.
محاسبات بدون سرور چگونه کار می کند؟
توسعهدهندگان و مهندسان فناوری اطلاعات معمولاً ابتدا توابع بدون سرور را در یک محیط محاسباتی بدون سرور مستقر میکنند – که دوباره، میتواند یک سرویس مبتنی بر ابر یا محیطی باشد که خودشان پیکربندی و مدیریت میکنند. توابع می توانند برای خودشان برنامه های کاملی باشند، یا می توانند اجزای برنامه باشند، مانند کد مورد نیاز برای انجام یک نوع عملکرد خاص، مانند تغییر اندازه یک تصویر یا اسکن پایگاه داده.
در مرحله بعد، تیم شرایطی را تعیین می کند که تعیین می کند عملکردها چه زمانی اجرا شوند. به عنوان مثال، توسعه دهندگان می توانند یک تابع بدون سرور را پیکربندی کنند تا زمانی که برنامه دیگری درخواست می کند، اجرا شود.
از آنجا، محیط محاسباتی بدون سرور به طور خودکار عملکردها را زمانی که شرایط از پیش پیکربندی شده برآورده می شود، اجرا می کند. جدا از فضای دیسک مورد نیاز برای ذخیره کد تابع، که معمولاً حداقل است، توابع هیچ منبعی مصرف نمی کنند مگر اینکه در حال اجرا باشند. (محیط های بدون سرور ممکن است برخی از منابع را برای گرم نگه داشتن عملکردهای بدون سرور در صورتی که در مدت زمان کوتاهی به طور مکرر فراخوانی شوند، ذخیره کنند، اما منابع اختصاص داده شده برای این منظور کمتر از منابع مورد نیاز برای اجرای یک برنامه کاربردی سنتی است.)
محاسبات بدون سرور چه مزایایی دارد؟
محاسبات بدون سرور دو مزیت کلیدی دارد: مدیریت برنامه های کاربردی ساده و مصرف کارآمدتر منابع – که به نوبه خود منجر به کاهش هزینه ها می شود.
مدیریت برنامه های کاربردی ساده
از آنجایی که محاسبات بدون سرور، برنامههای کاربردی را از سرور و سیستم عامل اصلی خلاصه میکند، توابع بدون سرور برای استقرار و مدیریت آسانتر هستند. توسعه دهندگان و مهندسان فناوری اطلاعات نیازی به نگرانی در مورد تأمین سرورها با سیستم عامل، نصب برنامه های کاربردی به معنای سنتی یا پیکربندی منابع مختلف (مانند حساب های کاربری، سیستم های فایل و کتابخانه های نرم افزاری) که برای اجرای یک محیط سیستم عامل معمولی ضروری هستند، ندارند. .
در عوض، محاسبات بدون سرور آنها را قادر میسازد تا فقط بر روی کد خود تمرکز کنند، نه روی محیطی که آن را میزبانی میکند.
بهره وری منابع و هزینه
از آنجا که توابع بدون سرور تنها زمانی منابع را مصرف می کنند که به طور فعال درخواست ها را مدیریت می کنند، کارآمدتر از برنامه های معمولی هستند که به طور مداوم اجرا می شوند، حتی زمانی که از آنها استفاده نمی شود.
چنین کارایی به این معنی است که توابع بدون سرور بیشتری را میتوان روی یک سرور واحد میزبانی کرد، با این فرض که توابع همگی اجرا نمیشوند. همچنین به این معنی است که هزینه استقرار برنامهها (یا اجزای برنامه) از طریق توابع بدون سرور معمولاً کمتر است، بهویژه زمانی که با برنامههای محاسباتی یا حافظه فشرده سروکار داریم.
با یک برنامه معمولی، سازمان ها به طور مداوم برای منابع محاسباتی و حافظه ای که برنامه ممکن است در زمان اوج تقاضا به آن نیاز داشته باشد، پرداخت می کنند، حتی اگر همیشه از همه آن منابع استفاده نکند. (سیاستهای مقیاسپذیری خودکار برای تأمین منابع ممکن است این اتلاف را تا حدی کاهش دهد، اما نه به طور کامل.) در مقابل، با توابع بدون سرور، کسبوکارها فقط برای منابعی که عملکردها مصرف میکنند هزینه پرداخت میکنند. هیچ پولی برای منابعی که به برنامه تخصیص داده می شود اما در واقع توسط برنامه استفاده نمی شود، تلف نمی شود.
معایب محاسبات بدون سرور چیست؟
در حالی که محاسبات بدون سرور یک استراتژی مفید برای استقرار برخی از انواع برنامهها – به ویژه برنامههای پرمصرف منابع است – در هر شرایطی رویکرد درستی نیست، زیرا تعدادی اشکالات و محدودیتها در استفاده از آن وجود دارد.
وابستگی به پلتفرم
تا به امروز، استانداردسازی نسبتا کمی پیرامون محاسبات بدون سرور وجود دارد. هر سرویس یا پلتفرم ابری بدون سرور به توابع بدون سرور نیاز دارد که به روشی متفاوت ساخته، استقرار و مدیریت شوند.
به همین دلیل، توابع بدون سرور معمولاً وابسته به پلتفرم هستند و حرکت از یک محیط محاسباتی بدون سرور به محیط دیگر را بدون ایجاد تغییرات قابل توجه در عملکردها و قوانین مورد استفاده برای مدیریت آنها دشوار می کند.
دید محدود
از آنجایی که محاسبات بدون سرور، سرورها و سیستمهای عامل را از تیمهایی که از محیطهای بدون سرور استفاده میکنند، انتزاع میکند، اشکال زدایی توابع دشوارتر است. در حالی که اکثر پلتفرمهای بدون سرور نوعی گزارش را ارائه میکنند، معمولاً نمیتوانید گزارشهای کامل سیستم عامل را بررسی کنید یا درخواستها را در کل پشته میزبانی برای عیبیابی مشکلات ردیابی کنید. شما محدود به سطح دیدی هستید که محیط بدون سرور از آن پشتیبانی می کند.
چالش های امنیتی
هیچ چیز ذاتاً ناامنی در مورد استفاده از محاسبات بدون سرور وجود ندارد. با این حال، امنیت محیط های بدون سرور از برخی جهات دشوارتر است. عدم کنترل کامل بر محیط میزبان به این معنی است که شما نمی توانید از ابزارهای امنیتی یا نظارتی که در سطح سیستم عامل کار می کنند استفاده کنید. شما همچنین محدود به هر ابزار کنترل دسترسی محیط بدون سرور هستید. و اکثر توابع بدون سرور بر روی سرورهای مشترک اجرا می شوند، به این معنی که شما نمی توانید عملکردهای خود را از عملکردهای تیم ها یا سازمان های دیگر جدا کنید تا خطر ابتلا به مشکلات امنیتی در عملکردهای دیگر کاربران را تحت تأثیر قرار دهید.
هزینه
در حالی که محاسبات بدون سرور یک راه عالی برای صرفه جویی در هزینه در عملیات های سنگین منابع است که فقط باید به صورت دوره ای انجام شوند، منابع مصرف شده در یک محیط بدون سرور معمولاً بیشتر از منابع مصرف شده از طریق میزبانی برنامه های معمولی (حداقل در فضای ابری) هزینه دارند. به عبارت دیگر، بر اساس هر واحد، شما برای محاسبات و حافظه ای که توابع بدون سرور شما مصرف می کنند، بیشتر از زمانی که همان کد را برای مدت زمان یکسانی در ماشین مجازی اجرا می کنید، پرداخت خواهید کرد.
نمونه هایی از محاسبات بدون سرور
محاسبات بدون سرور روش مناسبی برای هر موردی نیست، اما توابع بدون سرور با موفقیت در انواع تنظیمات رایج مستقر می شوند.
تجزیه و تحلیل داده ها
تجزیه و تحلیل حجم زیادی از داده ها به منابع محاسباتی قابل توجهی نیاز دارد. این باعث می شود تجزیه و تحلیل داده ها مورد استفاده خوبی برای محاسبات بدون سرور باشد، به خصوص زمانی که تجزیه و تحلیل فقط نیاز به انجام دوره ای دارد.
به عنوان مثال، اگر برنامهای دارید که باید هر ساعت یک پایگاه داده را تجزیه و تحلیل کند، میتوانید توابع تجزیه و تحلیل را در یک محیط بدون سرور اجرا کنید. به این ترتیب، شما برای منابع محاسباتی مورد نیاز هزینه ای پرداخت نمی کنید، مگر اینکه به طور فعال از آنها استفاده شود.
عملیات CI/CD
برخی از عملیات در خطوط لوله تحویل نرم افزار که از معماری CI/CD استفاده می کنند نیز ممکن است با استفاده از توابع بدون سرور انجام شوند. به عنوان مثال، ساختهای برنامه، که معمولاً به مقدار قابل توجهی از منابع محاسباتی نیاز دارند و فقط به صورت دورهای اتفاق میافتند، میتوانند با استفاده از توابع بدون سرور برای بهبود کارایی منابع خط لوله CI/CD کلی اجرا شوند.
تبدیل فایل
تبدیل فایل نمونه عالی دیگری از نحوه استفاده از توابع بدون سرور در دنیای واقعی است. اگر برنامه ای نیاز به فرمت مجدد فایل هایی دارد که کاربران آپلود می کنند یا از یک فرمت (مانند Word Doc) به فرمت دیگر (مانند PDF) تبدیل می کنند، توابع بدون سرور راهی عالی برای انجام عملیات در صورت درخواست، بدون نیاز به اختصاص یک فرآیند مداوم در حال اجرا هستند. به آن
تجمیع لاگ و بازسازی
اگر برنامهای دارید که به صورت دورهای حجم زیادی از فایلهای گزارش را جمعآوری و/یا بازسازی میکند، عملکردهای بدون سرور راهی هوشمندانه برای انجام این کار هستند. میتوانید هر زمان که لازم باشد، بدون تخصیص منابع بیشتر از نیاز به کار، جمعآوری گزارش فشرده و قالببندی مجدد را انجام دهید.
تولید وب سایت پویا
وب سایت هایی که به شدت به محتوای سفارشی سازی شده و تولید شده به صورت پویا وابسته هستند، می توانند با کمک عملکردهای بدون سرور میزبانی شوند. در این مورد، توابع بدون سرور عملیات مورد نیاز برای تولید محتوای پویا را زمانی که کاربران درخواست میکنند، اجرا میکنند.
خلاصه
محاسبات بدون سرور یک تکنیک قدرتمند برای ساده کردن استقرار برنامه و در عین حال صرفه جویی در هزینه است. با این حال، به دلیل محدودیتهایی مانند قفل پلتفرم و کنترل محدود، استفاده استراتژیک از عملکردهای بدون سرور با رعایت موارد استفاده که بدون سرور منطقی است، مهم است.