Serverless یک زیر ساخت مدرن



Serverless یکی از جدیدترین دستاورد های رو به رشد در محاسبات ابری است که شما را از داشتن سرور و دغدغه های آن راحت می‌کند.

پس از تولید نرم افزار و آپلود آن روی سرور، نگهداری و مدیریت سرور همواره یکی از چالش های توسعه دهندگان بوده است.

که اغلب با مشکلاتی که به چند مورد آنها در زیر اشاره شده، دست و پنجه نرم می‌کنند.

  • پرداخت هزینه زیاد برای تامین و نگهداری سرور
  • مشکلات بروزرسانی و توسعه سرور
  • نگرانی برای تامین امنیت سرور

برای یک سازمان کوچک و یا یک توسعه دهنده ای (developer) که به صورت فردی فعالیت می کند، این هزینه ها می‌تواند بسیار بالا و مشکل ساز باشند.
سازمان های بزرگتر نیز برای رفع این مشکل نیاز به مستقر کردن یک تیم حرفه ای دارند، گرچه فرآیندهای لازم برای پشتیبانی می تواند به کندتر شدن زمان توسعه منجر شود.

Serverless یک معماری برای حل برخی از این مشکلات می‌باشد که ما امروز قصد بررسی جزییات آن را داریم.

Serverless Computing

یک زیرساخت محاسبات ابریست که میزان منابع برای اجرای یک برنامه را به صورت داینامیک به آن اختصاص می‌دهد.
Serverless Computing یک تکه کد را می‌گیرد و با تخصیص منابع (as-used) مورد نیاز، آن را اجرا می‌کند.
هزینه در این روش متناسب با منابعی که اختصاص داده شده محاسبه می‌گردد ، این مدل سرویس دهی (FaaS (Functions as a Service نامیده می‌شود.
در FaaS کد به شکل یک تابع ارسال می‌شود و در یک stateless containers اجرا می‌شود.

container این اطمینان را حاصل می‌کند که اپلیکیشن فارغ از اینکه روی چه پلتفرمی است، کاملاً به درستی اجرا گردد به طوری که روی سیستم develop تا محیط تست،‌ سرور مجازی یا حتی کلود عملکرد یکسانی خواهد داشت.

stateless containers به کانتینرهایی گفته می‌شوند که جایی برای ذخیره اطلاعات ندارند و اگر هم داشته باشند، موقت و بعد از restart از بین می‌روند.

این امر به توسعه دهندگان این امکان را می‌دهد تا به اندازه ای که از منابع استفاده می‌کنند (pay-as-you-go) ، هزینه پرداخت کنند و بدون نگرانی از بابت زیر ساخت ، کد خود را اجرا کنند.

توابع می‌توانند به شکل زیر باشند:

  • Scheduler Job (دستوری که به صورت دوره ای اجرا می‌شود).
  • درخواست HTTP Request از طرف یک مرورگر.
  • اجرای یک Query روی دیتابیس.



سرویسدهندگانیکهمعماریServerlessرادراختیارشماقرارمی‌دهند:

مزایای استفاده از ServerLess

  • مقرون به صرفه بودن
    توسعه دهندگان هزینه‌ی اضافی بابت Idle CPU و حافظه‌ای که از آن استفاده‌ای ندارند را پرداخت نمی‌کنند.
  • توسعه ماژول های مستقل
    تقسیم‌بندی کد به توابع مختلف، امکان پیاده سازی سیستم به صورت ماژولار را فراهم می‌سازد.
  • حذف فرآیندهای پیچیده استقرار
    توسعه دهندگان به جای درگیر شدن برای رفع باگ یک سیستم یکپارچه و پیچیده ، صرفا یک ماژول واحد را توسعه یا Debug می‌کنند.

مشکلات ServerLess

  • سخت بودن مهاجرت از سرویس سنتی به یک سرویس مدرن تر.
  • نگرانی سازمان‌ها از تامین امنیت سرویس.
  • تفاوت کیفیت در ارایه سرویس بین سرویس دهندگان مختلف، امکان انتقال زیرساخت به سرویس دهنده‌ی دیگر را دشوار می‌کند.

نتیجه گیری و سخن آخر

ما درباره مزایا و معایب ServerLess ها تا حد ممکن صحبت کردیم، اما در نهایت این کسب و کار شماست که متناسب با نیاز نرم افزار، زیرساخت مورد نیاز را انتخاب می‌کند.


http://dref.ir