بخشی از مقاله


معرفی کامپایلر ابری برپایه SaaS


چکیده

در این مقاله ما کامپایلر ابری را بعنوان نرم افزار به عنوان سرویس (SaaS) معرفی میکنیم، که به معنی تبدیل سورس کد نوشته شده در یک زبان برنامه نویسی به زبان ماشین در محیط رایانش ابری است. در این حالت حتی اگر ماشین سرویسگیرنده هیچ کامپایلر نصب شده ای نداشته باشد، میتواند یک برنامه را نوشته و در سیستم Cloud آپلود کند. سیستم Cloud میتواند کامپایلرهای مختلفی را برای زبان مبدا به عنوان یک سرویس فراهم کند، مانند C، C++، جاوا یا هر زبان دیگر. کامپایلر بهعنوان سرویس ابری، کار ایجاد چند دسته ابر مرتبط با چندین کامپایلر را انجام می-دهد که میتوانند توسط سرویس Cloud آماده شوند. هر دسته ابر سرور خاص خودش را دارد که سورس کد کامپایل شده را به سرور اصلی برمیگرداند. برنامه در معماری ابری پردازش شده و خروجی یا پیغامهای خطا به سرویس گیرنده بازگردانده میشود.

کلمات کلیدی: کامپایلر ابری، کامپایر آنلاین، Cloud Compiler


-1 مقدمه

رایانش ابری استفاده از سرویسهای IT را منعطف و مقرون بهصرفه ساخته است؛ سرویسهایی که در آنها هزینه به اندازهی استفاده پرداخت میشود. در این مقاله ما کامپایلر را بهعنوان یک سرویس ابری معرفی میکنیم که در مجموعهی SaaS قرار میگیرد. یک کامپایلر، سورس کد را از یک زبان سطح بالا به سطح ماشین تبدیل میکند. اینکار عموما برای ساخت فایل اجرایی که بتواند اجرا شود، انجام میشود.

پس از این بخش، در بخش 2 به مرور اجمالی رایانش ابری، مزایا و معایب آن خواهیم پرداخت. در بخش 3 کامپایلر ابری معرفی شده و معماری آن شرح داده میشود. نتیجهگیری نیز در بخش 4 آمده است.

-2 رایانش ابری

رایانش ابری استفاده از سرویسهای IT را منعطف و مقرون بهصرفه ساخته است؛ سرویسهایی که در آنها هزینه به اندازهی استفاده پرداخت میشود. موسسه ملی فناوری و استانداردها (NIST) رایانش ابری را اینگونه تعریف میکند:

»رایانش ابری مدلی است برای فراهم کردن دسترسی آسان بر اساس تقاضای کاربر از طریق شبکه به مجموعهای از منابع رایانشی قابل تغییر و پیکربندی (مثل شبکهها، سرورها، فضای ذخیرهسازی، برنامههای کاربردی و سرویسها) که این دسترسی بتواند با کمترین نیاز به مدیریت منابع و یا نیاز به دخالت مستقیم فراهمکننده سرویس به سرعت فراهم شده یا آزاد رها گردد.«

پیدایش مفاهیم اساسی رایانش ابری به دهه 1960 بازمی گردد. زمانی که جان مک کارتی1 اظهار داشت که رایانش ممکن است روزی به عنوان یکی از صنایع همگانی سازماندهی شود. این مدل بر پایهی شبکههای بزرگ کامپیوتری مانند اینترنت است که الگویی تازه برای عرضه، مصرف و تحویلها ی سرویسهای فناوری اطلاعات (شامل سختافزار، نرمافزار، اطلاعات و سایر منابع اشتراکی رایانشی) با بهکارگیری اینترنت ارائه میکند. این بدین معنی است که دسترسی به منابع فناوری اطلاعات در زمان تقاضا و بر اساس میزان تقاضای کاربر به گونهای انعطافپذیر و مقیاسپذیر از راه اینترنت به کاربر تحوبل داده میشود. واژهی ابر در این مدل، به اینترنت اشاره دارد و در نمودارهای شبکههای رایانهای نیز از شکل ابر برای نشان دادن شبکه اینترنت استفاده میشود. دلیل تشبیه اینترنت به ابر در این است که اینترنت همچون ابری جزئیات فنیاش را از دید کاربران پنهان میسازد و لایهای از انتزاع را بین این جزئیات فنی و کاربران بهوجود میآورد.

