معماری Service Oriented Architecture چیست؟
مقدمه
سیستم های اطلاعاتی به سرعت در حال رشد هستند؛ سازمان ها نیازمند پاسخگویی سریع به نیازمندی های جدید کسب وکار هستند. این در حالی است که معماری های نرم افزاری موجود به حد نهایی قابلیت های خود رسیده اند. معماری مبتنی بر سرویس قدم تکاملی بعدی برای کمک به سازمان ها جهت مدیریت چالش های پیچیده است. معماری سرویس گرا حالت بلوغ یافته معماری مبتنی بر اجزا، طراحی مبتنی بر واسطه (شی گرا) و سیستم های توزیع شده است. در معماری مبتنی بر اجزا عملکرد کلی به کارهای کوچک تری تقسیم می شود که هر یک در یک جزء بسته بندی خواهند شد. یک سیستم توزیع شده، تعمیمی از یک معماری مبتنی بر اجزا است که به اجزایی که در موقعیت های فیزیکی مختلف وجود دارند، اشاره می کند.مهم ترین مزیت معماری مبتنی بر اجزا سهولت در استفاده مجدد و تغییر هدف اجزای خاص و سهولت در امر نگهداری سیستم است. استفاده مجدد و تغییر هدف معمولاً مهم ترین پیشران های کسب و کار جهت استفاده از این نوع معماری در دهه 90 میلادی بوده است. بر اساس منطق معماری مبتنی بر سرویس، سیستم های نرم افزاری بزرگ می توانند از گردآوری مجموعه هایی از عملکردهای مستقل و قابل استفاده مجدد تشکیل گردند.برخی از این عملیات می تواند از طریق سیستم های موجود و یا سیستم های دیگر فراهم گردد ولی سایر عملیات لازم باید پیاده سازی شوند. هر سرویس امکان دسترسی به مجموعه خوش تعریفی از عملیات را می دهد. سیستم به عنوان یک کل به صورت مجموعه ای از تعاملات بین این سرویس ها طراحی می شود. معماری مبتنی بر سرویس، سرویس هایی را که سیستم از آنها تشکیل شده را تعریف می کند و تعاملات لازم بین سرویس ها جهت ارایه رفتار مشخص را توصیف می کند و در نهایت سرویس ها را به یک یا چند پیاده سازی در تکنولوژی های خاص تصویر می کند. SOA بر اساس استفاده از اشیاء و اجزا توزیع شده است و قدم تکامل بعدی در محیط های محاسبه ای است. این معماری در حال حاضر مدل مرجع استانداردی ندارد. معماری سرویس گرا با مطرح نمودن یک معماری لایه ای و مجموعه استاندارد های باز، گامی اساسی در یکپارچه نمودن سیستم های اطلاعاتی و روشی جهت توسعه سیستم های اطلاعاتی جدید ارائه نمود. هدف نهایی ارائه این معماری تدوین راه کارها و استانداردهایی بود که سیستم های اطلاعاتی تولید شده براساس آن صرف نظر از تکنولوژی پیاده سازی براحتی بتوانند از قابلیت های یکدیگر بهره برده و بتوان با ترکیب نمودن آنها سیستم های جدید ایجاد نمود. ایجاد چنین محیط ایده آلی نیازمند یک فاز گذار است که در این فاز گذار لازم است که در ابتدا راهکارهایی جهت یکپارچه نمودن سیستم های قبلی یافت.در معماری سرویس گرا هر سرویس صرف نظر از چارچوب توسعه ای خود جهت ارتباط با سایر سرویس ها از یک استاندارد معین و یکسان استفاده می نماید. در کنار استفاده از این استانداردها، لازم است مجموعه ابزاری تحت عنوان یک Busعمومی جهت ارتباط کلیه سرویس ها با یکدیگر استفاده شود. عمده وظیفه ای این Busعمومی فراهم سازی بستر مطمئن و استاندارد جهت برقراری ارتباط بین سرویس ها و پوشش دادن تمایزات بین آنها بصورت کاملاً مدیریت شده می باشد. یکی دیگر از وظایف این Bus عمومی در فاز گذار استفاده از معماری سرویس گرا پشتیبانی از پروتکل های مختلف یکپارچه سازی سیستم های اطلاعاتی موجود و ارائه ابزاری برای ساده سازی این کار می باشد. شکل زیر در سمت راست معماری لایه ای سرویس گرا را نشان می دهد.
تعریف معماری سرویس گرا از دید تجاری و آکادمیک
در منابع برای معماری سرویس گرا تعریف های مختلفی ارائه شده است که هر کدام با دیدگاه خاصی به این مفهوم توجه کرده اند. به عبارت دیگر، افراد مختلف با توجه به نقش فنی خود، معماری سرویس گرا را تفسیر کرده اند. این تعریف ها را می توان به دو دسته تعریف های آکادمیک و تجاری تقسیم بندی کرد.برخی از تعاریف آکادمیک عبارتند از:
• روشی برای طراحی و پیاده سازی نرم افزارهای گسترده سازمانی به وسیله ارتباط میان سرویس هایی که دارای خواص اتصال سست، دانه درشتی و قابلیت استفاده مجدد هستند.
• سبکی از معماری که از اتصال سست سرویس ها جهت انعطاف پذیری و تعامل پذیری کسب و کار تشکیل شده که این سرویس ها انعطاف پذیری و پیکربندی پویا را برای فرآیندها محقق می کنند.
• چارچوبی وسیع و استاندارد که سرویس ها در آن ساخته، استقرار و مدیریت می شوند و هدفش افزایش چابکی زیرساخت های فناوری اطلاعات در جهت واکنش سریع به تغییرات در نیازهای کسب و کار است.
• سبکی از معماری برای ساخت نرم افزارهایی که از سرویس های منتشر شده در یک شبکه مانند وب استفاده می کنند. اتصال سست بین مؤلفه های نرم افزاری باعث قابلیت استفاده مجدد از آنها می شود و نرم افزارها بر مبنای سرویس ساخته می شوند؛ سرویس در اینجا به معنای پیاده سازی یک کارکرد کسب و کار خوش تعریف است که می تواند در فرآیندها یا نرم افزارهای مختلف مورد استفاده و فراخوانی قرار بگیرد.
• معماری سرویس گرا یک محصول نیست بلکه پلی است بین حرفه و فناوری به کمک مجموعه ای از سرویس های متکی بر فناوری که دارای قوانین، استانداردها و اصول طراحی مشخص هستند.
از میان تعاریف تجاری نیز می توان به موارد زیر اشاره کرد:
• از نگاه IBM : معماری سرویس گرا رهیافتی است برای ساخت سیستم های توزیع شده که کارکردهای نرم افزاری را در قالب سرویس ارائه می کند. این سرویس ها هم توسط دیگر نرم افزارها قابل فراخوانی هستند و هم برای ساخت سرویس های جدید مورد استفاده قرار می گیرند. این رهیافت برای یکپارچه سازی فناوری ها در محیطی که انواع مختلفی از سکوهای نرم افزاری و سخت افزاری وجود دارند ایده آل است. خواص معماری سرویس گرا به شرح زیر است:
- استفاده از استانداردهای مستقل از فناوری و مورد توافق برای ارائه مؤلفه های نرم افزاری تحت قالب سرویس.
- معرفی کننده یک روش مشخص و مورد توافق برای تعریف و ارتباط بین مؤلفه های نرم افزاری.
- مؤلفه های نرم افزاری منفرد می توانند در ساخت دیگر نرم افزارها استفاده شوند.
با توجه به تعاریف فوق و مفاهیم مشترک آنها می توان به تعریفی ساده و عمومی از معماری سرویس گرا دست یافت. با توجه به این تعاریف
معماری سرویس گرا روشی است به منظور توسعه سیستم های نرم افزاری گسترده سازمانی که محدوده سازمان را به تعدادی سرویس تقسیم می کند و هر کدام از این سرویس ها وظیفه مندی مشخصی دارند. همچنین این سرویس ها از تعدادی ویژگی کیفی از جمله اتصال سست، دانه درشتی، و قابلیت استفاده مجدد برخوردارند.
پارادایم سرویس گرایی در سازمان
.ویژگی های معماری سرویس گرا
هم راستاي كسب و كار سازمان است هم موضوعي فني است و هم نوعي سبك تفكر است مبتني بر اتصال سست است و از پيام رساني استفاده مي كند قادر به ساخت سيستم هاي تركيبي است از مولفه هاي قابل استفاده مجدد(سرويس) تشكيل شده است مهمترين دستاورد آن انعطاف پذيري و چابكي فناوري اطلاعات در برابر تغييرات کسب و کار است. زيرساخت ارتباطي براي اين معماري مي بايست مستقل از پروتكل هاي لايه هاي زيرين باشد.
مزایای soa
مولفان و شركت هاي پشتيباني كننده معماري سرويس گرا در خصوص مزاياي استفاده از اين رهيافت دلايل زيادي را مطرح كرده اند كه در ادامه بعضي از آنها تشريح مي شود:
سيستم هاي چابك: معماري سرويس گرا شما را قادر مي سازد تا به سرعت سيستم هاي خود را تغيير دهيد. اين چابكي هم از جهت كاركردهاي سيستم و هم از جهت تغيير جغرافيائي يا ارتقاء سكوها و حتي تغيير تامين كننده فناوری مي تواند باشد.
يكپارچگي آسان با شركاء داخلي و خارجي : مي توان گفت قابليت يكپارچگي سيستم ها و سكوها مهمترين موردي است كه معماري سرويس گرا به آن پرداخته است.
استفاده مجدد : استفاده مجدد از كد برنامه يا سيستم ها، از گذشته مورد توجه متدهاي توليد و توسعه نرم افزار بوده است، معماري سرويس گرا قابليت استفاده مجدد را هم در سطح كاركردي(سرويس) و هم در سطح داده ها مهيا مي كند.
پشتيباني از محصولات با طول عمر كوتاه : رقابت تجاري در دنيا به شدت افزايش پيدا كرده و نياز به كاهش زمان بازاريابي و توليد براي محصولات جديد مي باشد. معماري سرويس گرا وعده مي دهد كه با وجود سرويس هاي خوش تعريف و قابليت استفاده مجدد از آنها در يك سازمان، پشتيباني سريع از محصولات جديد امكان پذير است.
بهبود بازگشت سرمايه: معماري سرويس گرا مجموع هزينه صرف شده براي فناوري اطلاعات و سرويس هاي حرفه را به دو روش كاهش مي دهد. اول با حذف هزينه هاي ميان افزارها و فناوری هاي اختصاصي و جايگزين كردن آن با فناوری هاي استاندارد مانند وب سرويس و دوم با تركيب كاركردهاي حرفه در غالب سرويس هائي كه توسط واحدهاي مختلف قابل استفاده باشد.
نگاشت مستقيم فرآیندهاي حرفه به فناوري اطلاعات: نقش كليدي معماري سرويس گرا اتصال بين كسب و كار و فناوري اطلاعات است، بدين ترتيب فرآیندها مي بايست از نگاه سرويس گرا ديده شوند و در سطح مديريت حرفه پشتيباني شوند.
توسعه و اجراي تدريجي: معماري سرويس گرا يك پروژه عظيم و بزرگ و يكجا نيست بلكه از تكامل و تبديل تدريجي سيستم هاي فعلي و تعريف سرويس هاي جديد بصورت تدريجي ايجاد مي شود.
قابليت انعطاف و تغيير آسان از يك ارائه دهنده سرويس به ديگري : موضوع انعطاف در معماري سرويس گرا در هر دو مورد سرويس هاي داخل سازماني و خارجي صدق مي كند.
و همچنين موارد ديگري نيز وجود دارد كه به اختصار تنها نام برده مي شود:
- تعيين سرويس ها به سازمان كمك مي كند فرآیندهاي محوري(core process) را بهتر بشناسد
- كاهش هزينه توسعه و نگهداشت سيستمها
- معماري اطلاعات براي حوزه كسب و كار نمايان(visible) مي شود
- اعمال استانداردها تضمين كننده تعامل پذيري خواهد بود.
- معماري سرويس گرا مستقل از سكو است
- عدم وابستگي سيستم ها و معماري به مكان فيزيكي
لزوم استفاده از معماری بر پایه سرویس
توجه به اینکه امروزه استراتژیهای سازمانها بنا به دلایل گوناگون تغییرات زیادی مینماید و مدلها و اهداف تجاری هر سازمانی دستخوش تغییرات میگردد، مهترین عامل موفقیت هر محصول نرم افزاری منوط به سرعت و هزینه توسعه آن میباشد.همواره در مسیر رسیدن از مدل تجاری جدید سازمان که بر گرفته از اهداف استراژیک آن سازمان میباشد، به نرم افزار های مورد نظر جهت پیاده سازی و اجرایی نمودن آن مدل فاصله زمانی و هزینه فراوانی وجود دارد جهت رفع این فاصله نیاز به راهکار نرم افزاری مناسبی میباشد که به کمک آن بتوان این فاصله زمانی را به حداقل رساند.
مشکلات
مهمترین مشکلاتی که در گسترش این فاصله تاثیر گذار مباشند عبارتند از عدم انعطاف معماریهای کنونی بکار گرفته شده در توسعه سیستم های نرم افزاری موجود،از آنجا که این معماریها قابلیت هماهنگی با سایر محیطها و برنامه های نرم افزاری را ندارند امکان اتصال و بهره مندی از سایر نرم افزار های موجود وجود ندارد و بهمین جهت در سازمان سیستم های جزیره ای (که اساساً هیچ گونه ارتباطی بایکدیگر نداشته اند و یا جهت ارتباط با هم باید از استانداردهای یکدیگر جهت تبادل اطلاعات مطلع می شدند. برای اینکار از پل های Bridge ارتباطی بین سیستم ها استفاده می شد که بسیار هزینه بر و غیر قابل نظارت، بدون قابلیت بروز رسانی و مدیریت کردن بود. ) بوجود خواهد آمد که هریک به تنهایی قابل استفاده میباشد اما امکان تلفیق با یکدیگر را ندارند این موضوع در زمان طولانی منجر به پیدایش داده های منفک و مجزا در سیستم میگردد که امکان یکپارچگی داده را از سازمان گرفته و در نهایت منجر به پرداخت هزینه های گزاف به منظور استفاده یکپارچه از این اطلاعات گسسته خواهد شد.متاسفانه امروزه به علت عدم این یکپارچگی معماری توسعه نرم افزار ایجاد یک سیستم جدید همواره یک دغدغه بوده و پشتیبانی از سیستم های فعلی نیز بسیار پر هزینه میباشد در حالیکه اگر از یک معماری استفاده گردد که امکان یکپارچگی و ارتباط فیمابین سیستم های گسسته را بتواند فراهم نماید سیستم به بخش های کوچک تقسیم میگردد که هر بخش وظیفه مربوط به خود را انجام داده و در نقل و انتقال داده نیز با سایر بخش ها تعامل خواهد داشت.
برای دیدن مانتو ها بر روی کانال مانتو ولباس به قیمت عمده کلیک کنید.
منابع
http://soea.sbu.ac.ir/index.php/app-integration-concepts/ui-integration
http://www.basaco.ir/knowledgebase/so/
http://soea.sbu.ac.ir/index.php/soa-concepts