در وبسایت های مربوط به استخدام برنامه نویسان مطمینا یک سری شرایط به عنوان مهارت های یک برنامه نویس را مشاهده کردید. یکی از این مهارت ها آشنایی با معماری SOA یا سرویس گرا در برنامه نویسی است که برای وب بسیار کاربردی است.
معماری SOA یک مفهوم است و نه یک زبان برنامه نویسی و یا پلتفرم. همانند معماری MVC برای تفکیک کدها در زبان های برنامه نویسی و اسکریپت نویسی.
معماری سرویس گرا (SOA) روشی جدید و در حال تكامل برای ساخت برنامه های توزیع شده با Distributed Application است.
مفهوم معماری SOA
برای مدتهای طولانی برنامه نویسان سعی می کردند تا، کدهای خود را بصورت modular بنویسند، تا بتوان از آن در تولید نرم افزارهای دیگر استفاده کرد. تفاوت نوشتن کد بصورت modular و بر اساس معماری سرویس گرا در حجم مخاطبان آن است.
معماری سرویسگرا ( Service-oriented Architecture)، برای ساخت سامانههای توزیعشده که کارکردهای نرمافزاری را در قالب سرویس ارائه میکند.
از این سرویسها هم میتوان برای فراخوانی در نرمافزارهای دیگر و هم برای ساخت سرویسهای جدید استفاده کرد. معماری سرویسگرا مجموعهای انعطافپذیر از اصول طراحی است که در مراحل توسعهٔ سامانهها و یکپارچگی در رایانش استفاده میشود.
سامانهای که بر معماری سرویسگرا استوار است، کارکرد را به عنوان مجموعهای از سرویسهای سازگار بستهبندی میکند که میتوانند در چندین سامانهٔ مجزا از دامنههای تجاری گوناگون استفاده شوند.
مثالی از معماری SOA یا سرویس گرا در برنامه نویسی
هر کس که از سایتهای تجارت الکترونیکی به صورت آنلاین خرید کرده باشد، با مفهوم سرویسها آشنا است. وقتی که سفارش تان را دادید، باید اطلاعات کارت اعتباریتان را ارایه کنید که به طور معمول توسط یک فراهم کننده سرویس ثانویه، تایید و شارژ میشود.
وقتی که سفارش پذیرفته شد، شرکت سفارش گیرنده با یک شرکت فراهم کننده سرویس حمل ونقل فراهم میکند و در نهایت کالای شما تحویلتان میشود.
نیاز به معماری سرویس گرا از جنبهای دیگر نیز به نحوه بارزی در برنامههای کاربردیeCommerce مشهود است.
اگر مثلا جزء (componet) مربوط به پرداخت با کارت اعتباری offline و یا غیر فعال باشد، قرار نیست که فرایند فروش متوقف شود. بلکه سفارشها بایستی پذیرفته شوند وعملیات پرداخت به وقت دیگری موکول شود.
مثل سایر معماریهای توزیع شده، معماری SOA ساخت برنامههای کاربردی با استفاده اجزایی که در domainهای جدا از هم را قرار دارند را ممکن میسازد.
معماری SOA از سرویسهای وب به عنوان نقاط ورود برنامه کاربردی استفاده میکند که از لحاظ مفهومی معادل همان اجزای proxy و stub در سیستمهای توزیع شده سنتی مبتنی بر اجزاء هستند. با این تفاوت که در اینجا ارتباط بین سرویس وب و استفاده کننده خیلی آزاداترانه ومستقلتر (loosely coupled) است.
به علاوه معماری SOA به خاطر در بر داشتن فاکتورهایی که اهمیت حیاتی در تجارت دارند، نیز منحصر به فرد است.
فاکتورهایی نظیر:
- قابلیت اطمینان سرویس
- جامعیت پیام
- یکسانی تراکنش و امنیت پیام
در امور تجاری واقعی نمیتوان روی سرویسهایی که فقط یک درخواست را پردازش میکنند حساب کرد.
اگر سیستمی تواناییهای خود را در قالب سرویسی روی وب ارائه کند. در آن صورت نحوه فراخوانی آن سرویس باید به طور واضح مستند سازی و اعلام شود. (برای ساخت API)
بسیاری از مسائل دسترس پذیری و مقیاس پذیری برنامههای کاربردی امروزی در معماری SOA حل شده است که احتمال نقض آن در هر مرحلهای از جریان کار بسیار زیاد است.
در معماری SOA فرض بر این است که خطا وجود دارد و میتواند بیفتد، بنابراین استراتژیهایی برای مثال اگر یک سرویس نتواند یک پیغام را در مرحله اول بپذیرد. این معماری طوری طراحی شده است که مجددا پیام را بفرستد.
و اگر یک سرویس به طور کامل قابل دسترس نباشد، (که هرگز نباید در یک سیستم SOA پایدار انفاق بیفتد) آن وقت معماری طوری طراحی شده است که روی دادن خطاهایی که ممنجر به قطع کامل در خواست سرویس میشود، امکان پذیر نباشد.
- معماری SOA قابلیت اطمینان را افزایش میدهد، چون خطاهای موقت در بخشی از جریان کار نمیتوانند کل فرایند تجاری را از کار بیاندازند.
- معماری SOA فرایندی تکامل یافته را ارائه مینماید و از این نظر میتواند ان را بلوغ سریسهای وب و تکنولوژیهای یکپارچه سازی به حساب آورد.
در این گونه سیستمها باید این اطمینان وجود داشته باشد که در خواستهای سرویس به طور صحیح مسیر دهی و هدایت میشوند، در زمان مناسب به آنها پاسخ داده میشود، و این سرویسها به طور واضح و دقیق سیاستهای ارتباطی و رابطهای خود را اعلام میکنند.
جمع بندی
امیدوارم با مفهوم معماری SOA یا سرویس گرا در برنامه نویسی کاملا آشنا شده باشید.
این معماری صرفا برای بخش بندی عملیات مختلف سیستم های بزرگ مثل سیستم بانکی یا سیستم های ثبت سفارش در آمازون استفاده می شود که در پروژه های مختلف هم البته می توان استفاده کرد.
که با ایجاد میکرو سرویس ها عملیات و بخش های اصلی پروژه به سرویس های مختلفی تقسیم بندی می شود تا سرعت اجرای عملیات را بتوان افزایش و همچنین مدیریت کرد و برای دسترسی به هر کدام معمولا از API ها بهره می بریم.(مفهوم وب سرویس Restful)
موفق و پیروز باشید.