-1-2 اقتصاد رایانش ابری

عموما مصرفکنندههای رایانش ابری مالک زیرساختهای فیزیکی ابر نیستند، بلکه برای اجتناب از هزینههای سرمایهای آنرا از عرضهکنندگان ثالث اجاره میکنند. کاربران رایانش ابری میتوانند از هزینه سرمایههای لازم برای خرید سخت افزار و نرم افزار و خدمات دوری کنند، زیرا آنها تنها برای آنچه که استفاده میکنند به عرضه کنندگان پرداخت میکنند و هزینه اولیهای برای خرید تجهیزات به آنها تحمیل نمیشود. سایر مزایای اقتصادی این شیوه اشتراک زمانی در ارائهمنابع رایانشی عبارت است از:

- موانع کمتر در ورود به بازار.

- هزینه و زیر ساخت اشتراکی، سربار مدیریتی کمتر و دسترسی سریع به طیف وسیعی از برنامههای کاربردی.

- عموما کاربران میتوانند در هر زمانی قراردادشان را پایان دهند و به این وسیله از ریسک و عدم قطعیت در نرخ بازگشت سرمایه بکاهند. [1]


-2-2 ساختار مدل

معماری رایانش ابریعموماَ شامل اجزایی است که با یکدیگر از طریق رابط برنامهنویسی و معمولا وبسرویس ارتباط برقرار میکنند. این طراحی شباهتی با فلسفه یونیکس دارد که در آن چند برنامه مختلف که هر یک کاری را به خوبی انجام میدهند، با یکدیگر کار میکنند. در این حالت پیچیدگی کنترل میشود و سامانههای حاصل مدیریت پذیرتر از همتاهای یکپارچه خود هستند. نرمافزار رایانش ابری عموما در سه سرویس دستهبندی میشود: Software، Platform و .Infrastructure هر سرویس یک هدف متفاوت را دنبال میکند و محصولات مختلفی را برای افراد و کسب و کارهای مختلف در سرتاسر جهان ارائه میدهد.

سرویسهای برنامه کاربردی ابری 2 یا SaaS نرم افزار را به صورت سرویس روی اینترنت تحویل میدهند و بدین وسیله نیاز به نصب نرم افزار روی رایانههای مشتریان را ازبین میبرند و نگهداری و پشتیبانی را سادهتر میسازند. ویژگیهای اصلی این سرویسها عبارتند از:

دسترسی و مدیریت نرم افزار تجاری از طریق شبکه انجام میشود.

فعالیتها از سوی مراکز اداره میشوند، در نتیجه مشتریان میتوانند از راه دور و از طریق وب به برنامهها دسترسی داشته باشند .
به روز رسانی و ارتقای نرم افزار به صورت مرکزی اداره میشود و نیاز به بارگیری3 وصلهها4 را از بین میبرد.

SaaS هم برای کاربر و هم برای توسعه دهنده نرم افزار مزایای زیادی دارد. برای مثال فروش تولید کننده مبتنی بر خرید (یک بار برای همیشه) نخواهد بود، بلکه به صورت ماهانه مبلغ کمتری رو برای ارائه خدمات بر روی نرم افزار دریافت میکند. در نتیجه فروش محصول به صورت فصلی یا مقطعی بالا یا پایین نخواهد رفت.

