حوزه محاسبات بدون سرور (Serverless Computing) به سرعت در حال پیشرفت است و سازمانها بیش از پیش از این معماری جهت تسهیل فرایند توسعه برنامه و کاهش هزینههای عملیاتی استفاده می کنند. با توجه به رشد معماری بدون سرور، نیاز است کسبوکارها با مزایا و چالشهای امنیتی منحصربهفرد آن آشنا باشند.
معماری بدون سرور چیست؟
رایانش بدون سرور (Serverless Computing) مدل جدیدی از محاسبات ابری است که در آن، توسعهدهندگان میتوانند بدون نیاز به مدیریت و نگهداری سرور، برنامههای خود را ساخته و اجرا کنند. در این مدل، ارائه دهنده خدمات ابری وظایف مربوط به زیرساخت، مانند تهیه، پیکربندی و مقیاسبندی سرورها را بر عهده میگیرد و توسعهدهندگان فقط روی نوشتن کد و منطق برنامه خود تمرکز میکنند.
تصویر(1)
بر خلاف تصور رایج، در رایانش بدون سرور، سرورها به طور کامل حذف نمیشوند. در واقع، ارائه دهندگان خدمات ابری از تعداد زیادی سرور برای اجرای برنامههای مختلف استفاده میکنند اما این سرورها برای توسعهدهندگان پنهان هستند. توسعهدهندگان فقط با توابع و سرویسهای خاصی که ارائه دهنده خدمات ابری ارائه میکند، تعامل دارند.
معماری بدون سرور رویکردی جدید برای ساخت وباپلیکیشنها به شمار می رود. برخلاف معماریهای سنتی، معماری serverless به توسعهدهندگان این امکان را میدهد تا بدون نگرانی در مورد زیرساخت، برنامههای کاربردی را طراحی و پیادهسازی نمایند. در این حالت، شما با استفاده از مجموعه سرویسهای مدیریتشده، تمام موارد مورد نیاز اپلیکیشن خود را تامین میکنید. برخی از این سرویسها شامل موارد زیر میشوند:
- دریافت درخواستهای شبکه: سرویسی برای دریافت درخواستهای ورودی از اینترنت
- پلتفرم محاسباتی: پلتفرمی برای اجرای کد شما براساس درخواستها
- ذخیرهسازی داده مدیریتشده: پایگاه دادهای با مدیریت کامل برای ذخیره سازی و بازیابی اطلاعات
نمونهای از معماری بدون سرور
برای درک بهتر این مفهوم، یک نمونه ساده از REST API بدون سرور را در نظر بگیرید. فرض کنید از سرویسهای ابری آمازون (AWS) استفاده می شود. در این سناریو، معماری serverless شامل موارد زیر است:
- API Gateway: این سرویس درخواستهای HTTP ورودی را از اینترنت دریافت میکند.
- توابع Lambda: این توابع، کد را اجرا میکنند که منطق اصلی API را تشکیل میدهد. هر درخواست API به یک تابع Lambda ارسال میشود.
- DynamoDB: این پایگاه داده بدون سرور، محل ذخیره سازی و بازیابی اطلاعات می باشد.
مورد فوق تنها یک نمونه از این معماری است و موارد استفاده دیگری نیز وجود دارد که هر کدام، از مجموعه سرویسهای مدیریتشده مختص به خود استفاده می کنند.
3 مزیت استفاده از معماری serverless
تصویر(2)
- کاهش هزینه: با معماری Serverless، دیگر نیازی به استخدام تیم بزرگی از مهندسین DevOps جهت راهاندازی و نگهداری زیرساخت ندارید. همچنین، هزینه آن بر اساس میزان مصرف منابع محاسبه می شود. به عبارت دیگر، در زمان ترافیک کم، عملا هزینهای پرداخت نمی کنید.
- سرعت بالای توسعه: سرعت توسعه به شدت افزایش مییابد زیرا یکپارچه سازی برنامه و راهاندازی آنها در محیط عملیاتی بسیار آسانتر است.
- uptime بالا: از آنجایی که مدیریت تمامی سرویسها در ابر انجام میشود، زیرساخت میتواند تحت بار غیر منتظره به خوبی عمل کند. برنامههای کاربردی serverless به طور خودکار با تعداد درخواستها هماهنگ میشوند و بدون نیاز به دخالت دستی، عملکرد بهینه را تضمین میکنند. در نتیجه با معماری serverless، دسترسپذیری و uptime اپلیکیشن شما به میزان قابل توجهی افزایش مییابد.
معماری بدون سرور برای چه کاربردهایی مناسب است؟
تصویر(3)
معماری serverless برای طیف وسیعی از سناریوها در توسعه وبسایت و وباپلیکیشنها مناسب است. در واقع، موارد کمی وجود دارند که در آنها امکان استفاده از این معماری وجود نداشته باشد. البته این موضوع تا حد زیادی به در دسترس بودن و بلوغ سرویسهای ابری مدیریتشده بستگی دارد. حتی بسیاری از سازمانها از یک رویکرد ترکیبی استفاده میکنند، به این صورت که تا جای ممکن از معماری Serverless بهره میبرند و بخشهای باقیمانده را با فناوریهای دیگر تکمیل میکنند.
چالشهای امنیتی در معماری بدون سرور
اگرچه معماری بدون سرور مزایای زیادی به همراه دارد اما چالشهای امنیتی منحصربهفردی را نیز ایجاد میکند که برای محافظت از برنامههای کاربردی و دادههایتان نیاز است به آنها رسیدگی شود. برخی از این چالش ها عبارتند از:
- افزایش سطح حمله: استفاده از میکروسرویسها، API ها و ادغام با سرویسهای جانبی در معماری serverless میتواند سطح حمله را گسترش دهد و نقاط ورود بیشتری را برای مهاجمان احتمالی فراهم کند.
- تنظیمات اشتباه: پیکربندی نادرست محیطهای serverless میتواند بهطور ناخواسته دادهها و منابع حساس را در معرض دید کاربران غیرمجاز قرار دهد.
- آسیبپذیریهای کد: برنامههای کاربردی serverless نیز همانند تمامی نرم افزار ها میتوانند دارای آسیبپذیریهایی باشند که ممکن است هکرها از آنها سوءاستفاده کنند.
ارائه دهندگان خدمات رایانش بدون سرور:
- Amazon Web Services (AWS) Lambda: یکی از محبوبترین پلتفرمهای رایانش بدون سرور
- Microsoft Azure Functions: پلتفرم رایانش serverless مایکروسافت
- Google Cloud Functions: پلتفرم رایانش serverless گوگل
معماری serverless در مقابل میکروسرویسها
این دو مفهوم، با هم در تضاد نیستند. میکروسرویسها به نحوه سازماندهی اپلیکیشن شما در مقیاس بزرگ اشاره دارد، در حالی که serverless، به ساختار داخلی آن اشاره می کند. یک برنامه serverless میتواند از اصول میکروسرویسها پیروی نموده (غالبا رویکرد توصیهشده همین است) یا اینکه از آنها استفاده نکند.
نتیجه گیری
معماری serverless، رویکردی نوین در توسعه نرمافزار است که با حذف نیاز به مدیریت زیرساخت، مزایای متعددی را به ارمغان میآورد. این مزایا شامل کاهش هزینهها، افزایش سرعت توسعه، قابلیت مقیاسپذیری بالا و افزایش پایداری است. معماری بدون سرور برای طیف وسیعی از سناریوها مناسب است و میتواند به شما کمک کند تا برنامههای مدرن، مقیاسپذیر و قابل اعتماد بسازید. با توجه به مزایای متعدد و رشد روزافزون این فناوری، معماری بدون سرور در سالهای آینده جایگاه ویژهای در دنیای توسعه نرمافزار پیدا خواهد کرد.