معماری فارغ از سرور چیست؟
معماری فارغ از سرور یک مدل کاملا محاسباتی متمرکز است که توسعهدهندگان تنها روی کدنویسی برنامهها و سرویسهای وبمحور متمرکز میشوند و درگیر جزئیات مرتبط با زیرساخت مانند بارگذاری، مقیاسپذیری، توزیع و مدیریت منابع سرور نمیشوند، زیرا تمامی این فرآیندها بر عهده ارائه سرویسدهنده خواهد بود. در معماری مذکور، برنامهها بهصورت توابع (Functions) پیادهسازی میشوند. هر تابع یک قطعه کد است که وظیفه مشخصی را انجام میدهد. این توابع زمانی که کاربران نیاز دارند، بهشکل خودکار در دسترس آنها قرار گرفته و وضعیت فعال پیدا میکنند؛ به این صورت که در حافظه اصلی سرور قرار میگیرند. بهطور معمول، این توابع در یک محیط اجرایی مجازی مانند یک کانتینر مستقر میشوند و پس از اتمام وظیفه به حالت غیرفعال بازمیگردند.
تاریخچه معماری فارغ از سرور
مفهوم فارغ از سرور نسبتا جدید است و در چند سال اخیر مورد توجه توسعهدهندگان و صنعت فناوری اطلاعات قرار گرفته است. برای درک بهتر این مفهوم اجازه دهید تاریخچه مختصری از این فناوری را بررسی کنیم.
- مفهوم Utility Computing: در دهه 60 میلادی، ایده ارائه منابع محاسباتی بهصورت سرویسی شبیه به خدمات آب، برق و گاز مورد بحث قرار گرفت. این مفهوم، رایانش همگانی (Utility Computing) نام گرفت و به معنای ارائه منابع محاسباتی بر مبنای الگویی مشابه برق و گاز است. به این معنا که سرویسها همیشه در دسترس قرار دارند، اما تنها زمانی که از آنها استفاده کنید، هزینه مربوطه را پرداخت خواهید کرد.
- تکنولوژی مجازیسازی: با ظهور تکنولوژی مجازیسازی در دهه 60 و 70 میلادی، قابلیت استفاده بهینه از منابع سختافزاری در محیطهای ابری بهوجود آمد. این تکنولوژی اجازه داد تا ماشینهای مجازی تعریف شوند و به توسعهدهندگان کمک کرد تا برنامههای خود را بر روی آنها اجرا کنند.
- متنباز و دوآپس (DevOps): با ظهور پررنگ نرمافزارهای متنباز و روشهای چابک (Agile) و دوآپس در دهه 90 و 2000 میلادی، توسعهدهندگان بهشکل سریع و کارآمدتری برنامههای خود را توسعه داده و مستقر کردند. بهطوریکه توانستند در زمان کوتاهتری به نیازهای نرمافزارهای کاربردی کسبوکارها پاسخ دهند.
- Baas سرنام Backend as a Service: در دهه 2000 میلادی، برای اولین بار مفهوم بکاند بهعنوان سرویس به دنیای فناوری اطلاعات وارد شد. BaaS به توسعهدهندگان اجازه میدهد تا بخشهای زیرساختی مانند پایگاه داده، ذخیرهسازی و احراز هویت را بهصورت آماده مورد استفاده قرار دهند و درگیر پیادهسازی آنها نشوند. این حذف نیاز به توسعه و مدیریت بخشهای کلیدی، باعث شد تا تمرکز بر روی توسعه برنامه اصلی قرار بگیرد.
- FaaS سرنام Function as a Service: در سال 2014 مفهوم دیگری تحت عنوان تابع بهعنوان سرویس و در پی آن فارغ از سرور پدید آمدند. با رشد سرویسهای ابرمحوری مثل وبسرویسهای آمازون مبتنی بر لامبدا (Lambda)، امکان توسعه و اجرای توابع کوچک بدون نیاز به مدیریت سرورها و زیرساختهای مربوطه بهوجود آمد. مدلهای مذکور به توسعهدهندگان اجازه دادند تا تمرکز خود را بر روی کد و منطق برنامه بگذارند، اما دغدغهای در مورد جزئیات زیرساختی مثل ظرفیت سرور، مقیاسپذیری و مدیریت منابع نداشته باشند.
- رشد صنعت Serverless: در سالهای بعدی، سرویسهای فارغ از سرور در ابرهایی مثل AWS Lambda، Microsoft Azure Functions و Google Cloud Functions گسترش یافتند و تعدادی از شرکتهای نوآور کوچک و بزرگ شروع به استفاده از این فناوری کردند. الگوواره فارغ از سرور به توسعهدهندگان اجازه میدهد تا برنامههایی را طراحی و پیادهسازی کنند که بهصورت خودکار به رخدادها واکنش نشان میدهند و قابلیت مقیاسپذیری را دارند.
بهطور خلاصه، فارغ از سرور یک الگوی معماری است که توسعهدهندگان را از رسیدگی به جزئیات زیرساختی مربوط به سرورها و مدیریت آنها بینیاز میکند. این الگوی معماری با استفاده از تکنولوژیهایی مانند توابع کوچک و ایجاد رویدادها، توسعه برنامهها را سادهتر و کارآمدتر میکند.
معماری فارغ از سرور چه مزایایی دارد؟
برخی از مزایای کلیدی فناوری فوق بهشرح زیر هستند:
- مقیاسپذیری خودکار: سرویسدهنده فارغ از سرور بهصورت خودکار مقیاسپذیری برنامهها را مدیریت میکند. با افزایش ترافیک و درخواستها، تعداد نمونههای تابع افزایش مییابد تا بتوانند به درخواستها مبنی بر افزایش بار رسیدگی کنند. در اینجا، محدودیتی برای فراخوانی توابع وجود ندارد که یکی از مزایای کلیدی معماری مذکور است.
- هزینه کمتر: در معماری فارغ از سرور تنها هزینهای که باید پرداخت شود، هزینه استفاده و اجرای توابع است. هیچ هزینهای برای نگهداری و مدیریت سرورها در زمانهای غیرفعال وجود ندارد.
- انعطافپذیری: توسعهدهندگان میتوانند توابع را بهصورت مستقل توسعه داده و مدیریت کنند. همچنین، میتوانند از خدمات و سرویسهای ابری موجود در پلتفرمهای فارغ از سرور استفاده کنند تا قابلیتهای اضافی مانند ذخیرهسازی دادهها، پیامرسانی و تحلیلهای پیشگویانه را به برنامههای خود اضافه کنند.
چه نوع برنامههایی را میتوان با استفاده از معماری فارغ از سرور توسعه داد؟
معماری فارغ از سرور قابلیت توسعه برنامههای مختلف را فراهم میکند. با استفاده از این معماری، میتوانید برنامههایی را توسعه دهید که نیازمندیهای محاسباتی کوچک و محدودی دارند و بهصورت پراکنده و متناوب فعالیت میکنند. برخی از برنامههایی که میتوان با استفاده از معماری فارغ از سرور توسعه داد بهشرح زیر است:
- برنامههای وب: میتوانید برنامههای وب کوچک را با استفاده از توابع فارغ از سرور پیادهسازی کنید. این فرآیند شامل ساخت برنامههای وب ساده، رابطهای برنامهنویسی (APIs)، بکاندهای سمت سرور و سرویسهای وب محدود است.
- پردازش دادهها: میتوانید برنامههایی را برای پردازش دادههای محلی یا دادههای ذخیرهشده در سرویسهای ابری توسعه دهید. از جمله این برنامهها باید به تحلیل دادهها، پردازش تصویر، پردازش صوتی و هوش مصنوعی محدود اشاره کرد.
- رویدادها و جریانها: معماری فوق برای پاسخ به رویدادها و جریانهای زمانی مانند تغییرات در پایگاه داده، وقوع رویدادهای خارجی مانند ارسال ایمیل یا پیامهای شبکههای اجتماعی و غیره بسیار مناسب هستند. بهطوری که اجازه میدهد توسعهدهندگان، برنامهنویسی شبکههای اجتماعی را بهگونهای انجام دهند که هر زمان یک کاربر برای دیگری پیامی را ارسال کرد، بهصورت لحظهای آنرا مشاهده کند.
- پشتیبانی: میتوانید برنامههایی را برای انجام کارهای پشتیبانی مانند ارسال اعلانها، زمانبندی وظایف و مدیریت چرخه کاری توسعه دهید.
- برنامههای موبایل: با استفاده از معماری فوق میتوانید بخشهایی از برنامههای موبایل را پیادهسازی کنید که بهصورت آنی به سرویسهای ابری متصل شوند.
Server ،Fully Managed و Serverless چه تفاوتهایی دارند؟
Server ،Fully Managed و Serverless سه مفهوم مختلف در زمینه مدیریت و اجرای برنامهها و سرویسهای آنلاین هستند. هر یک از این مفاهیم تفاوتهای اصلی دارند که در ادامه به برخی از آنها اشاره میکنیم:
سرور (Server)
سرور یک دستگاه فیزیکی یا مجازی است که میزبانی برنامهها و سرویسهای شما را بر عهده دارد. در این حالت، شما مسئولیت مدیریت سرور را بر عهده دارید که شامل نصب و راهاندازی سیستمعامل، پیکربندی نرمافزارهای مورد نیاز، امنیت و بهروزرسانیها میشود. این روش برای برنامهها و سرویسهایی که نیازمند کنترل کامل بر محیط اجرایی خود هستند و ممکن است نیاز به پیکربندیهای سفارشی داشته باشند، مناسب است.
کاملا مدیریتشده (Fully Managed)
در این حالت، سرویسدهنده مسئولیت مدیریت کامل زیرساخت سرور را بر عهده دارد. شما فقط نیاز دارید برنامه یا سرویس خود را مستقر کنید و روی بهبود عملکرد آن متمرکز شوید. بهطور معمول، سرویسدهنده وظایفی مانند پیکربندی، بهروزرسانیها، پشتیبانی و مانیتورینگ را بر عهده میگیرد. این روش برای توسعهدهندگانی که تمایل دارند تمرکز بیشتری بر برنامهنویسی و توسعه داشتنه باشند و علاقهای به مدیریت زیرساختها ندارند، مناسب است.
فارغ از سرور (Serverless)
در این مدل، توسعهدهنده، برنامهها و سرویسها را بهصورت قطعههای کوچک برنامهنویسی میکند و اجرای آنها بهصورت خودکار و پیشفرض توسط سرویسدهنده مدیریت میشود. همانگونه که اشاره کردیم، مزیت روش فوق این است که تنها بر اساس مصرف منابع محاسباتی و زمان اجرا هزینه مربوطه را پرداخت میکنید. فارغ از سرور برای برنامهها و سرویسهایی که دارای بار متغیر هستند و بر مبنای اصل مقیاسپذیری طراحی میشوند، مناسب است. بهطور خلاصه، تفاوتهای اصلی این مفاهیم بهشرح زیر است:
- Server: شما مسئولیت مدیریت و پیکربندی سرور را بر عهده دارید.
- Fully Managed: سرویسدهنده مسئولیت مدیریت زیرساخت سرور را بر عهده دارد و شما بر برنامهنویسی و توسعه تمرکز میکنید.
- Serverless: شما نیازی به مدیریت مستقل سرورها ندارید و برنامهها بهصورت قطعههای کوچک اجرا میشوند که توسط سرویسدهنده مدیریت میشوند.
استفاده از هر روش به نیازهای کاری و ماهیت برنامه یا سرویس موردنظر بستگی دارد.
مولفههای کلیدی معماری فارغ از سرور چیستند؟
معماری فارغ از سرور یک مدل معماری برنامهپذیر است که در آن توسعهدهندگان برنامهها و سرویسها را بهجای ساخت یک برنامه کامل و یکپارچه در قالب بخشهای کوچکی برنامهنویسی میکنند تا اجرای آنها سریعتر شده، قابلیت اجرای خودکار را پیدا کنند و بهشکل پیشفرض توسط سرویسدهنده مدیریت شوند. همانگونه که در ابتدای مطلب اشاره کردیم، در معماری فارغ از سرور توسعهدهندگان نیازی به مدیریت تجهیزات زیرساختی مانند سرورها، شبکهها و ذخیرهسازها ندارند و تنها کاری که باید انجام دهند این است که تمرکز خود را بر منطق تجاری برنامه قرار دهند.
در معماری فارغ از سرور، برنامهها بهصورت رویدادمحور عمل میکنند. به این معنی که برنامهها و سرویسها در واکنش به وقوع رویدادها (مانند درخواستهای HTTP، تغییرات در پایگاه داده، ورودیهای کاربر و غیره) فعال میشوند و توابع مرتبط با هر رویداد برای پردازش آن فراخوانی میشوند. بهطور کلی، معماری فارغ از سرور شامل مولفههای زیر است:
- توابع (Functions): برنامهها در معماری فارغ از سرور بهصورت توابع کوچکی پیادهسازی میشوند. هر تابع بر اساس درخواستی که از کاربر دریافت کرده اجرا میشود، وظیفه خاصی را انجام میدهد، واکنش خاصی به یک رویداد نشان میدهد و پایان میپذیرد. در این حالت، نتیجه ممکن است بهشکل ملموس به کاربر نشان داده شود یا کاری در پسزمینه انجام شود. بهطور معمول، این توابع به زبانهای برنامهنویسی رایج مثل جاوااسکریپت، پایتون، جاوا و غیره پیادهسازی میشوند.
- رویدادها (Events): رویدادها عملیات یا رخدادهایی هستند که اجرای توابع را پدید میآورند. این عملیات ممکن است شامل درخواستهای HTTP، ویرایش یا بهروزرسانی پایگاه داده، بارگیری یا بارگذاری فایل و غیره باشند. هر تابع میتواند به یک یا چند رویداد واکنش داده و اجرا شود. وقتی که یک رویداد رخ میدهد، تابع مربوطه بهصورت خودکار فعال و اجرا میشود.
- سرویسها و واسطهای برنامهنویسی کاربردی: در معماری فارغ از سرور، شما میتوانید سرویسهای آمادهای را که توسط سرویسدهنده آماده میشوند استفاده کنید. در بیشتر موارد، این سرویسها برای فضای ذخیرهسازی تحت شبکه، پیادهسازی پایگاه داده، ارسال پیام و غیره هستند. همچنین، میتوانید واسطهای برنامهنویسی کاربردی خود را برای دسترسی به توابع و سرویسها ایجاد کنید تا سایر برنامهها و سرویسها بتوانند از آنها استفاده کنند.
- مقیاسپذیری خودکار: سرویسدهنده فارغ از سرور، مسئول مقیاسپذیری خودکار توابع است. این حرف به معنای آن است که تعداد نمونههای تابع میتواند بر اساس بار کاری تغییر کند. در زمانهای پیک بار، تعداد نمونهها افزایش مییابد تا بتواند تقاضای افزایشیافته را پردازش کند. در زمانهای کاهش بار، تعداد نمونهها کم میشوند تا منابع محاسباتی آزاد شوند.
- پرداخت مبتنی بر مصرف: در معماری فارغ از سرور، شما فقط برای زمانی که توابع در حال اجرا هستند، پرداخت میکنید. هزینهها بر اساس مصرف منابع محاسباتی و زمان اجرای توابع محاسبه میشوند.
- پلتفرم اجرایی (Execution Platform): محیطی است که توابع در آن اجرا میشوند و عملیات مقیاسبندی، مدیریت منابع، مانیتورینگ و مدیریت خطاها در آن انجام میشود. برخی از معروفترین پلتفرمهای اجرایی AWS Lambda، Microsoft Azure Functions و Google Cloud Functions
هستند.
- سرویسهای پشتیبانی (Supporting Services): در معماری مذکور، سرویسهای پشتیبانی مانند احراز هویت، صفها و سایر سرویسها بهصورت مجزا و مدیریتشده در اختیار توسعهدهندگان قرار میگیرند. این سرویسها برای استفاده آسان و سریع از قابلیتهای کمکی مورد استفاده قرار میگیرند تا به این شکل تیمهای توسعه درگیر مسائل مدیریت پلتفرم نشوند.
چگونه از الگوواره فارغ از سرور استفاده کنیم؟
برای ساخت یک برنامه فارغ از سرور ابتدا باید محیط اجرایی ابرمحور را انتخاب و پیکربندی کنید. بهطور کلی، روند ساخت یک برنامه فارغ از سرور با استفاده از سرویس AWS Lambda بهشرح زیر است:
- ثبتنام و ایجاد حساب کاربری AWS: بهعنوان اولین قدم، باید در سرویس AWS ثبتنام کنید و یک حساب کاربری بسازید.
- ایجاد تابع: پس از ورود به داشبورد AWS باید به سرویس AWS Lambda بروید و یک تابع جدید ایجاد کنید. در این مرحله، شما میتوانید زبان برنامهنویسی مورد نظر خود را انتخاب کنید، مانند Node.js، Python، Java و کدهای مربوط به تابع خود را تعریف کنید.
- پیکربندی رویدادها: در محیط AWS Lambda، شما میتوانید رویدادهایی مانند فراخوانی HTTP، ایجاد یا بهروزرسانی یک شیء در سرویس ذخیرهسازی و غیره را انجام دهید. این رویدادها وظیفه اجرای تابع را بر عهده دارند.
- تست و تحویل: پس از تعریف تابع و تنظیم رویدادها، شما میتوانید تابع خود را آزمایش کرده و اطمینان حاصل کنید که بدون مشکل کار میکند. سپس، میتوانید تابع را بهعنوان یک سرویس فعال در دسترس قرار دهید.
- مقیاسپذیری و مدیریت: یکی از مزیتهای فارغ از سرور، مقیاسپذیری خودکار با هدف پاسخگویی به بارهای ترافیکی است. سرویس AWS Lambda بهطور خودکار تعداد نمونههای تابع را افزایش میدهد تا بتواند هنگامی که درخواستها زیاد شدند بدون وقفه به آنها رسیدگی کند.
نکته مهمی که باید به آن اشاره داشته باشیم این است که توضیحات فوق به ساخت یک نمونه ساده از یک برنامه فارغ از سرور با استفاده از سرویس AWS Lambda اشاره دارد. برای ساخت برنامههای پیچیدهتر، ممکن است نیاز به تنظیمات و پیکربندیهای بیشتری داشته باشید. همچنین، روند فوق برای سرویسهای ابری دیگر با کمی تغییرات، یکسان است.
کلام آخر
معماری فارغ از سرور نقش مهمی در دنیای محاسبات و بهویژه رایانش ابری دارد و به توسعهدهندگان اجازه میدهد بدون نگرانی در مورد زیرساخت سرور، برنامهها و توابع خود را اجرا کنند. در نتیجه، توسعهدهندگان میتوانند بهترین استفاده را از منابع موجود داشته باشند، زمان توسعه را کاهش دهند و بهشکل دقیقتر به درخواستهای کاربران پاسخ دهند.
ماهنامه شبکه را از کجا تهیه کنیم؟
ماهنامه شبکه را میتوانید از کتابخانههای عمومی سراسر کشور و نیز از دکههای روزنامهفروشی تهیه نمائید.
ثبت اشتراک نسخه کاغذی ماهنامه شبکه
ثبت اشتراک نسخه آنلاین
کتاب الکترونیک +Network راهنمای شبکهها
- برای دانلود تنها کتاب کامل ترجمه فارسی +Network اینجا کلیک کنید.
کتاب الکترونیک دوره مقدماتی آموزش پایتون
- اگر قصد یادگیری برنامهنویسی را دارید ولی هیچ پیشزمینهای ندارید اینجا کلیک کنید.
نظر شما چیست؟