معماری سرویس گرا یا Service Oriented Application در اوایل دهه 2000 رایج شد و امروزه همچنان درحال استفاده است. SOA یکی از سبکهای معماری نرمافزار است که در آن سرویسهای مورد نیاز با استفاده از یک پروتکل ارتباطی، از طریق شبکه به کاربران ارائه میشوند.
ظهور فناوری رایانش ابری به عنوان بستری برای ارائه خدمات و سرویسها و با دسترسی آسان، باعث شد تا امروزه این فناوری به جدیدترین و عالیترین راه برای خدمات میزبانی تبدیل شود. با این وجود، معماری SOA بهجهت جنس ساختار و مزایایی که با خود به همراه دارد، همچنان مورد توجه توسعهدهندگان نرمافزار قرار دارد.
در این مقاله به معرفی معماری سرویس گرا ، مزایا و معایب آن و تفاوت SOA با رایانش ابری میپردازیم. اگر به مباحث ابری و معماری نرم افزار علاقه دارید، خواندن این مطلب را به شما توصیه میکنیم.
معماری سرویس گرا (SOA) چیست؟
معماری سرویس گرا یا SOA یک مدل توسعه نرم افزار است که به سرویسهای مختلف این اجازه را میدهد تا برای شکلدهی یک اپلیکیشن، از طریق پلتفرمهای مختلف با یکدیگر ارتباط برقرار کنند. در SOA ، یک سرویس بخشی از یک نرم افزار است که برای انجام یک وظیفه مشخص، طراحی شده است. معماری سرویس گرا به سرویسهای مختلف اجازه میدهد تا با حداقل وابستگی، به انتقال دادهها و اجرای فرایندها بپردازند.
حداقل وابستگی به مشتری یک سرویس اشاره دارد که مستقل از سرویس مورد نیاز خود عمل میکند. این مشتری، که میتواند یک سرویس نیز باشد، با سرویسهای دیگر نیز قادر به ارتباط است.
SOA با ایجاد قابلیت همکاری میان برنامهها و سرویسها و کاهش هزینههای مربوط به توسعه راه حل های نرمافزاری ، به سازمانها سود میرساند. SOA همچنین از امکان مقیاسپذیری برنامههای موجود نیز اطمینان حاصل میکند.
معماری سرویس گرا یا SOA از معماریهای ساخت نرمافزار توزیع شده است که امکان بهرهگیری از منابع مستقل را فراهم میکند.
معماری سرویسگرا ، پیادهسازی «مفهوم سرویس» یا «مدل سرویس» در محاسبات است. در این سبک معماری، فرآیندهای کسبوکار بهعنوان خدمات نرمافزاری پیادهسازی میشوند که از طریق مجموعهای از رابطهای برنامه کاربردی کاملاً تعریفشده (API) قابل دسترسی هستند و از طریق سرویسهای پویا به برنامهها متصل میشوند.
در معماری سرویس گرا دو نقش اساسی وجود دارد:
- ارائهدهنده خدمات: ارائهدهنده خدمات، سازمانی است که نگهدارنده سرویس است و یک یا چند سرویس را برای استفاده دیگران، در دسترس قرار میدهد. ارائهدهنده معمولا خدمات خود را در قالب یک قرارداد خدماتی که در آن ماهیت سرویس، نحوه استفاده از آن، الزامات خدمات و هزینههای دریافتی را مشخص میکند، ارائه میدهد.
- مصرف کننده خدمات: مصرف کننده خدمات، فرد یا سازمانی است که از سرویسهای ارائه دهنده خدمات استفاده میکند. او میتواند متادیتای سرویس را در رجیستری پیدا کرده و اجزای مورد نیاز خود را برای اتصال و استفاده از سرویس توسعه دهد.
هر سرویس در یک SOA ، شامل کد و دادههای مورد نیاز برای اجرای کامل و مجزای یک عملکرد (مانند بررسی اعتبار مشتری، محاسبه پرداخت ماهانه وام یا پردازش درخواست وام مسکن) است. این رابط، در قالب یک قرارداد خدمت میان ارائهدهنده و مصرفکننده خدمات ارائه میشود.
برنامههای کاربردی در پشت رابط سرویس میتوانند به زبان جاوا، دات نت، کوبول یا هر زبان برنامه نویسی دیگری نوشته شده و بهعنوان یک پکیج نرمافزاری توسط یک فروشنده (مانند SAP)، برنامههای کاربردی نرم افزار به عنوان خدمت SaaS (مانند Salesforce CRM)، یا نرمافزار متن باز ارائه شوند. رابطهای سرویس اغلب با استفاده از زبان وب سرویس (WSDL) تعریف میشوند که یک ساختار برچسب استاندارد بر اساس xml (زبان نشانهگذاری توسعهپذیر) است.
سرویسهای تعریف شده در معماری SOA ، برای ارسال درخواستهای خواندن یا تغییر دادهها از پروتکلهای استاندارد شبکه – مانند SOAP/HTTP یا Restful HTTP (JSON/HTTP)- استفاده میکنند. حاکمیت سرویس (service governance) چرخه عمر توسعه یک سرویس را کنترل و در مرحله مناسب، آن را منتشر میکند.
تاریخچه پیدایش SOA
برای دههها، توسعه نرمافزار نیازمند استفاده از عناصر عملکردی ماژولار بود که یک کار مشخص را در بخشهای مختلف یک برنامه انجام میداد. با بیشتر شدن عملیات یکپارچهسازی برنامهها و به اشتراکگذاری اجزا در منابع میزبان و پایگاههای داده توزیع شده، سازمانها نیازمند راهی برای انطباق مدلهای توسعه مبتنی بر رویه خود با مؤلفههای توزیع شده از راه دور بودند.
در ادامه این روند، مفهوم کلی فراخوانی روش از راه دور (RPC) ایجاد شد که به یک نرم افزار اجازه میداد تا نرم افزار دیگری را حتی بهشکل محلی، فراخوانی کند؛ درواقع فرآیند دیگر ممکن است در برنامه، کامپیوتر یا مرکز داده دیگری ساکن باشد.
مشکل مدل RPC این بود که تغییرات زیادی در پیادهسازی ایجاد میکرد و فاقد موارد زیر بود:
- مجموعهای از ابزار سیستماتیک برای تامین امنیت جریان اطلاعات،
- حاکمیت دادهها با توجه به حقوق دسترسی به فرآیندهای تجاری درگیر،
- شیوه ارتباط و قالبهای پیام برای سرویسها.
از آنجا که مفهوم سرویس معرفی شده توسط SOA ، بخشی جدایی ناپذیر از محاسبات ابری و مجازی سازی مدرن است، معماری سرویس گرا امروزه کمتر مورد استفاده قرار میگیرد.
اهداف اصلی SOA
بهطور کلی میتوان سه هدف اصلی برای معماری سرویسگرا در نظر گرفت که هر کدام روی بخشی از چرخه عمر یک نرمافزار متمرکز هستند:
- هدف اول، ایجاد ساختار رویهها یا اجزای نرم افزاری، در قالب خدمت است. این سرویسها بهگونهای طراحی شدهاند که با حداقل وابستگی، به برنامههای دیگر متصل و فقط در صورت نیاز استفاده شوند. آنها همچنین بهشیوهای طراحی شدهاند که بهراحتی، توسط توسعهدهندگان نرمافزار، استفاده شوند.
- هدف دوم، ارائه مکانیزمی برای انتشار سرویسهای موجود است که شامل عملکرد و الزامات ورودی/خروجی (I/O) آنها است. سرویسها بهگونهای منتشر میشوند که توسعهدهندگان بتوانند بهراحتی آنها را در برنامهها بگنجانند.
- هدف سوم SOA کنترل استفاده از این سرویسها برای جلوگیری از مشکلات امنیتی و حاکمیتی است. امنیت در SOA به شدت پیرامون امنیت هر جزء در معماری؛ رویههای احراز هویت مربوط به آن اجزا و ایمن ساختن ارتباطات میان اجزای معماری متمرکز است.
در معماری SOA باید این اطمینان وجود داشته باشد که در خواستهای سرویس بهشکل صحیح پاسخ داده میشوند و سیاست استفاده مشخصی دارند.
مزایای معماری SOA
SOA ، مدل فراخوانی رویهها را که معمولاً در برنامهنویسی ساختاریافته استفاده میشود، حفظ میکند. همچنین با استاندارد کردن شیوه خودکارسازی و استفاده از فرآیندهای تجاری، امنیت و حاکمیت دادهها را حفظ میکند.
از مزایای دیگر SOA میتوان به موارد زیر اشاره کرد:
- استفاده مجدد: سرویسهای ارائه شده در مدل SOA را میتوان در برنامههای مختلف بهکار گرفت. علت این موضوع این است که سرویسهای SOA در یک مخزن سرویس (service repository) نگهداری میشوند که با درنظر گرفتن محدودیتهای حاکمیتی، در دسترس همگان قرار گرفته و در صورت تقاضا، به یکدیگر مرتبط میشوند. استفاده مجدد از سرویسها، به سازمانها اجازه میدهد تا در زمان و هزینههای مرتبط با توسعه صرفهجویی کنند.
- نگهداری آسان: از آنجا که در معماری سرویس گرا همه سرویسها مستقل از یکدیگر هستند، تغییر و بهروزرسانی آنها بدون تحت تاثیر قرار دادن سایر سرویسها امکانپذیر است. این کار هزینههای عملیاتی سازمانها را نیز کاهش میدهد.
- قابلیت همکاری: استفاده از پروتکلهای ارتباطی استاندارد، امکان انتقال آسان دادهها میان سرویسها را بدون درنظر گرفتن زبان برنامهنویسی آنها، ممکن میکند.
- دسترسی بالا: معماری SOA طبق درخواست، در دسترس همه افراد قرار دارد.
- قابلیت اطمینان: SOA باعث افزایش قابلیت اطمینان نرمافزارها میشود؛ زیرا اصلاح یک سرویس کوچک بسیار سادهتر از اصلاح یک کد بزرگ است.
- مقیاسپذیری: معماری سرویسگرا امکان اجرای سرویسها روی سرورهای مختلف را فراهم میکند و به این ترتیب، مقیاسپذیری بالایی دارد. علاوه بر این، استفاده از پروتکلهای استاندارد برای تعامل، به سازمانها این امکان را میدهد تا سطح تعامل میان سرویسها را کاهش دهند. کاهش سطح تعاملات، قابلیت مقیاسپذیری نرمافزارها را افزایش میدهد.
معایب معماری سرویس گرا SOA
برخی از مدلهای SOA به سبب پیچیدگیهای زیادی که بر شبکه اعمال میکردند، هیچگاه مورد پذیرش قرار نگرفتند. از طرف دیگر، ظهور مدلهای مختلف رایانش ابری و دسترسی آسان آنها برای کاربران مختلف، بازی را برای معماری سرویسگرا عوض کرد. از معایب دیگر معماری SOA میتوان به موارد زیر اشاره کرد:
- پیاده سازی SOA نیازمند صرف هزینه اولیه قابل توجه است،
- مدیریت سرویسها در معماری سرویس گرا پیچیده است؛ زیرا هر سرویس انتقال دهنده میلیونها پیام است که دنبال کردن آنها دشوار است،
- در هر تعامل با سرویس، پارامترهای ورودی سرویس اعتبارسنجی میشوند که این باعث کاهش بهرهوری و افزایش بار و زمان پاسخ میشود.
معماری SOA و رایانش ابری چطور با یکدیگر کار میکنند؟
اول از همه باید به این نکته توجه کرد که معماری سرویس گرا میتواند با/یا بدون رایانش ابری کار کند. با این وجود، از آنجا که امروزه بسیاری از کسب و کارها در حال انتقال فایلهای خود روی زیرساخت های ابری هستند، بهنظر میرسد باید SOA را در کنار رایانش ابری بهکار برد.
بهطور خلاصه میتوان گفت استفاده از رایانش ابری به کاربران اجازه میدهد تا بتوانند به آسانی و به سرعت، بدون نیاز به دخالت واحد IT، به پیادهسازی سرویسهای موردنیاز مشتریان خود بپردازند.
یکی از اشکالات استفاده از معماری سرویس گرا و رایانش ابری با یکدیگر این است که برخی از جنبههای آنها مانند امنیت و در دسترس بودن ارزیابی نمیشوند. یک چالش نسبتا بزرگ دیگر هنگام ادغام رایانش ابری و معماری سرویس گرا که کسب و کارها با آن مواجه میشوند، شیوه ادغام دادهها و سیستمهای موجود در راه حل ابری است.
در واقع در راهکارهای ابری، باید از ابتدا تا انتهای ادغام، تداوم وجود داشته باشد تا یک انتقال کامل انجام شود. همچنین باید در نظر داشته باشید که همه جنبههای فناوری اطلاعات را نمیتوان به راهکارهای ابری برونسپاری کرد؛ برخی از کارها همچنان باید بهشکل دستی انجام شوند.
معماری سرویسگرا یا SOA دارای نقاط مشترک زیادی با SaaS است که باعث میشود این دو روش در بسیاری از موارد، جایگزین یکدیگر درنظر گرفته شوند.
تا اینجا به طور خلاصه درمورد معماری سرویس گرا و تاثیر آن روی کسب و کارها صحبت کردهایم. راهکار SaaS یکی از توسعههای زیرساختهای ابری است که SOA را تحت تأثیر قرار داده است. SaaS ، یک انتخاب جایگزین برای معماری سرویس گرا با استفاده از رایانش ابری است که استفاده از آن نیز با منافعی برای کسبوکارها همراه است.
در مقایسه SOA و SaaS میتوان گفت SaaS یا نرمافزار به عنوان سرویس، یکی از روشهای رایانش ابری بهشکل عمومی است که سرویس ارائه شده در آن، نرمافزار است! از آنجا که «سرویس» یک فرایند کسب و کاری است، SaaS مشابه SOA عمل میکند.
SaaS را میتوان Application as a service نیز نامید؛ زیرا هدف آن ارائه پشتیبانی کامل از فرایندهای یک کسب و کار بر بستر ابر است. یک ویژگی اصلی در زیرساخت SaaS این است که برای کاربران در دسترس اما ماهیتش از دید آنها پنهان است.
از دیگر مزایای SaaS این است که کاربر نهایی مجبور به نصب و نگهداری نرمافزار نیست و به این ترتیب، از هرگونه پیچیدگی دور است. علاوه بر این، هزینههای سمت کاربران کاهش پیدا کرده و صرفه جویی در زمان و نیروی انسانی را بههمراه دارند.
استفاده از سرویسهای رایانش ابری همکاران سیستم
راهکارهای ابری به سبب مقرونبهصرفه بودن و امکانات متعددی که در اختیار کسبوکارها قرار میدهند، امروزه بیش از پیش مورد توجه کسب و کارها قرار گرفتهاند. انتخاب سرویسهای ابری باید با توجه به نیازهای کسبوکار، بودجه و ارائه دهنده خدمات انجام شود؛ زیرا مواردی مانند امنیت و سرعت سرویس از اهمیت زیادی برخوردارند.
همکاران سیستم با سالها تجربه در زمینه نرمافزارهای سازمانی و با هدف ارائه خدمات هرچه بهتر به مشتریان، نرمافزارهای خود را بر بستر ابر نیز عرضه کرده است. راهکاران ابری همکاران سیستم ، مجموعهای از نرم افزارهای ابری است که بخشهای مختلفی مانند مالی، خردهفروشی، فروش، پخش، تدارکات، سرمایه انسانی، بهای تمام شده و هوش تجاری را دربرمیگیرد. برای دریافت اطلاعات بیشتر و مشاوره رایگان با ما در ارتباط باشید.
منابع:
- ibm.com
- techtarget.com
- medium.com