«روی اپلیکیشن تمرکز کن نه روی زیرساخت» این شعاری است که معماری Serverless با آن از طرف سرویسدهندگان مختلف از جمله AWS تبلیغ میشود. به نظر جمله بسیار تسکیندهنده و آرامشبخشی میرسد چرا که شما دیگر نیازی به پیادهسازی، مراقبت و مانیتورینگ و دیباگینگ سرورها نخواهید داشت و بجای آن تمام تمرکزتان را روی کارکرد اپلیکیشن میگذارید. با وجود آنکه به نظر حالتی بسیار انتزاعی میآید اما در حال حاضر Serverless توسط شرکتهای بزرگی مانند نتفلیکس، AOL، Telenor و Reuters نیز استفاده میشود.
به همین دلیل و از آنجایی که این تکنولوژی در حال گسترش پیدا کردن است در این مطلب از وبسایت راکت تصمیم گرفتیم تا شما را با این معماری و مزایا و معایب آن به خوبی آشنا کنیم.
Serverless چیست؟
Serverless یک مدل اجرایی از محاسبات ابری است که در آن سرویسدهنده ابری به صورت پویا سرویسهای تخصیص داده شده به یک پروژه را مدیریت میکند. در چنین حالتی تمام هزینهها براساس میزان مصرفی خواهد بود که شما از سیستم میکنید. بنابراین دیگر خبری از مدلهای پرداختی قدیمی که در آن شما قبل از استفاده از سیستم هزینهای پرداخت میکردید نیست. به نظر میرسد که خیلی ایدهآل است!
بسیاری از سرویسدهندگان ابری در دنیا روی این تکنولوژی سرمایهگذاری کردهاند. به نظر نیز میرسد که استفاده از این ساختار روز به روز در حال افزایش بوده و همین موضوع بالا رفتن تعداد سرویسدهندگان را نیز توجیه میکند. در تصویر زیر میتوانید برخی از سرویسدهندگان محبوب زیرساخت Serverless را مشاهده نمایید:
معماری سنتی در مقابل Serverless
در گذشته برای اجرا کردن اپلیکیشنها روی یک سرور نیاز بود که با مشکلات سرور در تعامل باشید. سرورها نیاز به بروزرسانی، مانیتورینگ، خطایابی و… دارند به همین دلیل توسعهدهندگان مجبور بودند که هزینه زمانی/پولی بیشتری را صرف مدیریت آن نمایند. اما معماری Serverless بیشتر مانند یک زیرساخت خودکار است، شما دیگر نیازی به مدیریت سرور و مشکلات مربوط به آن را ندارید چرا که شما قرار نیست به صورت مستقیم آن را مدیریت کنید.
هزینه
یکی از مزیتهای بزرگ Serverless در مقایسه با روش سنتی کم بودن هزینه است. اولین موضوع مربوط به استخدام یک فرد برای مدیریت سرور میشود. در روش سنتی شما به فردی نیاز داشتید که بتواند از سرور نگهداری بکند، پچها را نصب نماید، بروزرسانی کند و… این مورد خود بخشی از هزینهها را میساخت. از طرفی دیگر شما گاهی اوقات مجبور بودید امکاناتی را خریداری کنید که معلوم نبود آیا از آنها استفاده خواهید کرد یا خیر. اما معماری Serverless به یک فرد متخصص سرور نیاز نداشته و از طرفی دیگر شما در این معماری تنها بابت میزان استفادهتان از سرویسهای موجود پول میدهید.
شبکه
یکی از معایب Serverless دسترسی سخت به آن نسبت به حالت سنتی است. معمولا برای استفاده از Serverless شما نیاز دارید تا از یک API خصوصی همراه با یک Getway استفاده کنید. این بدان معناست که شما در حالت عادی نمیتوانید از طریق IP معمولی به آنها به صورت مستقیم دسترسی داشته باشید
مدیریت کتابخانهها
یکی از موضوعات مهمی که در زمان ایجاد یک پروژه با آن تعامل برقرار خواهید کرد کتابخانهها هستند. زمانی که پروژه را نیز روی یک سرور قرار دهید باید توجه ویژهای را به این موارد داشته باشید. اگر اپلیکیشن شما کتابخانههای کمی داشته باشد میتواند به خوبی روی یک معماری Serverless مدیریت شود. اما برای آنکه یک پروژه بزرگ را به خوبی مدیریت کنید نیاز است تا از معماریهای قدیمیتر بهره بگیرید. البته این بدان معنا نیست که Serverless نمیتواند چنین حالتی را مدیریت کند، اما انجام چنین کاری در حالت Serverless کمی سخت است.
محیط
ایجاد محیطهای مختلف برای اجرای یک اپلیکیشن در حالت Serverless بسیار ساده است. در این حالت نیز شما به اندازه محیطهایی که ایجاد میکنید هزینه خواهید کرد و منابع به صورت خودکار به شما تخصیص داده خواهد شد. اما در حالت سنتی مدیریت چنین موردی کار نسبتاً سخت و زمانبری خواهد بود. به همین دلیل Serverless در این حالت میتواند خروجی بهتری را ارائه کند.
مقیاسپذیری
روند مقیاسپذیری در معماری Serverless به صورت خودکار صورت گرفته و از این بابت مشکلی نخواهد بود. اما یک مشکل که وجود دارد این است که شما کنترل کامل روی این روال ندارید. از طرفی دیگر معماری سنتی به صورت دستی مقیاس جدید را کنترل میکرد که این موضوع خود نیاز به کارهای تکنیکی بود اما از طرفی دیگر مشکل نداشتن کنترل کامل را حل میکرد.
پیادهسازی FaaS
FaaS یک پیادهسازی از معماری Serverless است که در آن برنامهنویسان میتوانند یک تابع یا ویژگی خاص از اپلیکیشنشان را دیپلوی کنند. FaaS مانند توابعی عمل میکند که مستقل هستند. منظور از مستقل آن است که ورودی منحصر به فرد خود را دارند و خروجی تولید میکنند که تقریباً وابسته به تابع دیگری نیست. مدیریت چنین اپلیکیشنهایی به تلاش زیادی نیاز نداشته و کار با آنها چندان سخت نیست.
اپلیکیشن Serverless
یک اپلیکیشن معمولی Serverless شامل یک وب سرور، اپلیکیشن کلاینت، توابع Lambda، سرویسهای توکن امنیت، احرازهویت و یک دیتابیس میشود.
مزایای استفاده از معماری Serverless
۱- هزینهای که شما بابت زیرساخت میدهید تنها به ازای مقداری خواهد بود که استفاده میکنید.
۲- روند دیپلوی سریع به شما این اجازه را میدهد تا در یک معماری Serverless در کوتاهترین زمان ممکن یک اپلیکیشن را روی سرور اجرا نمایید.
۳- نیازی به هزینه برای استخدام یک فرد در جهت نگهداری از زیرساختها نیست. جدای از هزینه این موضوع باعث میشود که مسئولیت شما در قبال اجرای برنامه کم شود.
۴- مقیاسپذیری به شما این امکان را میدهد تا بدون نگرانی از منابع سرور استفاده کنید.
معایب استفاده از معماری Serverless
1- نبود کنترل کامل روی سرور
۲- پیچیدگی ساختاری
۳- تست در حالت محلی (Local) میتواند سخت باشد
۴- نامعلوم بودن هزینهها در برخی اوقات
۵- نبود ابزارهای مدیریتی کامل
فریمورک Serverless
فریمورک Serverless یکی از فریمورکهای معروف برای دیپلوی کردن پروژه روی زیرساختهای Serverless است که برای زبانهای برنامهنویسی مختلف استفاده میشود. با استفاده از این فریمورک میتوانید در سریعترین زمان ممکن پروژهتان را روی سرویسهای Serverless که توسط سرویسدهندگان مختلف ایجاد شده است پیادهسازی نمایید.
در پایان
معماری Serverless چیزیست که رویکرد بسیاری از شرکتها و استارتاپها در امر دیپلوی را تغییر داده است. درست است که محدودیتهایی را با خود به همراه دارد اما با وجود آنها چنین فناوری باز هم میتواند کارایی بسیار مناسبی را برای استفادههای خاص به میان بیاورد.
در این مطلب از وبسایت راکت با یک مقدمه نسبتاً کامل از چیستی معماری Serverless با شما بودیم. در آینده نیز قصد داریم در ارتباط با این موضوع مقالات بیشتری را ارائه کنیم.
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید