گذرگاه سرویس سازمانی یا ESB که مخفف Enterprise Service Bus است، یک الگوی معماری است که امکان ارتباط بین برنامه های مختلف را در معماری سرویس گرا (SOA) فراهم می کند. در واقع به جای اینکه ارتباط بین برنامه ها به صورت مستقیم و با روش های متفاوت پیغام رسانی انجام شود، پیغام ها به گذرگاه سرویس ارسال شده و پاسخ نیز از گذرگاه دریافت می شود. ESB تبدیل مدل های داده و پروتکل های ارتباطی را انجام می دهد، ارتباطات را مدیریت می کند، مسیریابی پیام را به عهده دارد و به طور کلی ترکیب درخواست های متعدد را مدیریت می کند. گذرگاه سرویس سازمانی می تواند این ادغام ها و تبدیل ها را به عنوان یک رابط سرویس برای استفاده ی مجدد توسط برنامه های کاربردی جدید در دسترس قرار دهد.
در ادامه به توضیح بیشتر در مورد ESB و کاربرد آن می پردازیم.
فرض کنید دو سرویس در یک سازمان وجود دارد که نیاز به تبادل داده دارند. تیم های فنی راه حلی را طراحی و اجرا می کنند که امکان تعامل این سرویس ها با یکدیگر را برقرار می کند. مدتی بعد، سازمان چندین سامانه دیگر را مستقر می کند که نیاز به تعامل با یکدیگر و همچنین ارتباط با دو سرویس موجود دارند. به توافق رسیدن همه ی تیم های توسعه دهنده برای پیدا کردن بهترین راه حل برای تعامل این سرویس ها با هم مشکل است.
استفاده از سرویس ها و برنامه های مختلف در یک سازمان ممکن است باعث ایجاد آشفتگی و بی نظمی شود. در ارتباطات نقطه به نقطه سرویسهای سازمان عملکرد در میان سرویسها انتشار مییابد و هیچ روش مرکزی برای نظارت و مدیریت آن وجود ندارد که باعث بروز مشکلات زیادی می شود. این موضوع را اغلب به عنوان کد اسپاگتی می شناسند که باعث ایجاد وابستگی شدید بین سرویسها میشود.هدف از استفاده ی ESB در یک سازمان، کاهش این آشفتگی ها است. در معماری زیر ساخت یک سازمان ESB به عنوان یک واسط بین سرویس ها و سرویس گیرندگان قرار می گیرد و باعث ادغام و یکپارچگی سامانه های مختلف نرم افزاری یک سازمان می شود. در واقع گیرندگان سرویس با یک گذرگاه ارتباطی تعامل می کنند و به جای اینکه درخواست خود را به طور مستقیم به سرویس ارسال کنند، همه ی درخواست ها به ESB فرستاده می شوند و در ESB پس از پردازش محتوای درخواست، فیلتر، تغییر و تبدیل پیام و رویداد نگاری، مسیریابی به سرویس مقصد انجام می شود و پس از دریافت پاسخ آن را در اختیار سرویس گیرنده قرار می دهد. همچنین ESB نقش مدیریت تراکنش ها را نیز به عهده دارد و هماهنگی تراکنش های توزیع شده ای که چند سرویس با آن ها درگیر هستند را انجام می دهد.
افزایش چابکی سازمان،کاهش زمان ورود به بازار، جلوگیری از بروز خطاها، صرفه جوییهای مالی و زمانی یکی از رایج ترین دلایلی است که سازمان ها از ESB در زیر ساخت فناوری اطلاعات سازمان خود استفاده می کنند. همچنین ESB باعث می شود که معماری سازمان منعطف و مقیاس پذیر شود.
پیاده سازی ESB
در واقع در ESB تمرکز اصلی این است که سیستم ها را از یکدیگر جدا کنیم. همچنین به آنها این امکان را میدهد که بدون وابستگی یا شناخت سیستمهای دیگر در گذرگاه با هم ارتباط برقرار کنند. مفهوم گذرگاه برنامه ها را از یکدیگر جدا می کند. این کار معمولاً با استفاده از یک سرور پیام رسانی مانند JMS یا AMQP انجام می شود.داده هایی که در ESB جابجا می شوند دارای فرمت متعارفی هستند و تقریبا همیشه XML هستند.یک سازگار کننده (adaptor) بین برنامه کاربردی و گذرگاه وجود دارد که داده ها را بین دو طرف جمع می کند. این سازگارکننده مسئول مکالمه با برنامه کاربردی و تبدیل داده ها از فرمت برنامه به فرمت گذرگاه است. سازگار کننده همچنین می تواند مجموعه ای از فعالیت های دیگر مانند مدیریت تراکنش مسیریابی پیام، امنیت، نظارت، رسیدگی به خطا و غیره را انجام دهد.
مزایای استفاده از ESB
برخی سازمان ها هنوز از سرویس های قدیمی خود استفاده می کنند که این سرویس های قدیمی برای عملیات شرکت حیاتی هستند. سازمان ها می توانند با استفاده از ESB این سیستم های قدیمی و غیر قابل انعطاف را به شکل استاندارد و مطلوب خود در آورده و به بقیه سرویس ها متصل کنند. گذرگاه خدمات سازمانی به طرز قابل توجهی فرآیند یکپارچهسازی چندین محیط و سیستم ناهمگن را ساده می کند.علاوه بر این موضوع می توان به موارد زیر اشاره کرد:
۱- فراهم کردن یک نقطه دسترسی واحد: از آنجایی که کار یکپارچه سازی در ESB انجام می شود، می توان یک تیم اختصاصی برای ایجاد، مدیریت و عیب یابی یکپارچه سازی سیستم ها روی ESB داشته باشیم. این کار باعث صرفه جویی در زمان و هزینه می شود.
۲- ساده شدن ارتباطات: یک ابزار ESB می تواند چندین پروتکل را در انتقال داده ها از یک برنامه به برنامه ی دیگر مدیریت کند. در واقع می تواند به عنوان یک مترجم سراسری عمل کند و ارتباط بین چندین سیستم که با زبان متفاوت با هم صحبت می کنند را ممکن می سازد. در واقع باعث استاندارد سازی پیام بین خدمات سراسر سازمان می شود.
۳- کمک به توسعه دهندگان: ESB به توسعه دهندگان این امکان را می دهد که یک پیکر بندی ایجاد کنند که می تواند برای هر برنامه ی متصل به گذرگاه سرویس اعمال شود. این مساله به ارتقا سیستم کمک می کند و سرعت اعمال تغییر روی برنامه ها را بهبود می بخشد.
۴- افزایش امنیت: از آنجایی که ESB یک نقطه ی ورودی واحد است، می تواند به عنوان دروازه ای برای پروتکل های امنیتی و صدور مجوز عمل کند و از دسترسی های غیر مجاز به سرویس ها جلوگیری کند.
۵- مقیاس پذیری: از راهکارهای نقطه ای تا استقرار در کل سازمان را در بر می گیرد.
معایب استفاده از ESB
علی رغم آن که ابزارهای ESB روشی قابل اعتماد برای اتصال برنامهها هستند، فناوری آنها با غالب شدن cloud بر اکوسیستمهای دیجیتالی منسوختر میشود و شرکتها نرخ رشدی را تجربه میکنند که به سازگاری سریعتر در سیستمهایشان نیاز دارد. می توان به موارد زیر به عنوان معایب ESB اشاره کرد:
۱- ایجاد bottleneck: از آنجایی که ESB یک سیستم متمرکز از اتصالات است و اغلب توسط یک تیم تخصصی فناوری اطلاعات مدیریت میشود، زمانی که تقاضا برای ارتقاء یا اصلاح برنامهها افزایش مییابد و درخواستهای بیشتری در سیستم ارائه میشود، برخی از تیمها در صف میمانند. این مورد می تواند بهره وری را متوقف کند.
۲- نیاز به توسعه دهندگان با تجربه: در حالی که پیکربندی های کمتری در ESB ها نسبت به سیستم های یکپارچه سازی P2P مورد نیاز است، پیچیدگی موجود در مدیریت طولانی مدت یک ESB می تواند به توسعه دهندگان با تجربه نیاز قابل توجهعی داشته باشد. استفاده از این توسعه دهندگان با تجربه هزینه ی زیادی برای سازمان دارد.
۳- ایجاد مشکل در گذرگاه: از آنجایی که ESB هسته مرکزی سیستم یکپارچه سازی است، در صورتی که با مشکل مواجه شود، برنامه هایی که به آن متصل هستند نیز در سرویس دهی دچار مشکل می شوند.
همچنین در پاسخ به این سوال که ESB برای چه سازمان هایی مناسب است می توان گفت سازمان هایی که در آن ها تعداد سرویس ها زیاد می شود، تعداد زیر مجموعه های داخلی سازمان در حال زیاد شدن است و ارتباط مستمر بین سرویس دهنده و سرویس گیرنده از اهمیت بالایی برخوردار باشد.
همچنین سازمان ها باید این نکته را در نظر داشته باشند که اگر خواهان استفاده ساده تر، ثبات محصول و مالکیت هستند، استفاده از ESB های اختصاصی برای آن ها مناسب تر است اما اگر سهولت نصب و کاهش هزینه فاکتورهای مهمی برای سازمان باشند، انتخاب یک ابزار ESB متن باز پیشنهاد بهتری است .
در واقع ESB های اختصاصی می توانند گران تر از ESB های متن باز باشند و همچنین نصب آنها دشوارتر است. در همین حال، استفاده از ESB های متن باز می تواند برای ادغام در ارائه دهندگان مختلف در یک سناریوی ترکیب و تطبیق مشکل باشند و همچنین به مهارت و زمان بیشتری برای آزمایش و مدیریت نیاز دارند.
از جمله ابزار های مطرح ESB می توان به Oracle ESB، MuleSoft و WSO2 اشاره کرد. در ادامه به بررسی این ابزارها می پردازیم.
ابزار MuleSoft
شرکت MuleSoft یک ابزار متن باز برای ESB ارائه داده است که اطلاعات مربوط به آن از طریق لینک زیر قابل دسترسی است.
از مزایای این ابزار می توان به موارد زیر اشاره کرد:
ابزار WSO2
ابزار مطرح دیگر که ارائه دهنده ی ESB است، WSO2 می باشد. اطلاعات این ابزار در لینک زیر قابل مشاهده است. همچنین در تصویر زی بخشی از محیط این ابزار را مشاهده می کنید.
مزایای این ابزار به شرح زیر است:
ابزار Oracle ESB
یکی دیگر از ابزارهای مربوط به حوزه ی ESB، ابزار ESB است که متعلق به Oracle است که اطلاعات مربوط به ساختار و نحوه ی استفاده از آن در اینجا قابل مشاهده است. تصویر زیر محیط این ابزار را نشان می دهد.
از جمله شرکت های ارائه دهنده ی خدمات ESB در ایران می توان به شرکت داده پرداز پویای شریف اشاره کرد که یک شرکت دانش بنیان است که در زمینه ی ارائه ی راهکارهای جامع تخصصی تحت وب و موبایل فعالیت می کند. طبق گفته ی این شرکت پلتفرم ESB دادهپرداز محصولی دانشبنیان است که تا به امروز در سامانههای بزرگی همچون سامانه فروش بلیط بن ریل، اپلیکیشن خدمت در محل همراه یار، پرتال دولت الکترونیک و ... به کاربرده شده و ویژگی اصلی آن، توانایی برقراری ارتباط با ماکروسرویسهای بزرگ و برقراری جریان امنیت اطلاعات و مدیریت آنهاست.
پلتکو نیز یک شرکت دانش بنیان است که با بهرهگیری از کارشناسان ارشد حوزه معماری زیر ساخت سرویس های سازمانی، خدمات یکپارچه سازی و مدیریت وب سرویس نظیر ESB و API MANAGER و ... ارائه میدهد.
یکی دیگر از شرکت های ارائه دهنده خدمات ESB در ایران شرکت پارس تصمیم است که راه حلها و خدمات مرتبط با فناوری اطلاعات را ارائه می نماید. این شرکت به طور کلی در زمینه ی ارائه راه حل های جامع در حوزه های مدیریت قوانین سازمانی (BRM)، مدیرت منابع سازمانی (ERP)، گذرگاه سرویس سازمانی (ESB) و ... فعالیت می کند.
استفاده از ESB در یک سازمان علی رغم پیچیدگی هایی که می تواند داشته باشد، مفید است. ESB یک ابزار گسترده است که خدمات متفاوتی را ارائه می دهد. استفاده از ESBها رایج هستند و علیرغم برخی اشکالات، برای تسهیل به اشتراک گذاری خدمات و فرآیندها در سراسر یک شرکت و جداسازی خدمات تجاری از اجرای سرویس بسیار مفید هستند. همچنین سازمان ها برای انتخاب یک پلتفرم یکپارچه سازی برای سازمان خود باید به نیاز های خود توجه داشته باشند و مواردی مانند هزینه، امنیت و مقیاس پذیری ابزار را در نظر داشته باشند.
«این مطلب، بخشی از تمرینهای درس معماری نرمافزار در دانشگاه شهیدبهشتی است»
1- https://www.cleo.com/blog/knowledge-base-enterprise-service-bus-esb
2- https://www.interlogica.it/en/insight-en/enterprise-service-bus-what-you-need-to-know/
3- https://www.oreilly.com/library/view/enterprise-service-bus/0596006756/ch01.html
4- http://www.parstasmim.com/راه-حل-جامع-گذرگاه-سرویس-سازمانی/
5- https://dadehpardaz.com/blog/esb/
6- https://platco.ir/services/integration-web-services/enterprise-service-bus/
7- https://www.faragostar.net/what-is-esb/
8- https://www.it.ucla.edu/news/what-esb
9- https://en.wikipedia.org/wiki/Enterprise_service_bus
10- https://www.mulesoft.com/resources/esb/what-esb
11- https://www.ibm.com/cloud/learn/esb
12- https://www.tookasoft.com/products/esb/