SaaS از معماری چندمستاجری5 استفاده میکند. یک سیستم چند مستاجری یک نمونه در حال اجرای برنامه را بین گروهی از اجاره کنندگان (مشتریهای سرویس) به اشتراک می گذارد. به جای اینکه هر کاربر از یک نمونه در حال اجرای برنامه اختصاصی استفاده کند، این نمونه بین چندین کاربر به اشتراک گذاشته میشود. چندمستاجری به کاربران متعدد (مستاجرین) اجازه استفاده از یک نرمافزار کاربردی را بر روی رایانههای مشابه میدهد. این میتواند به دو روش انجام شود:

نمونههای چندگانه نمونه مشترک

در روش نمونههای چندگانه، با استفاده از ماشینهای مجازی6، یک برنامه نمونه7 را برای هر کاربر اجرا میکند. مشکل این روش، نیاز به منابع است که هر نمونه به اختصاص فضای جداگانه نیاز دارد. روش نمونه اشتراکی، یک نمونه از نرمافزار و پایگاهداده را در میان چندین کاربر به اشتراک میگذارد. این به این معناست که برای ارتقاء نرمافزاری تنها یک نمونه را به روز میکنیم. البته این تنها یک مزیت اجرای یک نرمافزار چند مستاجری به جای یک نرمافزار تک مستاجریست.

دومین نوع از سرویس در رایانش ابری، بستر بهعنوان سرویس8 یا PaaS است. ایدهی PaaS آن است بستر رایانشی و یا پشته راهکار- که اغلب روی زیرساخت ابری اجرا شده و برنامه کاربردی ابری را تغذیه میکند- بهصورت سرویس ارائه دهد. این سرویس بعنوان یک راهحل یکپارچه بر پایهی ابر شناخته شده است. در این مدل کاربران لازم نیست نگران معماری داخل ماشین، سیستم عامل و... باشند و استقرار برنامههای کاربردی را بدون هزینه و پیچیدگی خرید و مدیریت لایههای نرمافزاری و سختافزاری زیرین آسان میسازد. موتور (GAE) Google App یک نمونه PaaS است.

سومین نوع از سرویس، زیرساخت بهعنوان سرویس9 یا IaaS است. این مدل زیرساخت رایانهای که عموما یک بستر مجازی است را به صورت سرویس ارائه میدهد. کاربران به جای خرید سختافزار و نرمافزار و فضای مرکز داده10 ویا تجهیزات

شبکه، همه این زیرساختها را به صورت یک سرویس کاملا برونسپاری11 شده خریداری میکنند. سرویسهای وب آمازون12 (AWS) پیشگام در این مدل است .[2]

-3-2 ویژگیهای کلیدی

از دیدگاه سخت افزاری رایانش ابری در مقایسه با فناوریهای مشابه قبلی سه جنبه جدید دارد:

ایجاد تصور و توهم دسترسی به منابع نامحدود فناوری اطلاعات در زمان تقاضا و درنتیجه از بین بردن نیاز کاربر به برنامه ریزی تدارک منابع فناوری اطلاعات برای مصارف آینده از بین بردن نیاز به سرمایه گذاری پیشاپیش برای منابع فناوری اطلاعات. شرکتهای تجاری میتوانند در اندازه

کوچکتر کارشان را آغاز کنند و بر اساس نیاز در زمان دلخواه منابع سخت افزاری مورد نیاز خود را افزایش یا کاهش دهند.
امکان پرداخت برای استفاده از منابع فناوری اطلاعات در واحدهای زمانی کوتاه مدت مورد نیاز آن منبع (مثلا برای پردازشگر در واحد ساعت؛ یا برای رسانههای ذخیرهسازی در واحد روز).

مزایای اصلی رایانش ابری عبارتند از:

چابکی:13 کاربر میتواند در زمان نیاز میزان منابع مورد استفاده را کاهش یا افزایش دهد.
هزینه: ادعا میشود که این فناوری هزینهها را به میزان زیادی کاهش میدهد و هزینه سرمایهای را به هزینه عملیاتی تبدیل میکند.

