با توجه به اینکه Developerها معمولا نگران مسائل زیرساختی میباشند، پیدایش تکنولوژی Serverless Computing از این دغدغه ها تا حدودی کاسته است.
دراقع برخلاف معنای تحت الفظی تکنولوژی “Serverless Computing” که “رایانش بدونسرور” میباشد، در این نوع رایانش همیشه چندین سرور وجود دارد! و این نام به این دلیل به این تکنولوژی نسبت داده شده است که Developerها نیاز نیست شرایط زیرساخت و سرورها را درنظر بگیرند.
در واقع Serverless Computing صرفا لایه دیگری از Abstraction را به زیرساخت Cloud اضافه نموده و بدین ترتیب، نگرانی Developerها در مورد سرورها از جمله سرورهای مجازی در Cloud را برطرف ساخته است.
Chad Arimura، یکی از طرفداران Serverless Computing و مدیرعامل شرکت تازه تاسیس Iron.io است که نرم افزاری را برای مدیریت Workload میکروسرویسها تولید مینماید. وی عنوان کرد که Serverless Computing به طور کلی به چارچوب در حال تحول مراجع Developerهای امروزی میپردازد.
Arimura افزود: “شاهد آن بودیم که واحد مقیاس، از ماشین مجازی به Container تغییر یافته است و اگر یک قدم پیشتر برویم، شاهد مقولهای به نام Function یا تابع خواهیم بود که یک مجموعه کد تکمنظوره را تشکیل میدهد.
وی در ادامه عنوان کرد که طبق نظر او، این فرآیند شباهت زیادی به معماری میکروسرویسها دارد که در آن میتوان بهجای ایجاد برنامهای یکپارچه، یک برنامه را از سرویسهای تکمنظوره تهیه نمود. در این صورت، هیچ تفاوتی بین میکروسرویس و تابع وجود نخواهد داشت.
هر یک از سرویسها دارای یک API مشترک با قابلیت دسترسی برای افراد هستند. اما مشخص نیست که در آن سو چه اتفاقی رخ میدهد. این احتمال وجود دارد که سرویس ها توسط توابع ارائه شوند. در نتیجه، توابع بخشی از کد ساختاری بلاک شده و سرویس همانند واسطی عمل میکند که Developerها میتوانند با آن تعامل نمایند.
Developerها در هنگام استفاده از میکروسرویسها جهت تهیه نمودن برنامه و همچنین تفکیک سرویس از تابع ، میتوانند توابع را با هدف ایجاد سرویس، از یک کتابخانه (Library) در نظر بگیرند، بدون اینکه در نظر گرفتن زیرساخت سرور در هنگام ایجاد برنامه ضرورت داشته باشد.
AWS Lambda، شناختهشدهترین نمونه از Serverless Computing به شمار میرود. طبق توضیحات ارائه شده در سایت Amazon، این سرویس پس از آپلود کد مورد نظر در Lambda، تمام ظرفیت، مقیاسبندی، Patching و مدیریت زیرساخت را برای اجرای کد مورد نظر به کار میگیرد. AWS Lambda و Iron.io، هر دو مجموعهای از توابع کتابخانهای را برای تسریع روند توسعه ارائه مینمایند. علاوه بر اینکه آمادهسازی و مقیاسبندی خودکار نیز بنا به تقاضا در نظر گرفته می شود.
توجه داشته باشید که تمام این موارد به طور کلی بالاتر از سطح تنظیم سرویس قرار دارد. Iron.io علیرغم ارائه یک لایه تنظیم کنندهی ویژه، که مربوط به قبل از زمان در دسترس گذاشتن راهکارها به صورت عمومی میباشد، به آنها اتصال مییابد اما در ادامه نقش Developer یا API را ایفا مینماید.
بنابراین Serverless Computing نشاندهندهی جهش دیگری در بهرهوری برنامهنویسی میباشد که در آن نگرانیهای زیرساخت مجازی از بین رفته و به کمک کتابخانهها و توابع ، میزان کدهای مورد نیاز جهت نوشتن برنامه برای Developerها را کاهش میدهد.
سازمانهای تولید برنامهی شرکتها در بهکارگیری چابکی، CICD ،DevOps و نظایر آن پیشرفت کمی داشتهاند. اما با تغییر و حرکت از پشته (Stack) به سطوح Serverless Computing ، مزایای شیوههای مدرن برنامه نویسی بیش از پیش آشکار شده و جذابیت مییابد.