نابستگی به دستگاه و مکان: کاربران میتوانند در هر مکانی و با هر دستگاهی به وسیله یک مرورگر وب از راه اینترنت به سامانهها دسترسی داشته باشند.

چند مستاجری:14 این ویژگی امکان به اشتراک گذاری منابع و هزینهها بین گروهی از کاربران را به وجود میآورد. قابلیت اطمینان: در صورتی که از سایتهای چندگانه استفاده شود قابلیت اطمینان افزایش مییابد.

مقیاس پذیری: کاربران میتوانند در زمان تقاضا و به صورت دینامیک منابع را تدارک ببینند و نیازی به تدارک پیشین برای زمانهای حداکثر بار مصرف منابع نیست.

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

نگهداری: به دلیل عدم نیاز به نصب برنامههای کاربردی برای هر کاربر، نگهداری آسانتر و با هزینه کمتر انجام می-شود.

 

سنجش پذیری: منابع در رایانش ابری قابل اندازه گیری هستند و لازم است که میزان مصرف منابع برای هر کاربر و هر منبع بر اساس واحدهای ساعتی، روزانه، هفتگی، ماهانه اندازه گرفته شود.

-3 کامپایلر ابری

یک کامپایلر، کد نوشته شده در یک زبان سطح بالا را به زبان سطح پایین15 تبدیل میکند. در مبحث کامپایلر ابری، کار ترجمهی برنامه ها به زبان ماشین برعهدهی یک سرویس SaaS قرار داده شده است. بطور کلی میتوان ویژگیهای کامپایلر ابری را به شرح زیر عنوان کرد:

مشکل نصب چند کامپایلر روی هر سیستم بهصورت جداگانه را از میان برمیدارد. موجب کاهش هزینه و فضای مورد نیاز میشود.

بار سیستم کاربران سبکتر میشود. انعطافپذیری را افزایش میدهد.

دسترسی به کدها از راه دور و از طریق ماشینهای مختلف امکانپذیر است .[3] اما کامپایلر ابری معایبی نیز دارد، از جمله:

معمولاً در نرم افزار های SaaS اطلاعات کاربران بر روی سرور های شرکت توسعه دهنده است و این ریسک وجود دارد که با ورشکست شدن شرکت اطلاعات کاربر برای همیشه از دست برود.

وجود اطلاعات تعداد زیادی کاربر بر روی یک سرور آن را به هدفی جذاب برای هکرها تبدیل میکند به اینترنت وابستگی دارد، پس در صورت افت سرعت یا قطع اینترنت از دسترس خارج میشود.[4]

-1-3 کارهای انجام شده

همانطور که ذکر شد، کامپایلر ابری اشاره به یک معماری سرویسگرا دارد که سربار تکنولوژی اطلاعاتی را برای کاربر نهایی16 کاهش و انعطاف را افزایش میدهد. کاهش هزینه و سرویسدهی بلادرنگ از دیگر مزایای آن است. در [5] نویسنده یک کامپایلر آنلاین جاوا را با سیستم Cloud معرفی کرده است. در کامپایلر پیشنهادی، ماشین سرویسگیرنده فاقد کیت توسعهی جاوا17 است اما کاربران میتوانند برنامههای نوشته شده به زبان جاوا را بر روی ماشین خود کامپایل کنند.

کامپایلر آنلاین بهطور کلی در یک معماری سه قسمتی پیاده سازی میشود: Back Tier ، Middle Tier و Front .Tier به دلیل تعاملات گستردهی Middle tier با Back tier عموما از یک زمانبند18 جهت مدیریت تعاملات استفاده میشود. در [6] به این مطلب پرداخته شده و دو الگوریتم سریال و موازی جهت تخصیص سرور به Back tier شرح داده شده است.

برای پیادهسازی کامپایلر در محیط رایانش ابری به Web services، Application server و Communication protocol نیاز است. در [7] به این ملزومات پرداخته شده است.

در متن اصلی مقاله به هم ریختگی وجود ندارد. برای مطالعه بیشتر مقاله آن را خریداری کنید